Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   GUI-Design mit VCL / FireMonkey / Common Controls (https://www.delphipraxis.net/18-gui-design-mit-vcl-firemonkey-common-controls/)
-   -   Delphi OnChange-Events aller Editfields abfangen (https://www.delphipraxis.net/61853-onchange-events-aller-editfields-abfangen.html)

bwolf 27. Jan 2006 09:28


OnChange-Events aller Editfields abfangen
 
Hi Leute,

gibt es eine Möglichkeit, wie man feststellen kann ob es für ein vorhandenes Editfield (oder was auch immer..) ein onChange-Event gab, und dann in diesem Event feststelle, in welchem Feld die Änderung stattgefunden hat?

Ich hab schon eine weile rumprobiert, aber leider nix vernünftiges Zustande bekommen, könnt ihr mir einen Tip geben?

Vielen Dank schonmal,
grüße Ben

Der_Unwissende 27. Jan 2006 10:36

Re: OnChange-Events aller Editfields abfangen
 
Hi,
kannst du deine Frage etwas genauer formulieren? Willst du nachträglich feststellen, ob irgendwann (seit Start der Anwendung) ein OnChange Ereignis eingetreten ist?
Das geht so ohne weiteres nicht. Die Benachrichtung wird genau dann erzeugt, wenn das Ereignis stattfindet. Anders als mittels polling vermeidet man so gerade das speichern von allen Events und deren spätere Behandlung (da würdest du einfach in einem gewissen Interval nachschauen ob sich was geändert hat).
Falls du also das möchtest würde mir aber kein guter Grund einfallen wofür man es brauchen könnte. Kannst du vielleicht einfach noch sagen was genau du damit machen möchtest?

Ansonsten gibt es natürlich die Möglichkeit auf ein OnChange zu reagieren. Es wird ein TNotifyEvent ausgelöst. Dies ist eine Prozedur die dir in der Variable Sender den Erzeuger der Nachricht übergibt. Du kannst natürlich für alle Editfelder (oder was auch immer) die gleiche OnChange Prozedur eintragen und bei jedem OnChange Ereignis abspeichern wer wann das Ereignis ausgelöst hat. Wie gesagt, bliebe die Frage nach dem warum?

Gruß Der Unwissende

bwolf 27. Jan 2006 11:02

Re: OnChange-Events aller Editfields abfangen
 
Hi Unwissender ;)

danke für deine Antwort!

Mein Vorhabene: In einem Formular sind Editfields, und sobald der User in einem dieser Felder eine Änderug vorgenommen hat, soll diese sofort gespeichert werden.
Und da ich nicht für jedese einzelene Feld ein OnChange-Event schreiben will, würde ich das gerne so lösen, das ich einfach auf jedes onChange reagiere.


Mit dem TNotifyEvent müßte dies dann ja zu machen sein, oder?
Grüße,
Ben

Schaedel 27. Jan 2006 11:04

Re: OnChange-Events aller Editfields abfangen
 
Hallo
Na das ist nun echt einfach :wink:

schreibe eine Onchange prozedure

markeire danach alle Editfelder die du in das Onchange beziehen willst und gib diesen im Objektinspector die Prozedure als Onchange :-)

bwolf 27. Jan 2006 11:08

Re: OnChange-Events aller Editfields abfangen
 
Hi Schaedel,

thx für die Antwort...jo daruf wär ich auch gekommen, aber ich würde mir gerne die Arbeit und den Code sparen, für jedes Feld ein eigenes OnChange zu schreiben. Deswegen würde ich gerne allgemein auf ein OnChange reagieren und anschl. feststellen, wo sich was geänderet hat.

Schaedel 27. Jan 2006 11:15

Re: OnChange-Events aller Editfields abfangen
 
Also du machst für jedes Editfeld das selbe?
Also du schaust was sich in einem Edit geändert hat...
mit TEdit(FindComponent(Sender)).text bekommst du den Text des geänderten edit
dann schaust du was sich geändert hat und gut ;)

edit
Sender hinzugefügt

bin mir nicht sicher ob das funktioniert ist aber in Anfang...

Delphi-Quellcode:
  if Sender is TDBEdit then begin
    (Sender as TDBedit).text :=LoescheFuehrendeNullen((Sender as TDBedit).text);
  end;
das sind jetz zawr DBedits aber is das selbe ...


Alle Zeitangaben in WEZ +1. Es ist jetzt 01:22 Uhr.

Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz