Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   GUI-Design mit VCL / FireMonkey / Common Controls (https://www.delphipraxis.net/18-gui-design-mit-vcl-firemonkey-common-controls/)
-   -   Delphi DBGrid Ereignis nach drücken von Enter. (https://www.delphipraxis.net/123091-dbgrid-ereignis-nach-druecken-von-enter.html)

Borschti 27. Okt 2008 15:15


DBGrid Ereignis nach drücken von Enter.
 
Hallo,

Ich suche ein Ereignis für mein DBGrid welches ausgelößt wird nachdem ich in eine Zelle etwas eingetragen und Enter gedrückt habe.

Ich habe schon zich Sachen ausprobiert aber keines erzielte das gewünschte Ergebnis, nur nahe dran wie z.B. OnColExit etc.

Sorry falls ich im falschen Bereich schreibe, war mir nicht ganz sicher :)

Schonmal danke für eure Antworten.

mfg
Alex

DeddyH 27. Okt 2008 15:21

Re: DBGrid Ereignis nach drücken von Enter.
 
Wenn ich das richtig verstanden habe, musst Du auf AfterPost von TDataset reagieren.

Borschti 27. Okt 2008 15:40

Re: DBGrid Ereignis nach drücken von Enter.
 
Hmm nein, das funktioniert leider nich, also ich habe mir das so gedacht das ich den post auf die Datenbank mache sobald die Entertaste gedrückt wurde, also die Eingabe für die Zelle abgeschlossen wurde, mache.
Den "post" mache ich zZ. sowieso mit einem SQL-Update aber es fehlt nunmal das richtige Ereignis :(

nahpets 27. Okt 2008 15:56

Re: DBGrid Ereignis nach drücken von Enter.
 
Hallo,

das könnte Dein Kandidat sein:
Delphi-Quellcode:
procedure TForm1.DBGrid1KeyPress(Sender: TObject; var Key: Char);
Wenn Key = #13, dann wurde Enter gedrückt.

Naja, was willst Du denn machen? Hier weißt Du ggfls. dass Enter gedrückt wurde, aber Du weißt nicht wo.

Wenn ich das richtig sehe, schaltet Enter zwischen bearbeiten und nichtbearbeiten einer Zelle um. An den Datensatz müsstest Du damit kommen. Fragt sich jetzt nur noch, welche Spalte bearbeitet wurde oder werden soll.

Für Deine Aufgabenstellung dürfte es aber reichen.
Delphi-Quellcode:
procedure TForm1.DBGrid1KeyPress(Sender: TObject; var Key: Char);
begin
  Case key of
    #13 : DBGrid1.DataSource.DataSet.Post; // Naja, hier nicht abfragen, ob Edit oder Insert ...
  end;
end;

Borschti 28. Okt 2008 14:44

Re: DBGrid Ereignis nach drücken von Enter.
 
Hmm klappt leider auch nicht :( er startet das Event nur nachdem ich die Eingabe schon abgeschlossen habe, also ich einmal Enter gedrückt habe und danach einfach nochmal in dem DBGrid Enter drücke ohne eine Zelle "offen" zu haben.

Hat vielleicht sonst noch jemand Vorschläge?

mfg
Alex

Borschti 31. Okt 2008 07:30

Re: DBGrid Ereignis nach drücken von Enter.
 
Ich habs rausgefunden :D man muss das AfterFieldChange Ereignis der Query benutzen, allerdings muss man aufpassen das man in dem Ereignis direkt nicht die Felder mit Query.FieldByName() := ... verändert weil man sich sonst in einer Endlosschleife befindet und einen Stack Overflow bekommt ;)

Vielleicht kann der Thread ja mal jemandem helfen.

mfg
Alex

alzaimar 31. Okt 2008 07:35

Re: DBGrid Ereignis nach drücken von Enter.
 
Ich mach das so: ich setze 'Form.KeyPreview := true' und schaue dann im Form.OnKeyDown, wer gerade den Fokus hat.


Alle Zeitangaben in WEZ +1. Es ist jetzt 05:45 Uhr.

Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz