![]() |
Bei onClick sender übergeben
Moin,
also ich habe 4 editfelder, auf die ich clicke und dann ändert das jeweils angeklickte seine Farbe. dazu habe ich eine procedure focus geschrieben in der übergebe ich das object und dann ändert er die Farbe des Feldes. Soweit so gut, aber wenn ich diese procedure aufrufe muss ich das bei jedem textfeld machen also ungefähr so:
Delphi-Quellcode:
Ich wollte wissen, ob ich mir das ganze sparen kann und focus direkt aufrufen kann und wie ich dann denn Sender übergebe.
procedure focus(f:TEdit); //Das Feld wird eingefärbt.
begin z1.color:=clwhite; n1.color:=clwhite; z2.color:=clwhite; n2.color:=clwhite; f.Color:=clinfobk; end; procedure TForm1.z1Click(Sender: TObject); var feld:Tedit; begin feld:=z1; // Der Fokus wird auf das Feld gelegt und farblich markiert focus(feld); end; |
Re: Bei onClick sender übergeben
Hi,
mein Vorschlag wäre folgender: Erstell eine property, die dein fokusiertes Edit haltet:
Code:
Erstelll 1 Prozedure MyMouseClick:
property FocusedCtrl: TWinControl read FFocusedCtrl write SetFocusedCtrl;
Code:
Erstell die Edits zur Laufzeit und
procedure TfrmMain.MyMouseClick(Sender: TObject);
begin FocusedCtrl := TWinControl(Sender); //mach dann deine Farbänderung end;
Code:
mfg MOCI
procedure TfrmMain.btnHinzufuegenClick(Sender: TObject);
begin FocusedCtrl := TEdit.Create(Self); with FocusedCtrl do begin Name := IrgendEinName; OnClick := MyMouseClick; end; FocusedCtrl := FocusedCtrl; end; |
Re: Bei onClick sender übergeben
Moin danke für die schnelle antwort, aber geht es da nicht einfacher?
Ich habe nicht so sehr das große delphi wissen. |
Re: Bei onClick sender übergeben
Du musst die Edits nicht zur Laufzeit erstellen.
mach folgendes beim Create des Formulars:
Code:
d. h. die Schleife geht alle Komponenten von deinem Formular durch, handelt es sich dann um ein Edit,
for I := 0 to ComponentCount - 1 do
if Components[I] is TEdit then TEdit(Components[I]).OnClick := MyMouseClick; dann weist es dem OnClick-Ereignis die Prozedur MyMouseClick zu. |
Re: Bei onClick sender übergeben
Oder du machst es so:
doppelklicke im Objektinspektor bei einem Edit im Reiter "Ereignisse" auf OnClick doppelt. Es wird dann automatisch eine Prozedur erstellt. Schreib bei dieser Prozedur:
Code:
weise diese prozedur allen Edits zu.
TEdit(Sender).Color := clinfobk;
mfg MOCI |
Re: Bei onClick sender übergeben
danke, genauso wollte ich es haben.
Danke |
Alle Zeitangaben in WEZ +1. Es ist jetzt 10:24 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