Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Object-Pascal / Delphi-Language (https://www.delphipraxis.net/32-object-pascal-delphi-language/)
-   -   Delphi Bei onClick sender übergeben (https://www.delphipraxis.net/77136-bei-onclick-sender-uebergeben.html)

killerkarl 15. Sep 2006 08:49


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:
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;
Ich wollte wissen, ob ich mir das ganze sparen kann und focus direkt aufrufen kann und wie ich dann denn Sender übergebe.

MOCI 15. Sep 2006 09:20

Re: Bei onClick sender übergeben
 
Hi,

mein Vorschlag wäre folgender:
Erstell eine property, die dein fokusiertes Edit haltet:
Code:
property FocusedCtrl: TWinControl read FFocusedCtrl write SetFocusedCtrl;
Erstelll 1 Prozedure MyMouseClick:
Code:
procedure TfrmMain.MyMouseClick(Sender: TObject);
begin
  FocusedCtrl := TWinControl(Sender);
  //mach dann deine Farbänderung
end;
Erstell die Edits zur Laufzeit und
Code:
procedure TfrmMain.btnHinzufuegenClick(Sender: TObject);
begin
  FocusedCtrl := TEdit.Create(Self);
  with FocusedCtrl do begin
    Name := IrgendEinName;
    OnClick := MyMouseClick;
  end;
  FocusedCtrl := FocusedCtrl;
end;
mfg MOCI

killerkarl 15. Sep 2006 09:33

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.

MOCI 15. Sep 2006 09:43

Re: Bei onClick sender übergeben
 
Du musst die Edits nicht zur Laufzeit erstellen.
mach folgendes beim Create des Formulars:

Code:
for I := 0 to ComponentCount - 1 do
  if Components[I] is TEdit then
    TEdit(Components[I]).OnClick := MyMouseClick;
d. h. die Schleife geht alle Komponenten von deinem Formular durch, handelt es sich dann um ein Edit,
dann weist es dem OnClick-Ereignis die Prozedur MyMouseClick zu.

MOCI 15. Sep 2006 09:59

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:
TEdit(Sender).Color := clinfobk;
weise diese prozedur allen Edits zu.

mfg MOCI

killerkarl 15. Sep 2006 10:03

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