TSpinEdit OnKeyPress ruft nicht auf !

Rund um die LCL und andere Komponenten
Antworten
Cocky
Beiträge: 46
Registriert: Sa 15. Nov 2008, 13:17

TSpinEdit OnKeyPress ruft nicht auf !

Beitrag von Cocky »

Guten Tag allerseits :)

naja, der Titel sagts eigentlich schon ... ich hab ein TSpinEdit in mein Formular eingebaut und hatte eigentlich vor, nicht numerische Eingaben abzufangen bzw. zu unterbinden. Denn unsinniger Weise sind ja in einem SpinEdit Buchstabeneingaben etc. möglich. Leider wird die OnKeyPress Ereignisroutine aber nicht aufgerufen. (habs mit nem ShowMessage('keypress') ausgetestet.

Hat jemand eine Ahnung woran es liegt ? oder wie ich sonst irgendwie zum gewünschten Ergebnis komme ??

LG Cocky

pluto
Lazarusforum e. V.
Beiträge: 7192
Registriert: So 19. Nov 2006, 12:06
OS, Lazarus, FPC: Linux Mint 19.3
CPU-Target: AMD
Wohnort: Oldenburg(Oldenburg)

Re: TSpinEdit OnKeyPress ruft nicht auf !

Beitrag von pluto »

Du könntest das Problem umgehen, wenn es eins ist: Stelle im Form wo dein SpinEdit drauf liegt, einfach KeyPre.... auf True. Dann müsste das event onKeyForm von Form1 aufgerufen. Dort kannst du dann eine "Normale" auswertung machen. Aber ich kann mir nicht erklären warum "SpinEdit" auch Buchstaben zulässt. Sollte diese Komponenten eigentlich nicht.

Ich werde es mal nacher, wenn ich zu Hause bin mal ausprobieren. Welches OS nutzt du ? Welche Lazarus Version ? Welche LCL-Schnistelle nutzt ? Welche FPC-Version ? Wurde der BUG schon einmal im Bug-Tracker aufgelistet ?
MFG
Michael Springwald

freeSmokey
Beiträge: 12
Registriert: Mo 9. Mär 2009, 10:54
OS, Lazarus, FPC: Winux (L 0.9.xy FPC 2.2.z)
CPU-Target: xxBit
Wohnort: Hambühren

Re: TSpinEdit OnKeyPress ruft nicht auf !

Beitrag von freeSmokey »

wenn die Buchstaben abgefangen werden sollen dann geb das hier ein :

Code: Alles auswählen

begin
  if (not (key in [ '0'..'9',',','.',#13, #8])) then // #8 ist Backspace
  begin
 
    key := #0;
    exit;
  end;

das ebend als on key press muss doch dann eigentlich funktionieren

Cocky
Beiträge: 46
Registriert: Sa 15. Nov 2008, 13:17

Re: TSpinEdit OnKeyPress ruft nicht auf !

Beitrag von Cocky »

@ Pluto ... ich benutze 0.9.26 SVN 16885 (Windows). Bugtracker hab ich noch nicht geschaut. Nach einigen Experimenten hab ich festgestellt, daß SpinEdit zwar Buchstabeneingaben zuläßt, diese sich aber nicht auf das Ergebnis auswirken. D.h. .Value bleibt davon unbeeinflußt und das Ergebnis bleibt numerisch, sowie innerhalb der min-max Grenzen. Selbst beim Einfügen aus der Zwischenablage. Ich hab mich daher jetzt einfach nicht weiter drum gekümmert. Sieht halt nur recht unschön aus. Andererseits ... wenn der User bei einer offensichtlch auf Zahlen ausgelegten Schnittstelle Buchstaben eingibt ... selbst schuld ;)

@ freeSmokey ... die Auswertung und das Handling, nachdem denn die OnKeyPress Routine aufgerufen wurde ist mir klar. Geht eher darum, daß sie nicht aufgerufen wird - obwohl korrekt vorhanden.

short version *hüstel* ;) :

Code: Alles auswählen

...
begin
  if (not (key in [ '0'..'9',',','.',#13, #8])) then key := #0; // #8 ist Backspace
end;
LG Cocky
Zuletzt geändert von Cocky am Mi 11. Mär 2009, 15:02, insgesamt 2-mal geändert.

freeSmokey
Beiträge: 12
Registriert: Mo 9. Mär 2009, 10:54
OS, Lazarus, FPC: Winux (L 0.9.xy FPC 2.2.z)
CPU-Target: xxBit
Wohnort: Hambühren

Re: TSpinEdit OnKeyPress ruft nicht auf !

Beitrag von freeSmokey »

@cocky ok wieso speichert er denn nicht das was er braucht macht ein neues projekt und schaut ob es dann funzt vielleicht war es einfach ein kleiner fehler

Cocky
Beiträge: 46
Registriert: Sa 15. Nov 2008, 13:17

Re: TSpinEdit OnKeyPress ruft nicht auf !

Beitrag von Cocky »

freeSmokey hat geschrieben:@cocky ok wieso speichert er denn nicht das was er braucht macht ein neues projekt und schaut ob es dann funzt vielleicht war es einfach ein kleiner fehler
@ freeSmokey ... ist sicher nett gemeint. Aber das Projekt hat jetzt ca. 1500 Zeilen Code. Ich wüsste auch nicht was es bringen sollte ein neues Projekt anzulegen.

Danke Dir trotzdem ! :)

LG Cocky

freeSmokey
Beiträge: 12
Registriert: Mo 9. Mär 2009, 10:54
OS, Lazarus, FPC: Winux (L 0.9.xy FPC 2.2.z)
CPU-Target: xxBit
Wohnort: Hambühren

Re: TSpinEdit OnKeyPress ruft nicht auf !

Beitrag von freeSmokey »

gut das geht dann wohl nicht hehehehe alsoo probier doch den on key press nochmal ganz zu löschen und den onkeypress nochmal von ganz vorne einzugeben wenn er dann immer noch nicht angezeigt wird schreib noch mal

pluto
Lazarusforum e. V.
Beiträge: 7192
Registriert: So 19. Nov 2006, 12:06
OS, Lazarus, FPC: Linux Mint 19.3
CPU-Target: AMD
Wohnort: Oldenburg(Oldenburg)

Re: TSpinEdit OnKeyPress ruft nicht auf !

Beitrag von pluto »

Hast du mal onKeyDown versucht ? Komischer weise werden diese Event zwischen GTk1 und GTk2 ab und an anders gehandhabt und somit könnte auch unter Windows ein Unterschied sein. richtig währe gewesen das OnKeyPress aufgerufen müsste. Hast du mal nach geschaut in den Soruce von SpinEdit ?

Ich habe es eben getestet unter Linux mit GTK1 und GTk2 und beides geht, es wird das Event aufgerufen und es werden AUCH nur zahlen zugelassen. Buchstaben und andere Zeichen gehen erst gar nicht. Ich nehme mal an es handelt sich um ein Windows BUG....
MFG
Michael Springwald

freeSmokey
Beiträge: 12
Registriert: Mo 9. Mär 2009, 10:54
OS, Lazarus, FPC: Winux (L 0.9.xy FPC 2.2.z)
CPU-Target: xxBit
Wohnort: Hambühren

Re: TSpinEdit OnKeyPress ruft nicht auf !

Beitrag von freeSmokey »

sttimmt könnte gehen :D

monta
Lazarusforum e. V.
Beiträge: 2809
Registriert: Sa 9. Sep 2006, 18:05
OS, Lazarus, FPC: Linux (L trunk FPC trunk)
CPU-Target: 64Bit
Wohnort: Dresden
Kontaktdaten:

Re: TSpinEdit OnKeyPress ruft nicht auf !

Beitrag von monta »

Muss da evntuell KeyPreview der Form auf True?
Johannes

pluto
Lazarusforum e. V.
Beiträge: 7192
Registriert: So 19. Nov 2006, 12:06
OS, Lazarus, FPC: Linux Mint 19.3
CPU-Target: AMD
Wohnort: Oldenburg(Oldenburg)

Re: TSpinEdit OnKeyPress ruft nicht auf !

Beitrag von pluto »

Muss da evntuell KeyPreview der Form auf True?
Für ein SpinEdit normalerweise nicht... oder meinst du mein Vorschlag ? Wenn ja: Davon habe ich geredet....
MFG
Michael Springwald

Antworten