Discussion:
TEdit.Text Onchange
(zu alt für eine Antwort)
Jens Köhler
2018-04-23 15:34:52 UTC
Permalink
Hallo Leute,

ich habe ein Problem.

Wenn ich in ein TEdit Text eintippe wird Onchange gefeuert.

Wie mache ich es, wenn ich auch eine Benachrichtigung haben möchte,
wenn TEdit.Text im Programm gesetzt wird?

TEdit.Text := 'sonstwas';

Jens
Christian Schmitt
2018-04-23 16:41:06 UTC
Permalink
Post by Jens Köhler
Wie mache ich es, wenn ich auch eine Benachrichtigung haben möchte,
wenn TEdit.Text im Programm gesetzt wird?
TEdit.Text := 'sonstwas';
Mir fällt dazu spontan nur eine eigene Komponente, von TEdit abgeleitet ein. Da könntest du dir selbst in der Prozedur SetText das Event feuern?!

Gruß
Peter Below
2018-04-24 06:01:46 UTC
Permalink
Post by Jens Köhler
Hallo Leute,
ich habe ein Problem.
Wenn ich in ein TEdit Text eintippe wird Onchange gefeuert.
Wie mache ich es, wenn ich auch eine Benachrichtigung haben möchte,
wenn TEdit.Text im Programm gesetzt wird?
TEdit.Text := 'sonstwas';
Ruf einfach den Handler deS OnChange-Events direkt auf.
--
Peter Below
TeamB
Matthias Hanft
2018-04-24 07:38:18 UTC
Permalink
Post by Peter Below
Ruf einfach den Handler deS OnChange-Events direkt auf.
...und erst mal prüfen, ob das nicht eh schon passiert (ich hab da
dunkel was in Erinnerung, dass ich die ganzen Events vor einem
programmgesteuerten Ändern eines Controls erst mal auf nil setzen
muss, um keine Rekursion zu produzieren).

Gruß Matthias.
Jens Köhler
2018-04-24 13:21:21 UTC
Permalink
....und erst mal prüfen, ob das nicht eh schon passiert
Gruß Matthias.
Es passiert. Aber das war auch mein erster Versuch. Und in meinem
Programm ging es nicht. Jetzt mit einem neuen Projekt noch mal versucht
geht es. Da muß ich mich erst mal auf die Suche machen, wie es mir
gelungen ist, das zu versauen :-)

Jens

Hans-Peter Diettrich
2018-04-24 08:39:07 UTC
Permalink
Post by Jens Köhler
Wenn ich in ein TEdit Text eintippe wird Onchange gefeuert.
Wie mache ich es, wenn ich auch eine Benachrichtigung haben möchte,
wenn TEdit.Text im Programm gesetzt wird?
TEdit.Text := 'sonstwas';
AFAIR muß man sich dafür in SetText() oder den WM_SETTEXT Handler
einklinken. Bei programmierter Änderung dürfte WM_SETTEXT umgangen
werden, und stattdessen direkt SetText() aufgerufen werden. Für Details
mußt Du Dir die VCL anschauen, das Verfahren kann sich von Version zu
Version ändern. Lazarus macht es dann sicher nochmal anders ;-)

DoDi
Loading...