Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Object-Pascal / Delphi-Language (https://www.delphipraxis.net/32-object-pascal-delphi-language/)
-   -   Delphi Problem bei der Bestimmung der Komponente durch Var Sender (https://www.delphipraxis.net/3429-problem-bei-der-bestimmung-der-komponente-durch-var-sender.html)

ustra 12. Mär 2003 11:31


Problem bei der Bestimmung der Komponente durch Var Sender
 
Hallo alle miteinander,

ich habe folgende Situation:

Ich erzeuge mit

LabelLoeschen[1]:=TLabel.create(self);

zur Laufzeit neue Labels. LabelLoeschen ist definiert als LabelLoeschen: array[1..50] of TLabel; Es ist nicht bekannt, ob tatsächlich 50 Labels erzeugt wurden; es können auch nur bspw. 6 erzeugt werden. Soweit funktioniert noch alles wunderbar. Ich weise den Labels jeweils noch das Ereignis onClick auf die Prozedur LabelLoeschenClick zu (LabelLoeschen[iPos].onClick:=LabelLoeschenClick ).

Nun will ich in der Prozedur LabelLoeschenClick über die Variable Sender herausfinden, auf welches Label geklickt wird. Nachstehendes funktioniert bei mir nicht.
Delphi-Quellcode:
procedure TFRVersion.LabelLoeschenClick(Sender: TOBject);
var i:integer;
begin
  for i:=1 to length(Labelfelder) do
  begin
    if Sender=Labelfelder[i]
    then begin
       ShowMessage('ja');
    end;
  end;
end;
Ich bekomme keine Fehlermeldung. Ich habe mit einem Hatlepunkt auch ausprobiert, ob diese Prozedur auch aufgerufen wird. Dem ist so. Könnt Ihr mir helfen?

Besten Dank
Ulrich

[EDIT=Luckie]Code-Tags hinzugefügt. Bitte das nächste Mal selber machen. Danke.[/EDIT]

Haegar 12. Mär 2003 11:38

als was is den Labelfelder definiert?

ustra 12. Mär 2003 11:41

Ups, vergessen zu erwähnen
 
Labelfelder ist auch ein Array wie LabelLoeschen:

LabelFelder: array[1..50] of TLabel;

Ulrich

Chewie 12. Mär 2003 11:45

Versuch vielleicht mal einen Typecast des Senders:

Delphi-Quellcode:
procedure TFRVersion.LabelLoeschenClick(Sender: TOBject);
var i:integer;
begin
  for i:=1 to length(Labelfelder) do
  begin
    if TLabel(Sender) = Labelfelder[i]
    then begin
       ShowMessage('ja');
    end;
  end;
end;

Luckie 12. Mär 2003 11:47

Ich würde es so machen:
Delphi-Quellcode:
procedure TForm1.myLabelClick(Sender: TObject);
begin
  if Sender is TLabel then
  begin
    case (Sender as TLabel).Tag of
      0: ShowMessage(IntToStr((Sender as TLabel).Tag));
      1: ShowMessage(IntToStr((Sender as TLabel).Tag));
      2: ShowMessage(IntToStr((Sender as TLabel).Tag));
    end;
  end;
end;

procedure TForm1.FormCreate(Sender: TObject);
var
  myLabelArray: array of TLabel;
  i : Integer;
begin
  setlength(myLabelArray, 3);
  for i := 0 to 2 do
  begin
    myLabelArray[i] := TLabel.Create(self);
    myLabelArray[i].Parent := Form1;
    myLabelArray[i].Left := 20;
    myLabelArray[i].Top := 20*i+1;
    myLabelArray[i].Caption := IntToStr(i);
    myLabelArray[i].OnClick := myLabelClick;
    myLabelArray[i].Tag := i;
  end;
end;

ustra 12. Mär 2003 11:56

Das ging aber fix!!
 
Hallo,

ich habe gleich mal eure Vorschläge ausprobiert.

Chewies Vorschlag hat mir nicht weiter geholfen. Trotzdem danke. Vielleicht kann ich es aber noch gebrauchen.

Ich habe gleich Deinen Vorschlag Luckie ausprobiert und der funktioniert perfekt. Recht herzlichen dnak für die schnelle Hilfe und kompetente Hilfe.

Ulrich

Sharky 12. Mär 2003 11:56

Re: Problem bei der Bestimmung der Komponente durch Var Send
 
Hai Ustra,

willkomen im Forum.

Verwende doch einfach das Tag-Propertie:

Delphi-Quellcode:
procedure TForm1.LabelClick (Sender: TObject);
begin
 ShowMessage ('Es wurde auf ' + IntToStr ((Sender AS TLabel).Tag) + ' gelickt');
end;

procedure TForm1.FormCreate(Sender: TObject);
var
 i                 : integer;
begin
 for i := 1 to length(Labelfelder) do
  begin
   LabelFelder[i] := TLabel.create(self);
   With LabelFelder [i] do
    begin
     Tag := i;
     Caption := 'Label-' + IntToStr (i);
     Top := 15 * i;
     left := 20;
     Parent := Form1;
     OnClick := LabelClick;
    end;
  end;
end;

[Edit] Grummel.... Luckie war wieder schneller [/Edit]

Luckie 12. Mär 2003 11:59

Re: Problem bei der Bestimmung der Komponente durch Var Send
 
Zitat:

Zitat von Sharky
[Edit] Grummel.... Luckie war wieder schneller [/Edit]

Aber um Längen, äääh, Schwanzflossen. Oder wo bis du noch rumgeschwommen? :P

Sharky 12. Mär 2003 12:02

Re: Problem bei der Bestimmung der Komponente durch Var Send
 
Zitat:

Zitat von Luckie
Zitat:

Zitat von Sharky
[Edit] Grummel.... Luckie war wieder schneller [/Edit]

Aber um Längen, äääh, Schwanzflossen. Oder wo bis du noch rumgeschwommen? :P

Auch kleine Haie müssen mal wo hin

Und da hatte ich vergessen auf "Absenden" zu klicken.

Luckie 12. Mär 2003 12:06

Da sind kleine "Luckies" eben im Vorteil.

Aber jetzt Schluß, wird zu sehr off-topic. Aber es ist ja schon alles geklärt, wie es aussieht, sollte also nicht so schlimm sein.


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