Combobox im DBGrid
-
- 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.
Combobox im DBGrid
hallo zusammen,
gibts so was wie ne Combobox im DBgrid , die als Nachschlagefeld verwendet werden kann.
Die Suche im Netz bringt zwar einige Artikel, aber ich hab bis jetzt noch keine braucbare Lösung gefunden.
Danke Gruss KH
gibts so was wie ne Combobox im DBgrid , die als Nachschlagefeld verwendet werden kann.
Die Suche im Netz bringt zwar einige Artikel, aber ich hab bis jetzt noch keine braucbare Lösung gefunden.
Danke Gruss KH
Re: Combobox im DBGrid
Könnte prinzipiell schon klappen.
Grundsätzlich etwa so:
Da musst du aber einiges noch "zu Fuss" weiter programmieren.
EDIT: Nö, sorry, Beispiel ist von einem TStringGrid abgeleitet, mit TDBGrid kenne ich mich nicht aus.
Grundsätzlich etwa so:
Code: Alles auswählen
procedure TForm1.DBGrid1SelectEditor(Sender: TObject; Column: TColumn;
var Editor: TWinControl);
var R:TRect;
begin
R := StringGrid1.CellRect(DBGrid1.Col, DBGrid1.Row);
Editor:=ComboBox1;
Editor.Show;
Editor.SetBounds(R.Left,R.Top,R.Right-R.Left,R.Bottom-R.Top);
end;
EDIT: Nö, sorry, Beispiel ist von einem TStringGrid abgeleitet, mit TDBGrid kenne ich mich nicht aus.
-
- 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
ich danke dir,theo hat geschrieben:Könnte prinzipiell schon klappen.
Grundsätzlich etwa so:
Da musst du aber einiges noch "zu Fuss" weiter programmieren.Code: Alles auswählen
procedure TForm1.DBGrid1SelectEditor(Sender: TObject; Column: TColumn; var Editor: TWinControl); var R:TRect; begin R := StringGrid1.CellRect(DBGrid1.Col, DBGrid1.Row); Editor:=ComboBox1; Editor.Show; Editor.SetBounds(R.Left,R.Top,R.Right-R.Left,R.Bottom-R.Top); end;
EDIT: Nö, sorry, Beispiel ist von einem TStringGrid abgeleitet, mit TDBGrid kenne ich mich nicht aus.
ich werds mit einem dbgrid versuchen, notfalls nehm ich eben ein stringgrid und bestücke es _von hand_
Gruss KH
Re: Combobox im DBGrid
Wenn du's sowieso "von Hand" machen willst, gibt es auch noch den Virtual Treeview.
Damit kann man so ziemlich alles machen. Benötigt aber etwas Einarbeitung.
Demo Bilder:
http://www.soft-gems.net/index.php?opti ... &Itemid=33" onclick="window.open(this.href);return false;
Download für Lazarus:
http://www.lazarusforum.de/viewtopic.php?p=24598#p24598" onclick="window.open(this.href);return false;
Damit kann man so ziemlich alles machen. Benötigt aber etwas Einarbeitung.
Demo Bilder:
http://www.soft-gems.net/index.php?opti ... &Itemid=33" onclick="window.open(this.href);return false;
Download für Lazarus:
http://www.lazarusforum.de/viewtopic.php?p=24598#p24598" onclick="window.open(this.href);return false;
-
- 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
ich danke dir, werd ich mir anschauen.theo hat geschrieben:Wenn du's sowieso "von Hand" machen willst, gibt es auch noch den Virtual Treeview.
Damit kann man so ziemlich alles machen. Benötigt aber etwas Einarbeitung.
Demo Bilder:
http://www.soft-gems.net/index.php?opti ... &Itemid=33" onclick="window.open(this.href);return false;
Download für Lazarus:
http://www.lazarusforum.de/viewtopic.php?p=24598#p24598" onclick="window.open(this.href);return false;
Gruss KH
-
- 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
Wiso macht ihr euch das leben so schwer, jedes Column vom DBGrid hat ne Picklist wenn da werte drin stehn zeigt das dbGrid von sich aus schon ne combobox als inplace Editor an.
W.m.k.A.h.e.m.F.h. -> http://www.gidf.de/
Re: Combobox im DBGrid
GenialChristian hat geschrieben:Jedes Column vom DBGrid hat ne Picklist wenn da werte drin stehn zeigt das dbGrid von sich aus schon ne combobox als inplace Editor an.

-
- 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
so was hab ich gesucht, ich dachte das funkt nur mit DelphiChristian hat geschrieben:Wiso macht ihr euch das leben so schwer, jedes Column vom DBGrid hat ne Picklist wenn da werte drin stehn zeigt das dbGrid von sich aus schon ne combobox als inplace Editor an.

EDIT: wie komme ich an die Picklist ran, mein Grid wird zur Laufzeit erzeugt.
Danke euch
Gruss KH
-
- 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
for i := 0 to ComumnCount-1 do if Column[i.FieldName = 'MEINFELDNAME' then Column.Picklist.Add('Blähungen');
W.m.k.A.h.e.m.F.h. -> http://www.gidf.de/
-
- 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
ich danke euch
der Kompiler nimmt es widerstandslos
,
aber leider passiert nix beim Klick aufs Grid
ich habe :
self.Columns[0].ButtonStyle := cbsPicklist; und:
self.ScrollBars:= ssAutoBoth;
self.options:= [dgEditing,dgTitles,dgRowSelect]; gesetzt aber eine Bearbeitung im Grid ist nicht möglich
Welche Schalter müssen noch gesetzt werden?
Gruss KH
der Kompiler nimmt es widerstandslos

aber leider passiert nix beim Klick aufs Grid

ich habe :
self.Columns[0].ButtonStyle := cbsPicklist; und:
self.ScrollBars:= ssAutoBoth;
self.options:= [dgEditing,dgTitles,dgRowSelect]; gesetzt aber eine Bearbeitung im Grid ist nicht möglich
Welche Schalter müssen noch gesetzt werden?
Gruss KH
-
- 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
Es müssen Einträge in der Picklist vorhanden sein
W.m.k.A.h.e.m.F.h. -> http://www.gidf.de/
-
- 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
habs jetzt hinbekommen, vielen Dank.Christian hat geschrieben:Es müssen Einträge in der Picklist vorhanden sein
Gruss KH
-
- 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
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.
Gruss
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.
Gruss
-
- 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
genau dies soll der Zweck sein.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.
Gruss
ich habe das jetzt mal so umgesetzt, indem ich eine Klasse Kundenliste erstelle und in einer Schleife einlese.
self.Columns[0].PickList.AddObject(Tkunde(Fkundenlist.items).Firma, Tkunde(Fkundenlist.items));
Bin aber gerne für andere Lösungen empfänglich.
Gruss KH
-
- 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
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.
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.