![]() |
Fokus bleibt bei TUpDown hängen
Hallo,
ich habe in meinem Programm ein seltsames Verhalten: ich habe ein Editfeld, dazu eine TUpDown-Komponente, die dem Editfeld mit Associate zugewiesen ist. Wenn ich nun den (numerischen) Wert im TEdit mit Up oder Down verändere, und direkt danach eine Aktion ausführe, reagiert die TUpDown-Komponente bei jedem Klick auf dem Formular, egal wo. Ich habe hier mal einen Beispielcode, wo ich statt meiner Aktion einfach ein Showmessage aufrufe, um das ganze zu verdeutlichen.
Delphi-Quellcode:
Kann das Verhalten noch jemand nachvollziehen? Oder besser: hat jemand einen Vorschlag, wie ich den mehrfachen Aufruf verhindern kann?
procedure TForm1.UpDown1ChangingEx(Sender: TObject; var AllowChange: Boolean;
NewValue: Smallint; Direction: TUpDownDirection); begin UpDown1.Tag := StrToInt(Edit1.Text); UpDown1.Tag := UpDown1.Tag + NewValue; Edit1.Text := Format('%.7d', [UpDown1.Tag]); ShowMessage('ok'); AllowChange := False; end; Gruß, ernschd |
AW: Fokus bleibt bei TUpDown hängen
Hallo,
ich kann das Verhalten mit deinem Code unter XE2 nachvollziehen. Aber eigentlich willst du ja nur den Inhalt des Edits formatieren. Dazu hätt ich folgenden Code, der in Verbindung mit TUpDown funktioniert: Einfach im OnChange des Edits folgendes einbauen:
Delphi-Quellcode:
Und deinen Code aus dem
procedure TForm3.Edit1Change(Sender: TObject);
var i: Integer; Temp: TNotifyEvent; begin Temp := Edit1.OnChange; Edit1.OnChange := nil; If TryStrToInt(Edit1.Text, i) then begin Edit1.Text := Format('%.7d', [i]); end; Edit1.OnChange := Temp; end;
Delphi-Quellcode:
komplett entfernen!
UpDown1ChangingEx
|
AW: Fokus bleibt bei TUpDown hängen
Hallo,
das funktioniert leider auch nicht wie gewünscht. Ich möchte eine Aktion ausführen, sobald eine 7-stellige Nummer eingeben wurde. In diesem Fall verwende ich statt meiner Aktion zum verdeutlichen ein Showmessage. Auch mit dem Code vom OnChange-Event reagiert die UpDown-Komponente auf jeden Klick auf das Formular. Langsam bin ich ratlos... |
AW: Fokus bleibt bei TUpDown hängen
Problem gelöst
Ich führe im UpDown1ChangingEx nur noch die Formatierung des Editfelds durch. Die Aktion danach starte ich im TUpDownMouseUp-Event. So ist das merkwürdige Verhalten von oben ausgehebelt. Vielleicht hilft meine Lösung jemand weiter. |
Alle Zeitangaben in WEZ +1. Es ist jetzt 02:31 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