Zugriff auf Editor Text im DBGrid

Für Themen zu Datenbanken und Zugriff auf diese. Auch für Datenbankkomponenten.
Antworten
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

Zugriff auf Editor Text im DBGrid

Beitrag von piper62 »

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?

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: Zugriff auf Editor Text im DBGrid

Beitrag von Christian »

Nutz einen eigenen Editor.
Event dazu ist OnSelectEditor.
In den Demos findest du ein Beispiel.
W.m.k.A.h.e.m.F.h. -> http://www.gidf.de/

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: Zugriff auf Editor Text im DBGrid

Beitrag von piper62 »

das wollte ich ja gerade umgehen...
eine lösung ohne das selbst zu machen weisst Du dann auch nicht?!

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: Zugriff auf Editor Text im DBGrid

Beitrag von Christian »

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.
W.m.k.A.h.e.m.F.h. -> http://www.gidf.de/

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: Zugriff auf Editor Text im DBGrid

Beitrag von piper62 »

danke erst mal.
ich denke ich weiss nun wie ich es mache.
werde wieder berichten...

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: Zugriff auf Editor Text im DBGrid

Beitrag von piper62 »

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...

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;

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: Zugriff auf Editor Text im DBGrid

Beitrag von Christian »

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.
W.m.k.A.h.e.m.F.h. -> http://www.gidf.de/

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: Zugriff auf Editor Text im DBGrid

Beitrag von piper62 »

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...

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: Zugriff auf Editor Text im DBGrid

Beitrag von Christian »

Und Christian, danke für den Tipp wegen der Datenbank... ;-)
- wäre ich nicht drauf gekommen...
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.
W.m.k.A.h.e.m.F.h. -> http://www.gidf.de/

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: Zugriff auf Editor Text im DBGrid

Beitrag von piper62 »

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

Antworten