AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Thema durchsuchen
Ansicht
Themen-Optionen

EventName in For-Schleife ändern

Ein Thema von Johannes013 · begonnen am 26. Aug 2009 · letzter Beitrag vom 27. Aug 2009
Antwort Antwort
Seite 1 von 2  1 2      
Johannes013

Registriert seit: 2. Jun 2009
179 Beiträge
 
Delphi 5 Standard
 
#1

EventName in For-Schleife ändern

  Alt 26. Aug 2009, 16:44
Hi Leute,

ich bin dabei eine Apllikation zu schreiben, in der mehrere Label MIT Events zur Laufzeit erzeugt werden...

Wie kann ich ein Event nach einer Variable nummerieren und diese dann danach aufrufen?

mfg Johannes
Johannes
Der folgende Satz ist richtig.
Der vorherige Satz ist falsch.
  Mit Zitat antworten Zitat
Benutzerbild von turboPASCAL
turboPASCAL

Registriert seit: 8. Mai 2005
Ort: Sondershausen
4.274 Beiträge
 
Delphi 6 Personal
 
#2

Re: EventName in For-Schleife ändern

  Alt 26. Aug 2009, 16:49
Ich würde nur im Event nachsehen von welchem Label das gesendet wurde und dann
darauf entsp. reagieren. Das ist wohl das einfachste.
Matti
Meine Software-Projekte - Homepage - Grüße vom Rüsselmops -Mops Mopser
  Mit Zitat antworten Zitat
Johannes013

Registriert seit: 2. Jun 2009
179 Beiträge
 
Delphi 5 Standard
 
#3

Re: EventName in For-Schleife ändern

  Alt 26. Aug 2009, 17:01
Wenn ich nun in der Prozedur abfrage von welchem Label das gesendet wurde, sagt er immer:
Undefinierter bezeichner: "Lab2";

Delphi-Quellcode:
var
  Form1: TForm;
  Lab: TLabel;
  i: integer;

{...}
procedure TForm1.LabMove(Sender: TObject; Shift: TShiftState; X,Y: Integer);
begin
   if Sender=Lab{2} then halt;
end;

procedure TForm1.FormCreate(Sender: TObject);
begin
for i:=0 to 10 do
  begin
    Lab:=TLabel.Create(self);
    Lab.Parent:=Form1;
    Lab.Caption:='Caption '+IntToStr(i);
    Lab.Top:=i*15;
    Lab.Show;
    Lab.Name:='Lab'+IntToStr(i);
    Lab.OnMouseMove:=LabMove;
  end;
end;


Johannes
Johannes
Der folgende Satz ist richtig.
Der vorherige Satz ist falsch.
  Mit Zitat antworten Zitat
Benutzerbild von DeddyH
DeddyH

Registriert seit: 17. Sep 2006
Ort: Barchfeld
27.549 Beiträge
 
Delphi 11 Alexandria
 
#4

Re: EventName in For-Schleife ändern

  Alt 26. Aug 2009, 17:07
Versuch malif (Sender is TLabel) and (TLabel(Sender).Name = 'Lab2') then halt;
Detlef
"Ich habe Angst vor dem Tag, an dem die Technologie unsere menschlichen Interaktionen übertrumpft. Die Welt wird eine Generation von Idioten bekommen." (Albert Einstein)
Dieser Tag ist längst gekommen
  Mit Zitat antworten Zitat
Johannes013

Registriert seit: 2. Jun 2009
179 Beiträge
 
Delphi 5 Standard
 
#5

Re: EventName in For-Schleife ändern

  Alt 26. Aug 2009, 17:10
Danke sehr,

Johannes
Der folgende Satz ist richtig.
Der vorherige Satz ist falsch.
  Mit Zitat antworten Zitat
Benutzerbild von turboPASCAL
turboPASCAL

Registriert seit: 8. Mai 2005
Ort: Sondershausen
4.274 Beiträge
 
Delphi 6 Personal
 
#6

Re: EventName in For-Schleife ändern

  Alt 26. Aug 2009, 17:48
Also:

Delphi-Quellcode:
for i:=0 to 10 do
  begin
    Lab:=TLabel.Create(self);
    Lab.Parent:=Form1;
    Lab.Caption:='Caption '+IntToStr(i);
    Lab.Top:=i*15;
    Lab.Show;
    Lab.Name:='Lab'+IntToStr(i);
    Lab.OnMouseMove:=LabMove;
  end;
end;
würde ich ändern in:

