Combobox im DBGrid

Rund um die LCL und andere Komponenten
hhf
Beiträge: 4
Registriert: So 18. Jan 2009, 19:18
OS, Lazarus, FPC: Winux (L 0.9.26 FPC 2.2.2)
CPU-Target: 32/64Bit

Re: Combobox im DBGrid

Beitrag von hhf »

piper62 hat geschrieben:ich habs mit der neuen Lazarus Version nicht mehr getestet aber bislang kam ich an den Picklist ItemIndex nicht dran.
Daher habe ich immer eine richtig ComboBox als floating Object über die entsprechende Column gelegt.
Gut ist daran, dass es natürlich mit beliebigen Objekten geht und daher mehr Gestaltungsmöglichkeiten existieren.

Etwas mehr Aufwand gibt es dann bei der Bearbeitung der DB-Events, z.B. OnNewRecord: hier dann den ForeignKey eintragen oder beim Editieren eines Datensatzes.
@piper62: Ich benutze erst seit kurzem Lazarus und komme mit den Begriffen "ComboBox als floating Object" noch nicht so zurecht.
Kannst Du da etwas Beispielcode bereitstellen?
Ich habe nämlich genau das Problem, daß ich ein Feld der (Sqlite3) Datenbank darstellen will und ein anderes Feld (Foreignkey) in die Datenbank geschrieben werden soll.
Ich habe mir schon die Beispiele in den Delphi Foren angeschaut, aber die benutzen eine DBLookupComboBox, die es bei Lazarus ja nicht gibt.

Das Beispiel von khh mit der Picklist sieht mir etwas zu kompliziert aus.

Gruss hhf
Zuletzt geändert von hhf am Mi 21. Jan 2009, 10:21, insgesamt 1-mal geändert.

Christian
Beiträge: 6079
Registriert: Do 21. Sep 2006, 07:51
OS, Lazarus, FPC: iWinux (L 1.x.xy FPC 2.y.z)
CPU-Target: AVR,ARM,x86(-64)
Wohnort: Dessau
Kontaktdaten:

Re: Combobox im DBGrid

Beitrag von Christian »

Es gibt ein InGrid Editor Example mit einer Stringlist in den lazarus examples schau dir das mal an. OnSelectEditor war glaub ich das Ereignis welches man dazu braucht vom DBGrid.
W.m.k.A.h.e.m.F.h. -> http://www.gidf.de/

hhf
Beiträge: 4
Registriert: So 18. Jan 2009, 19:18
OS, Lazarus, FPC: Winux (L 0.9.26 FPC 2.2.2)
CPU-Target: 32/64Bit

Re: Combobox im DBGrid

Beitrag von hhf »

Vielen Dank Christian, aber ich suche was für die ComboBox wie von piper62 beschrieben:
piper62 hat geschrieben:Die Picklist ist solange OK bis man im Vordergrund für den Nutzer andere Daten anzeigen möchte als im Hintergrund in die DB geschrieben werden sollen.
Z.B. bei einer Nachschlagetabelle bei der man in der Zieltabelle nur die Fremdschlüssel Information der Nachschlagetabelle übernehmen möchte.

Für solche Zwecke nehme ich immer eine Combobox die dann über die entsprechende Spalte beim Bearbeiten oder Einfügen eines Datensatzes angezeigt wird.
Falls so etwas gebraucht wird einfach melden, ich müsste dazu mal Beispielcode zusammenstellen.
@piper62: Kannst Du mal etwas Beispielcode bereitstellen? Ich steh da etwas auf dem Schlauch. Ich will 1 Tabelle in einer Form füllen und man soll mit der ComboBox aus einer zweiten Tabelle über den Fremdschlüssel ein Feld auswählen können, wobei hier natürlich der Name und nicht der Fremdschlüssel dargestellt werden soll.
Ich versuche die ComboBox mit einer ReadOnlyQuery ( bin mittlerweile bei Zeos gelandet, da das für SQLite3 das beste sein soll. :?: ) zu füllen aber da wird nur der erste Eintrag angezeigt. Ok da muss ich dann wohl noch eine Schleife einfügen, aber wie bekomme ich das mit dem Fremdschlüssel hin?

Gruss hhf

khh
Beiträge: 489
Registriert: Sa 5. Apr 2008, 09:37
OS, Lazarus, FPC: Win Vista,Win 7 (L 0.9.29 FPC 2.4.1)
CPU-Target: 32Bit /64 Bit
Wohnort: Nähe Freiburg i.Br.

Re: Combobox im DBGrid

Beitrag von khh »

habiba hat geschrieben:
Das Beispiel von khh mit der Picklist sieht mir etwas zu kompliziert aus.

Gruss habiba
Was ist dir daran zu kompliziert?
Das funktioniert wunderbar und du kannst in der Pickliste anzeigen was du möchtest und auslesen was du möchtest.

Gruss KH

hhf
Beiträge: 4
Registriert: So 18. Jan 2009, 19:18
OS, Lazarus, FPC: Winux (L 0.9.26 FPC 2.2.2)
CPU-Target: 32/64Bit

