[GELÖST] DBGrid - Key-Eingaben validieren mit OnKeyPress

Rund um die LCL und andere Komponenten
Antworten
Benutzeravatar
Zvoni
Beiträge: 611
Registriert: Fr 5. Jul 2024, 08:26
OS, Lazarus, FPC: Windoof 10 Pro (Laz/FPC fixes)
CPU-Target: 64Bit
Wohnort: BW

[GELÖST] DBGrid - Key-Eingaben validieren mit OnKeyPress

Beitrag von Zvoni »

Mahlzeit

Frage: Gibt es im DBGrid irgendeine Möglichkeit herauszufinden, welche Spalte zur Zeit aktiv den Editor hat?

Hintergrund: Ich hab ein DBGrid mit mehreren Spalten, und will für eine spezielle Spalte ein OnKeyPress-Event implementieren (Im Prinzip ein "NumbersOnly" aber nur für diese Spalte).

im DBGrid.OnKeyPress-Event bekomme ich Sender As TObject, welches wohl das DBGrid selbst ist.
Wie komme ich aber an die Spalte, welche gerade den Fokus bzw. den Editor aktiv hat?
Zuletzt geändert von Zvoni am Mo 23. Mär 2026, 13:53, insgesamt 1-mal geändert.
Ein System sie alle zu knechten, ein Code sie alle zu finden,
Eine IDE sie ins Dunkel zu treiben, und an das Framework ewig zu binden,
Im Lande Redmond, wo die Windows drohn.

Benutzeravatar
theo
Beiträge: 11241
Registriert: Mo 11. Sep 2006, 19:01

Re: DBGrid - Key-Eingaben validieren mit OnKeyPress

Beitrag von theo »

Ich verstehe dein Szenario nicht wirklich, aber OnSelectEditor klingt doch nicht schlecht.
ACol kann man dann in einer Variablen speichern.

Benutzeravatar
Zvoni
Beiträge: 611
Registriert: Fr 5. Jul 2024, 08:26
OS, Lazarus, FPC: Windoof 10 Pro (Laz/FPC fixes)
CPU-Target: 64Bit
Wohnort: BW

Re: DBGrid - Key-Eingaben validieren mit OnKeyPress

Beitrag von Zvoni »

theo hat geschrieben: Mo 23. Mär 2026, 13:32 Ich verstehe dein Szenario nicht wirklich, aber OnSelectEditor klingt doch nicht schlecht.
ACol kann man dann in einer Variablen speichern.
Jepp. Hatte ich in der Zwischenzeit auch gefunden.
Dort kann ich dann ein simples

Code: Alles auswählen

If Column.Index=3 Then Editor.OnKeyPress:=@OnFuelChargeKeyPress;    
Und meine OnFuelChargeKeyPress feuert bei Tastendruck.

Ich habe ein mehrspaltiges DBGrid (Spalten fest definiert, nicht dynamisch).
Wenn der User jetzt einen neuen Satz anlegt/einen bestehenden Satz editiert, will ich für die dritte Spalte (Index=2), quasi ein "NumbersOnly" haben:
Er soll gar nicht in der Lage sein irgendwas anderes als von mir festgelegte Keys eingeben zu können.

Problem: Es ist ein "NumbersOnly" kombiniert mit "EinDezimalTrennzeichen", und zwar genau eins!
Und dazu muss ich an den bereits eingebenen Text herankommen.

Jetzt muss ich meiner eigenen Prozedur nur noch beibringen, wie sie das "Sender" auslesen kann, damit ich an den "Text" herankomme.

ein (Sender As TEdit).Text knallt, wahrscheinlich weil "Editor" (und somit Sender) vom Typ TWinControl ist, was keine "Text"-Eigenschaft hat.
Ein System sie alle zu knechten, ein Code sie alle zu finden,
Eine IDE sie ins Dunkel zu treiben, und an das Framework ewig zu binden,
Im Lande Redmond, wo die Windows drohn.

Benutzeravatar
Zvoni
Beiträge: 611
Registriert: Fr 5. Jul 2024, 08:26
OS, Lazarus, FPC: Windoof 10 Pro (Laz/FPC fixes)
CPU-Target: 64Bit
Wohnort: BW

Re: DBGrid - Key-Eingaben validieren mit OnKeyPress

Beitrag von Zvoni »

OK, Fortschritt.

Sender ist ein TStringCellEditor, welches eine EditText-Eigenschaft hat

Gelöst
Ein System sie alle zu knechten, ein Code sie alle zu finden,
Eine IDE sie ins Dunkel zu treiben, und an das Framework ewig zu binden,
Im Lande Redmond, wo die Windows drohn.

Antworten