Delphi-PRAXiS
Seite 1 von 2  1 2      

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 in einer schleife eine OnClick-prozedur zuweisen (https://www.delphipraxis.net/16153-einer-schleife-eine-onclick-prozedur-zuweisen.html)

Lefko 11. Feb 2004 15:07


in einer schleife eine OnClick-prozedur zuweisen
 
Hallo Freunde :hi: ,

ich hab ein Problem:

Delphi-Quellcode:
procedure Tform1.ResetPanels;
var i : byte;
begin
for i := 1 to 9 do
 begin
  TPanel('Panel' + IntToStr(i)).BevelInner := bvRaised;
  TPanel('Panel' + IntToStr(i)).Font.Color := clblack;
  TPanel('Panel' + IntToStr(i)).OnClick := ??????????;
 end;
end;
Wie kann ich diesem Panel seine OnClick-prozedur zuweisen?

Also bei Panel1
Delphi-Quellcode:
Panel1.OnClick := Panel1click;
MfG Lefko.

Sharky 11. Feb 2004 15:25

Re: in einer schleife eine OnClick-prozedur zuweisen
 
Hmmm....

Hai Lefko,

wo ist denn das Problem? Du hast dir deine Frage doch schon beantwortet ;-)

Delphi-Quellcode:

procedure myPanelClick (sender : TObject);
begin
end;

proceudre InitSystem;
begin
  Panel1.OnClick := myPanelClick;
end;

Lefko 11. Feb 2004 18:46

Re: in einer schleife eine OnClick-prozedur zuweisen
 
Nein, da hast du mich etwas falsch verstanden oder ich habe mich ungenau ausgedrückt ;)

Ich meinte, statt folgendem:

Delphi-Quellcode:
Panel1.OnClick := Panel1click;
Panel2.OnClick := Panel2click;
Panel3.OnClick := Panel3click;
...
möchte ich das in einer Zählschleife machen:

Delphi-Quellcode:
for i := 1 to 9 do
 begin
  TPanel('Panel' + IntToStr(i)).OnClick := Panel_i_click; !
 end;
Ich weiss nicht, wie ich das i in den Namen der Prozedur bekomme! :wall:

MfG Lefko.

Neg 11. Feb 2004 19:56

Re: in einer schleife eine OnClick-prozedur zuweisen
 
Weise doch einfach allen Panels die selbe OnClick-Methode zu und unterscheide die Panels dann anhand ihres Tags.

Lefko 11. Feb 2004 19:59

Re: in einer schleife eine OnClick-prozedur zuweisen
 
Ne, das ist mir zu umständlich, ich dachte nur, ich könnte den QT verkürzen, indem ich diese Zuweisung in einer Schleife mache...
Wenn man nun die Schleifenvariable nicht in den Namen der procedure einbauen kann, muss ich es eben wieder wie vorher eins nach dem anderen machen .. :(

MfG Lefko

Stanlay Hanks 11. Feb 2004 20:04

Re: in einer schleife eine OnClick-prozedur zuweisen
 
Hi.

Delphi-Quellcode:
(FindComponent('Panel' + IntToStr(i)) as TPanel).OnClick
das sollte funktionieren, wenn ich mich nicht täusche. Das ist der Ausdruck, in dem das "i" auch mitbenutzt wird.

Man liest sich, Stanlay :hi:

Lefko 11. Feb 2004 20:58

Re: in einer schleife eine OnClick-prozedur zuweisen
 
@SH: Jaa, ich denke, DAS ist der Teil, der bei mir auch funktioniert ;)

Ich meine den NAMEN der procedure, die zugewiesen wird.

einem Panel soll Panel1click zugewiesen werden, dem nächsten dann Panel2click und in der Schleife eben Paneli die Procedure Paneliclick !

Ist das jetzt verständlich?

Stanlay Hanks 11. Feb 2004 21:02

Re: in einer schleife eine OnClick-prozedur zuweisen
 
nö...leider nicht :oops:

Lefko 11. Feb 2004 21:09

Re: in einer schleife eine OnClick-prozedur zuweisen
 
Oh man, was mach ich denn da... :?

Ich will diese ganzen Schritte:

Delphi-Quellcode:
Panel1.OnClick := Panel1click;
Panel2.OnClick := Panel2click;
Panel3.OnClick := Panel3click;
Panel4.OnClick := Panel4click;
Panel5.OnClick := Panel5click;
Panel6.OnClick := Panel6click;
Panel7.OnClick := Panel7click;
in einer Schleife machen:

Delphi-Quellcode:
for i := 1 to 7 do
 begin
  TPanel('Panel' + IntToStr(i)).OnClick := ???   //hier weiss ich nicht, was da hin soll!
 end;
Soll ich da ('Panel' + IntToStr(i) + click) hinschreiben oder wie kann ich den Namen einer Procedure mit einer Variable drin ordentlich angeben?!

MfG Lefko

PS ansonsten weiss ich nicht, wie ich das noch erklären soll.... :roll:

SirThornberry 11. Feb 2004 21:19

Re: in einer schleife eine OnClick-prozedur zuweisen
 
Erklärt isses eignetlich schon verständlich. Eigentlich ist es nicht möglich weil du OnClick eine Adresse der procedure zuweist. Ich würde wie schon erwähnt auch allen die gleiche procedure zuweisen und dann in der Procedure unterscheiden. Und umständlich ist das auch auf keinen Fall. Einfach
Delphi-Quellcode:
if Sender = Panel1 then
begin

end else
If Sender = Panel2 then
begin
[...]
Ist genau so übersichtlich wie 7 OnClickproceduren


Alle Zeitangaben in WEZ +1. Es ist jetzt 02:55 Uhr.
Seite 1 von 2  1 2      

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