Re: Combobox im DBGrid

Beitrag von hhf »

Das liegt wahrscheinlich daran, dass ich bei der ComboBox bzw. DBComboBox nicht gefunden habe, wie man dort auf die Picklist zugreift. Da gibt es keine Option 'cbsPicklist' die man auswählen kann.
Gibt es bei der ComboBox bzw. DBComboBox überhaupt diese Option oder gilt die nur für DBGrid?
Ich denke sowieso der Beitrag wird hier langsam Offtopic wird und man sollte vielleicht einen neuen Beitrag erstellen, wobei mich der Beispielcode von piper62 schon interessiert hätte (Ich bekomme es jetzt wenigstens hin, den Spalteninhalt in einer ComboBox darzustellen, aber wie ich darauf jetzt auf die zugehörige id zugreifen kann ist mir im Moment noch schleierhaft.

Gruss hhf

khh
Beiträge: 489
Registriert: Sa 5. Apr 2008, 09:37
OS, Lazarus, FPC: Win Vista,Win 7 (L 0.9.29 FPC 2.4.1)
CPU-Target: 32Bit /64 Bit
Wohnort: Nähe Freiburg i.Br.

Re: Combobox im DBGrid

Beitrag von khh »

habiba hat geschrieben:Das liegt wahrscheinlich daran, dass ich bei der ComboBox bzw. DBComboBox nicht gefunden habe, wie man dort auf die Picklist zugreift. Da gibt es keine Option 'cbsPicklist' die man auswählen kann.
Gibt es bei der ComboBox bzw. DBComboBox überhaupt diese Option oder gilt die nur für DBGrid?
Ich denke sowieso der Beitrag wird hier langsam Offtopic wird und man sollte vielleicht einen neuen Beitrag erstellen, wobei mich der Beispielcode von piper62 schon interessiert hätte (Ich bekomme es jetzt wenigstens hin, den Spalteninhalt in einer ComboBox darzustellen, aber wie ich darauf jetzt auf die zugehörige id zugreifen kann ist mir im Moment noch schleierhaft.

Gruss hhf
naja das sind ja auch 2 paar Stiefel.
Entweder Combobox oder Picklist.

Gruss KH

mse
Beiträge: 2013
Registriert: Do 16. Okt 2008, 10:22
OS, Lazarus, FPC: Linux,Windows,FreeBSD,(MSEide+MSEgui 4.6,git master FPC 3.0.4,fixes_3_0)
CPU-Target: x86,x64,ARM

Re: Combobox im DBGrid

Beitrag von mse »

habiba hat geschrieben:Ich bekomme es jetzt wenigstens hin, den Spalteninhalt in einer ComboBox darzustellen, aber wie ich darauf jetzt auf die zugehörige id zugreifen kann ist mir im Moment noch schleierhaft.
Alternative oder Inspiration:
http://www.lazarusforum.de/viewtopic.php?f=53&t=2362

Da würde man ein tdbenumeditdb oder für sehr schnellen Zugriff mittels Lookup-Buffer ein tdbenumeditlb ins twidgetgrid einsetzen.

piper62
Beiträge: 131
Registriert: Sa 5. Apr 2008, 17:57
OS, Lazarus, FPC: Linux (Debian, Xubuntu), MacOS X, MS Win, Android, Web
CPU-Target: 32Bit/64Bit
Wohnort: Ulm

Re: Combobox im DBGrid

Beitrag von piper62 »

Sorry für die Verzögerung.
Musste erst einmal ein kleines Beispielprojekt fertig machen.

In dem Beispielprojekt ist auch eine kleine PDF Datei in der das Nötigste beschrieben ist.
Bei Fragen wieder melden.

Gruss,
Piper
Dateianhänge
dbgrid_test.zip
(39.6 KiB) 144-mal heruntergeladen

hhf
Beiträge: 4
Registriert: So 18. Jan 2009, 19:18
OS, Lazarus, FPC: Winux (L 0.9.26 FPC 2.2.2)
CPU-Target: 32/64Bit

Re: Combobox im DBGrid

Beitrag von hhf »

Vielen Dank Piper für das tolle Beispielprojekt.
Das hat mir mehr geholfen, als alle DB-Tutorials die es für Lazarus/Delphi gibt. Da es die DBLookupComboBox bei Lazarus nicht gibt, war es mir nicht klar wie ich auf den DB-Index der Auswahl zugreifen kann.
Das ist mir jetzt klargeworden. :D

Gruss hhf

piper62
Beiträge: 131
Registriert: Sa 5. Apr 2008, 17:57
OS, Lazarus, FPC: Linux (Debian, Xubuntu), MacOS X, MS Win, Android, Web
CPU-Target: 32Bit/64Bit
Wohnort: Ulm

Re: Combobox im DBGrid

Beitrag von piper62 »

Das freut mich!

Dazu ist so ein Forum ja da.
Bei weiteren Fragen wieder melden.

Gruss,
Piper

Antworten