![]() |
Letztes Sender-Object merken u. Action manuell aufrufen
Hallo Forum,
folgendes Situation: Ich habe mehrere Objekte (Edit-Felder), die alle eine onChange-Funktion ausführen. Klappt auch prima. Jetzt möchte ich folgendes Erreichen: Das Objekt, welches zuletzt ein onChange ausgeführt hat, soll gemerkt werden und die dazugehörige onChange-Methode von einem anderen Programmteil aus ausgeführt werden. Ich habe bereits eine Variable als TObject definiert, mit welchen ich mir den Sender merken kann, aber ich bekomme es irgendwie nicht hin, daß davon dann die onChange aufgerufen wird. Hier mal im Groben ein zusammengefaßter Quellcode
Code:
Ich hab schon mit diversen ExecuteAction-Konstrukten herum experimentiert, aber wie schon gesagt, ich bekomme es irgendwie nicht hin. Hat jemand einen Rat für mich?
// ...
var last_change: TObject; // ... procedure TForm1.Edit1Change(Sender: TObject); begin last_change := Sender; // do something ... end; procedure TForm1.Edit2Change(Sender: TObject); begin last_change := Sender; // do something ... end; procedure TForm1.Edit3Change(Sender: TObject); begin last_change := Sender; // do something ... end; // ... procedure TForm1.ButtonClick(Sender: TObject; Button: TUDBtnType); begin // do something ... // !!!!!!!!!!!!!!!!!!!!! // Hier soll die Change-Methode des Objektes 'last_change' // zur Aktualisiserung aufgerufen werden // !!!!!!!!!!!!!!!!!!!!! end; // ... Vielen lieben Dank im Vorraus |
Re: Letzes Sender-Object merken u. Action manuell aufrufen
Moin Everun,
erst einmal herzlich willkommen hier in der Delphi-PRAXiS. Da sehe ich zwei Möglichkeiten: Du machst einen Typecast:
Delphi-Quellcode:
oder aber, Du nimmst als Typ nicht TObject, sondern gleich TEdit.
(last_change as TEdit).OnChange(Sender);
// oder (last_change as TEdit).OnChange(nil); Ausserdem sollte die Variable auf nil initialisiert werden. Dann kannst Du vor deren Verwendung in der Button-Click-Routine prüfen, ob denn überhaupt schon ein TEdit zugewiesen wurde. Ansonsten fängst Du Dir beim Anklicken des Buttons eine AV ein. Zudem könntest Du die Variable gleich als Feld im Formular unterbringen.
Delphi-Quellcode:
und dann im OnCreate des Formulares initialisieren.
TForm1 = class(TForm)
//... private FLastChange : TEdit; end; |
Re: Letztes Sender-Object merken u. Action manuell aufrufen
Zitat:
Nur bei diesem speziellen Problem hat mit die Suche einfach nicht mehr weiter geholfen :? (wie formuliert man so ein Problem auch für die Suchabfrage?) Zitat:
Delphi-Quellcode:
(nicht der Sender mußte übergeben werden, sondern das davor benutzte Objekt)
(last_change as TEdit).OnChange(last_change);
Wie schon gesagt, vielen Dank für die Hilfe Leider ist mein Delphiwissen noch nicht so ganz ausgeprägt. :witch: |
Alle Zeitangaben in WEZ +1. Es ist jetzt 10:15 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 by Thomas Breitkreuz