![]() |
Change nur bei Sender=?
Hi!
Der Titel ist etwas irreführend aber mir ist kein besserer eingefallen. Mein Problem: Ich habe Edits die alle das selbe OnChange Ereignis haben. Jetzt will ich aber dieses Ereignis nur ausführen wenn es nicht durch ein bestimmtes Objekt ausgelöst wurde. Sprich, Ich will im OnChange abfragen wer das Ereignis ausgelöst hat. Geht das überhaupt? Hat das was mit Sender : TObject zu tun? Ich habs mal so probiert:
Delphi-Quellcode:
aber das geht hinten und vorne nicht...
procedure TForm.EditChange(Sender : TObject);
begin if sender = lala(name einer kompo) then begin; machnix; end else begin machwas; end; Was mache ich hier falsch oder geht das so garnicht? mfg mandumoal |
Re: Change nur bei Sender=?
Wenn lala wirklich eine der aufrufenden Komponenten ist, stimmt der Code (bis auf den Strichpunkt hinter begin).
|
Re: Change nur bei Sender=?
Hi,
versuchs mal mit
Delphi-Quellcode:
mfG
procedure TForm.EditChange(Sender : TObject);
begin if sender = Edit1 then // oder wie auch immer das 'besondere' Edit heisst :-D begin machnix; end else begin machwas; end; end; mirage228 |
Re: Change nur bei Sender=?
Servus! :hi:
Angenommen du hast 2 Editfelder (Edit1 und Edit2) auf der Form (Form1) und ein OnChange-Ereignis (ich nenne es pauschal Change). Dann sieht der Code wie folgt aus:
Delphi-Quellcode:
mfg phlux :hi:
procedure TForm1.Change(Sender: TObject);
begin If (Sender as TEdit).Name = 'Edit1' then begin //Das was passiert wenn Sender Edit1 ist, hier rein end else If (Sender as TEdit).Name = 'Edit2' then begin //Das was passiert wenn Sender Edit2 ist, hier rein end; end; Edit: allerdings funzt Mirage seine Variante auch ;) |
Re: Change nur bei Sender=?
Hi!
Ich weiss nicht ob ihr mich falsch verstanden habt oder es gar nichth geht, aber: Der Sender in euren Beispielen ist immer einer der auch ein onChange Ereignis hat. Also entweder Edit1 oder Edit2 (bei mirage) Aber bei mir wird die Änderung praktisch durch ein TStringGrid.OnSelectCell verursacht. also es verändert die Edit.Texte. Jetzt möchte ich aber das das was in OnChange steht nur passiert wenn die Texte von Hand verändert wurden. Ich könnte das auch mit KeyDown KeyPress.. der Edits machen müsste aber dann soviele Zeichen abfragen, bei denen nichtss passieren soll. Ich hoffe ihr habt es jetzt so verstanden wie ich es "vermitteln" wollte... mfg mandumoal |
Re: Change nur bei Sender=?
Hai mandumoal,
du könntest einfach das OnChange ereigniss beim "betreten" des Edits entfernen und beim verlassen wieder verbinden:
Delphi-Quellcode:
procedure TForm1.Edit1Change(Sender: TObject); //OnChange für das Edit
begin //Mache was end; procedure TForm1.Edit1Enter(Sender: TObject); //Edit erhält den Focus begin (Sender As TEdit).OnChange := nil; end; procedure TForm1.Edit1Exit(Sender: TObject); //Edit verliert den Focus begin (Sender As TEdit).OnChange := Edit1Change; end; |
Re: Change nur bei Sender=?
oder...
Delphi-Quellcode:
Wenn die Prozedur von einem nicht-edit ausgelöst wird, dann wird die prozedur sofort verlassen
procedure EditChange(Sender: TObject);
begin if not (Sender is TEdit) then Exit; // .... end; mfG mirage228 |
Re: Change nur bei Sender=?
Danke @ all !!:spin:
|
Alle Zeitangaben in WEZ +1. Es ist jetzt 03:55 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