Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Programmieren allgemein (https://www.delphipraxis.net/40-programmieren-allgemein/)
-   -   Delphi OnClick Ereignis nur einmal auslösen (https://www.delphipraxis.net/193720-onclick-ereignis-nur-einmal-ausloesen.html)

Luca Haas 1. Sep 2017 09:35

OnClick Ereignis nur einmal auslösen
 
Hallo Leute,
ich habe ein Edit, mit einem Text drin, in welches der Benutzer einige Daten eintragen soll.
Dazu benutze ich:
Code:
procedure TForm1.Edit1Click(Sender: TObject);
begin
  Edit1.Text := '';
end;
Allerdings lösche ich so jedes Mal den Text im Edit, möchte dies allerdings nur beim ersten Mal machen.
Ist es möglich eine Art Edit1.OnFirstClick zu programmieren ?

CCRDude 1. Sep 2017 09:37

AW: OnClick Ereignis nur einmal auslösen
 
Ja, mit einer bool'schen Variable, als Feld der Form (FEditClearedOnce: boolean), die im FormCreate initialisiert (FEditClearedOnce := false) und in Deinem Event (if not FEditClearedOnce) abgefragt und umgesetzt wird (FEditClearedOnce := true).

Ritsch 1. Sep 2017 09:38

AW: OnClick Ereignis nur einmal auslösen
 
Einfach die Zuweisung auf das Event löschen.
Code:
procedure TForm1.Edit1Click(Sender: TObject);
begin
  Edit1.OnClick:= nil;
  Edit1.Text := '';
end;

Luca Haas 1. Sep 2017 09:42

AW: OnClick Ereignis nur einmal auslösen
 
Okay danke dir CCRDude, klappt perfekt. :)

Aviator 1. Sep 2017 10:32

AW: OnClick Ereignis nur einmal auslösen
 
Zitat:

Zitat von Ritsch (Beitrag 1380106)
Einfach die Zuweisung auf das Event löschen.
Code:
procedure TForm1.Edit1Click(Sender: TObject);
begin
  Edit1.OnClick:= nil;
  Edit1.Text := '';
end;

Das wäre dann aber sehr radikal. Spätestes dann wenn er die Aktion wieder ausführen wollte würde er sich dann wundern wieso nichts mehr funktioniert. Nichtmal der Debugger würde mehr am Event anhalten. Da ist eine Variable dann 1000 Mal besser.

Die kann dann bei einer bestimmten Aktion auch einfach wieder zurückgesetzt werden und dann klappt auch das Löschen des Inhaltes wieder. :stupid:

mkinzler 1. Sep 2017 10:50

AW: OnClick Ereignis nur einmal auslösen
 
Warum, wenn es nur einmal ausgeführt werden soll?
Im anderen Fall würde ich eher das Control inaktivieren.

Sherlock 1. Sep 2017 10:58

AW: OnClick Ereignis nur einmal auslösen
 
Ich vermute, es geht bei dem Edit und dem Text, der vor der Benutzerinteraktion drin steht darum sowas wie Delphi-Referenz durchsuchenTEdit.TextPrompt nachzubauen. Falls ja...lass es und nutze die entsprechende Property. Falls nein, schweige ich wieder.

Sherlock

TiGü 1. Sep 2017 11:01

AW: OnClick Ereignis nur einmal auslösen
 
Zitat:

Zitat von Sherlock (Beitrag 1380117)
Ich vermute, es geht bei dem Edit und dem Text, der vor der Benutzerinteraktion drin steht darum sowas wie Delphi-Referenz durchsuchenTEdit.TextPrompt nachzubauen. Falls ja...lass es und nutze die entsprechende Property. Falls nein, schweige ich wieder.

Bzw. Delphi-Referenz durchsuchenTEdit.TextHint in der VCL.


Alle Zeitangaben in WEZ +1. Es ist jetzt 08:59 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