Delphi-Quellcode:
for i:=0 to 10 do
  begin
    Lab:=TLabel.Create(self);
    Lab.Parent:=Form1;
    Lab.Caption:='Caption '+IntToStr(i);
    Lab.Top:=i*15;
    Lab.Show;
    Lab.Tag := i; // <--<<
    Lab.OnMouseMove:= OnLabMove;
  end;
end;
...und das dann so:
Delphi-Quellcode:
procedure FormXYZ.OnLabMove(Sender: TObject);
begin
  if Sender is TLabel then
    if TLabel(Sender).Tag = 2 then exit;
end;
Matti
Meine Software-Projekte - Homepage - Grüße vom Rüsselmops -Mops Mopser
  Mit Zitat antworten Zitat
Namenloser

Registriert seit: 7. Jun 2006
Ort: Karlsruhe
3.724 Beiträge
 
FreePascal / Lazarus
 
#7

Re: EventName in For-Schleife ändern

  Alt 26. Aug 2009, 17:59
Zitat von DeddyH:
Versuch malif (Sender is TLabel) and (TLabel(Sender).Name = 'Lab2') then halt;
Das ist gefährlich, da es ja möglich wäre, dass die vollständige boolsche Auswertung aktiviert ist. In dem Fall würde es hier krachen. Ich gehe in solchen Fällen auf Nummer Sicher und schreibe das lieber so:
if (Sender is TLabel) then if (TLabel(Sender).Name = 'Lab2') then halt;
  Mit Zitat antworten Zitat
Johannes013

Registriert seit: 2. Jun 2009
179 Beiträge
 
Delphi 5 Standard
 
#8

Re: EventName in For-Schleife ändern

  Alt 26. Aug 2009, 18:02
Ich weiß garnicht, welche ich nehmen soll...

Und wie kann ich diese dann in einer anderen Prozedur ansprechen?

Bsp:
Delphi-Quellcode:
procedure TForm1.FormClick(Sender: TObject);
begin
// Label --------------------------------------------------
   Lab{2}.Left:=Mouse.CursorPos.X-Left;
   Lab{2}.Top:=Mouse.CursorPos.Y-Top;
end;
Johannes
Der folgende Satz ist richtig.
Der vorherige Satz ist falsch.
  Mit Zitat antworten Zitat
Benutzerbild von DeddyH
DeddyH

Registriert seit: 17. Sep 2006
Ort: Barchfeld
27.549 Beiträge
 
Delphi 11 Alexandria
 
#9

Re: EventName in For-Schleife ändern

  Alt 26. Aug 2009, 18:10
Zitat von NamenLozer:
Das ist gefährlich, da es ja möglich wäre, dass die vollständige boolsche Auswertung aktiviert ist.
Wer die einschaltet, hat es nicht besser verdient

[edit] Johannes, das wird so nicht gehen. Was Du machen willst, geht nur mit Variablennamen, was Du hast, sind aber Instanznamen. Du könntest die dynamisch angelegten Labels in einer Liste selbst verwalten oder auf das Components-Array des Owners zugreifen, durchlaufen, nach dem passenden Namen (oder Tag) suchen und eine lokale Variable belegen. Mit der ginge das dann wieder so, wie Du das willst. [/edit]
Detlef
"Ich habe Angst vor dem Tag, an dem die Technologie unsere menschlichen Interaktionen übertrumpft. Die Welt wird eine Generation von Idioten bekommen." (Albert Einstein)
Dieser Tag ist längst gekommen
  Mit Zitat antworten Zitat
Benutzerbild von uligerhardt
uligerhardt

Registriert seit: 19. Aug 2004
Ort: Hof/Saale
1.739 Beiträge
 
Delphi 2007 Professional
 
#10

Re: EventName in For-Schleife ändern

  Alt 26. Aug 2009, 18:17
Ich würde die Labels in einem Array speichern - das erweist sich auf Dauer als vorteilhaft. Etwa so:    FLabels: array[0..10] of TLabel; im private-Teil von TForm1 und so
Delphi-Quellcode:
procedure TForm1.FormCreate(Sender: TObject);
var
  i: Integer;
  Lab: TLabel;
begin
  for i := Low(FLabels) to High(FLabels) do
  begin
    Lab := TLabel.Create(Self);
    Lab.Parent := Self; // besser Self statt Form1
    Lab.Caption := 'Caption ' + IntToStr(i);
    Lab.Top := i * 15;
    // Lab.Show; <== überflüssig
    Lab.Name := 'Lab' + IntToStr(i);
    Lab.OnMouseMove := LabMove;
    FLabels[i] := Lab;
  end;
end;
beim Erzeugen.
Uli Gerhardt
  Mit Zitat antworten Zitat
Antwort Antwort
Seite 1 von 2  1 2      


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 15:30 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