Zugriff auf Editor Text im DBGrid
-
- 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
Zugriff auf Editor Text im DBGrid
Ich möchte gerne auf den Text im Editor des DBGrids zugreifen. Und zwar während des Editierens.
Ein Zugriff auf die DBGrid Zelle oder auch auf das Feld der Datebank funktionieren nicht da der Buffer des Editors noch nicht als Update an die DB weitergereicht wurde.
Ablauf ist also:
-Über das DBGrid wird die Datenquelle z.B. in dsInsert Modus gesetzt. Das hat zur Folge, dass im Feld des DBGrids, wenn nun Etwas eingegeben wird, der Editor des DBGrids aktiviert wird.
-aus diesem möchte ich nun auf den gerade eingegebenen Text zugreifen.
Weiss da Jemand Rat?
Ein Zugriff auf die DBGrid Zelle oder auch auf das Feld der Datebank funktionieren nicht da der Buffer des Editors noch nicht als Update an die DB weitergereicht wurde.
Ablauf ist also:
-Über das DBGrid wird die Datenquelle z.B. in dsInsert Modus gesetzt. Das hat zur Folge, dass im Feld des DBGrids, wenn nun Etwas eingegeben wird, der Editor des DBGrids aktiviert wird.
-aus diesem möchte ich nun auf den gerade eingegebenen Text zugreifen.
Weiss da Jemand Rat?
-
- 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: Zugriff auf Editor Text im DBGrid
Nutz einen eigenen Editor.
Event dazu ist OnSelectEditor.
In den Demos findest du ein Beispiel.
Event dazu ist OnSelectEditor.
In den Demos findest du ein Beispiel.
W.m.k.A.h.e.m.F.h. -> http://www.gidf.de/
-
- 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: Zugriff auf Editor Text im DBGrid
das wollte ich ja gerade umgehen...
eine lösung ohne das selbst zu machen weisst Du dann auch nicht?!
eine lösung ohne das selbst zu machen weisst Du dann auch nicht?!
-
- 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: Zugriff auf Editor Text im DBGrid
Gibt ja noch EditorKeyPress,KeyUp,KeyDown kannst dir den text sicher auch selbst merken.
Vllt bekommt man über EditorByStyle auch den aktuellen Editor raus und kann direkt auf dessen text property zugreifen.
Vllt bekommt man über EditorByStyle auch den aktuellen Editor raus und kann direkt auf dessen text property zugreifen.
W.m.k.A.h.e.m.F.h. -> http://www.gidf.de/
-
- 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: Zugriff auf Editor Text im DBGrid
danke erst mal.
ich denke ich weiss nun wie ich es mache.
werde wieder berichten...
ich denke ich weiss nun wie ich es mache.
werde wieder berichten...
-
- 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: Zugriff auf Editor Text im DBGrid
so, hab's nun gelöst.
Die Idee war abhängig von der Länge des eingetragenen Textes einen "Umbruch" in dem DBGrid zu machen damit die Anwender einfacher längeren Text eingeben können.
Musste erstmal rauskriegen, dass der Editor "TStringCellEditor" heisst. Bei Delphi hiess das noch anders.
Vielleicht kann das ja noch Jemand mal gebrauchen...
Die Idee war abhängig von der Länge des eingetragenen Textes einen "Umbruch" in dem DBGrid zu machen damit die Anwender einfacher längeren Text eingeben können.
Musste erstmal rauskriegen, dass der Editor "TStringCellEditor" heisst. Bei Delphi hiess das noch anders.
Vielleicht kann das ja noch Jemand mal gebrauchen...
Code: Alles auswählen
procedure TForm1.DBEdit1KeyDown(Sender: TObject; var Key: Word;
Shift: TShiftState);
begin
if (key=32) and (Datasource1.DataSet.State in [dsEdit,dsInsert]) then
begin
if DBGrid1.ControlCount>0 then
begin
if (DBGrid1.Controls[0] is TStringCellEditor) then
begin
if length((DBGrid1.Controls[0] as TStringCellEditor).Text)>20 then
begin
Dbf1.Post;
Dbf1.Append;
end;
end;
end;
end;
end;
-
- 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: Zugriff auf Editor Text im DBGrid
ware es nicht sinvoller dort ein memo zu verwenden ?
damit kann der Anwender es so formatieren bzw zeilenumbrüche machen wo er will und man muss nicht so oft einen post machen der
unter umständen recht lange dauern kann.
von tdbf in produktivumgebungen würde ich dringends abraten.
damit kann der Anwender es so formatieren bzw zeilenumbrüche machen wo er will und man muss nicht so oft einen post machen der
unter umständen recht lange dauern kann.
von tdbf in produktivumgebungen würde ich dringends abraten.
W.m.k.A.h.e.m.F.h. -> http://www.gidf.de/
-
- 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: Zugriff auf Editor Text im DBGrid
Natürlich ginge auch ein Memo. Da ist nur sehr viel Funktionalität in der realen Anwendung bei der Dokumentation verdrahtet.
Ich wollte das Ganze prinzipiell lösen.
Ich habe schon mit einem Memo getestet (beide Varianten: als Editor und bei OnDrawCell eingehängt). Man sieht nur im Grid eben nicht mehr als die eine Zeile, die man ja auch abschneiden muss wenn es sich um ein BLOB bzw. bei MySQL um ein TEXT Feld handelt. Da müssten auch noch die Records und eben NUR diese in der Zeilenhöhe angepasst werden wenn dort mehr als eine Zeile drinsteht.
Ach ja, der Charme ist ja gerade, dass der Anwender keinen Post mehr machen muss. Er schreibt einfach weiter!
Dazu kommt noch die Problematik mit der Vielfalt der Funktionen, die ich ohnehin schon beim Key-Event abfange.
Schaue ich mir noch an.
Und Christian, danke für den Tipp wegen der Datenbank...
- wäre ich nicht drauf gekommen...
Ich wollte das Ganze prinzipiell lösen.
Ich habe schon mit einem Memo getestet (beide Varianten: als Editor und bei OnDrawCell eingehängt). Man sieht nur im Grid eben nicht mehr als die eine Zeile, die man ja auch abschneiden muss wenn es sich um ein BLOB bzw. bei MySQL um ein TEXT Feld handelt. Da müssten auch noch die Records und eben NUR diese in der Zeilenhöhe angepasst werden wenn dort mehr als eine Zeile drinsteht.
Ach ja, der Charme ist ja gerade, dass der Anwender keinen Post mehr machen muss. Er schreibt einfach weiter!
Dazu kommt noch die Problematik mit der Vielfalt der Funktionen, die ich ohnehin schon beim Key-Event abfange.
Schaue ich mir noch an.
Und Christian, danke für den Tipp wegen der Datenbank...

- wäre ich nicht drauf gekommen...
-
- 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: Zugriff auf Editor Text im DBGrid
Also falls das jetzt sarkastisch gemeint war, ich bin anfangs davon ausgegangen das es funktioniert. Hat es auch lange zeit als es aber dann wirklich mal viele Daten wurden hats mir die Tabellen zerlegt und zwar unreparabel.Und Christian, danke für den Tipp wegen der Datenbank...
- wäre ich nicht drauf gekommen...
W.m.k.A.h.e.m.F.h. -> http://www.gidf.de/
-
- 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: Zugriff auf Editor Text im DBGrid
Na ja, Du hast ja mitbekommen was ich bzw. wir machen.
Wir würden nie DBF oder andere Formate (.MDB) etc in produktiven Umgebungen einsetzen.
Das letzte Mal als ich DBF real eingesetzt habe ist gut 12 Jahre her.
Grüße,
Piper
Wir würden nie DBF oder andere Formate (.MDB) etc in produktiven Umgebungen einsetzen.
Das letzte Mal als ich DBF real eingesetzt habe ist gut 12 Jahre her.
Grüße,
Piper