AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Sprachen und Entwicklungsumgebungen Object-Pascal / Delphi-Language Delphi Problem bei der Bestimmung der Komponente durch Var Sender
Thema durchsuchen
Ansicht
Themen-Optionen

Problem bei der Bestimmung der Komponente durch Var Sender

Ein Thema von ustra · begonnen am 12. Mär 2003 · letzter Beitrag vom 12. Mär 2003
Antwort Antwort
ustra

Registriert seit: 12. Mär 2003
Ort: Geesthacht
138 Beiträge
 
Delphi 5 Professional
 
#1

Problem bei der Bestimmung der Komponente durch Var Sender

  Alt 12. Mär 2003, 11:31
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]
Ulrich Strauer
  Mit Zitat antworten Zitat
Haegar

Registriert seit: 10. Dez 2002
Ort: Peitz
319 Beiträge
 
Delphi 7 Professional
 
#2
  Alt 12. Mär 2003, 11:38
als was is den Labelfelder definiert?
  Mit Zitat antworten Zitat
ustra

Registriert seit: 12. Mär 2003
Ort: Geesthacht
138 Beiträge
 
Delphi 5 Professional
 
#3

Ups, vergessen zu erwähnen

  Alt 12. Mär 2003, 11:41
Labelfelder ist auch ein Array wie LabelLoeschen:

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

Ulrich
Ulrich Strauer
  Mit Zitat antworten Zitat
Chewie

Registriert seit: 10. Jun 2002
Ort: Deidesheim
2.886 Beiträge
 
Turbo Delphi für Win32
 
#4
  Alt 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;
Martin Leim
Egal wie dumm man selbst ist, es gibt immer andere, die noch dümmer sind
  Mit Zitat antworten Zitat
Benutzerbild von Luckie
Luckie

Registriert seit: 29. Mai 2002
37.621 Beiträge
 
Delphi 2006 Professional
 
#5
  Alt 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;
Michael
Ein Teil meines Codes würde euch verunsichern.
  Mit Zitat antworten Zitat
ustra

Registriert seit: 12. Mär 2003
Ort: Geesthacht
138 Beiträge
 
Delphi 5 Professional
 
#6

Das ging aber fix!!

  Alt 12. Mär 2003, 11:56
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
Ulrich Strauer
  Mit Zitat antworten Zitat
Benutzerbild von Sharky
Sharky

Registriert seit: 29. Mai 2002
Ort: Frankfurt
8.251 Beiträge
 
Delphi 2006 Professional
 
#7

Re: Problem bei der Bestimmung der Komponente durch Var Send

  Alt 12. Mär 2003, 11:56
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]
Stephan B.
"Lasst den Gänsen ihre Füßchen"
  Mit Zitat antworten Zitat
Benutzerbild von Luckie
Luckie

Registriert seit: 29. Mai 2002
37.621 Beiträge
 
Delphi 2006 Professional
 
#8

Re: Problem bei der Bestimmung der Komponente durch Var Send

  Alt 12. Mär 2003, 11:59
Zitat von Sharky:
[Edit] Grummel.... Luckie war wieder schneller [/Edit]
Aber um Längen, äääh, Schwanzflossen. Oder wo bis du noch rumgeschwommen?
Michael
Ein Teil meines Codes würde euch verunsichern.
  Mit Zitat antworten Zitat
Benutzerbild von Sharky
Sharky

Registriert seit: 29. Mai 2002
Ort: Frankfurt
8.251 Beiträge
 
Delphi 2006 Professional
 
#9

Re: Problem bei der Bestimmung der Komponente durch Var Send

  Alt 12. Mär 2003, 12:02
Zitat von Luckie:
Zitat von Sharky:
[Edit] Grummel.... Luckie war wieder schneller [/Edit]
Aber um Längen, äääh, Schwanzflossen. Oder wo bis du noch rumgeschwommen?
Auch kleine Haie müssen mal wo hin

Und da hatte ich vergessen auf "Absenden" zu klicken.
Stephan B.
"Lasst den Gänsen ihre Füßchen"
  Mit Zitat antworten Zitat
Benutzerbild von Luckie
Luckie

Registriert seit: 29. Mai 2002
37.621 Beiträge
 
Delphi 2006 Professional
 
#10
  Alt 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.
Michael
Ein Teil meines Codes würde euch verunsichern.
  Mit Zitat antworten Zitat
Antwort Antwort


Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 16:34 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