Forum: GUI-Design mit VCL / FireMonkey / Common Controls
Delphi
by SirThornberry,
23. Jul 2007
Die Timermessage würde dann hinten in der Messagequeue angestellt werden. Allerding hättest du bei hängen des Programmes den Nachteil das mehrere Timermessages anstehen und somit nach dem abschalten des Timers im OnTimer trotzdem noch weitere male das OnTimer-Event ausgeführt werden könnte.
Forum: GUI-Design mit VCL / FireMonkey / Common Controls
Delphi
by SirThornberry,
23. Jul 2007
der Ausschlag gebende Punkt bei der Lösung ist, das die Rückänderung nicht im OnChange erfolgt sondern danach. Und das kann man über einen Timer oder über PostMessage erreichen sofern keine weiteren Messages der Messagequeue im OnChange abgearbeitet werden.
Forum: GUI-Design mit VCL / FireMonkey / Common Controls
Delphi
by SirThornberry,
23. Jul 2007
und bei PostMessage muss man aufpassen das der Buffer keine lokale Variable ist und nur auf dem Stack liegt.
Forum: GUI-Design mit VCL / FireMonkey / Common Controls
Delphi
by SirThornberry,
23. Jul 2007
ich hab eine Lösung:
procedure ResetCMB(var AMsg: TMessage); message wm_user + 1;
procedure TForm1.ResetCMB(var AMsg: TMessage);
begin
ComboBox1.ItemIndex := -1;
ComboBox1.Text := 'nicht gültig';
end;
Forum: GUI-Design mit VCL / FireMonkey / Common Controls
Delphi
by SirThornberry,
23. Jul 2007
Das einfachste ist das Event "abzuschalten" wenn man nicht will das es ausgelöst wird
var
lOnChange: TNotifyEvent;
begin
lOnChange := Combobox.OnChange;
Combobox.OnChange := nil;
//Do Anything
Combobox.OnChange := lOnChange;