Autor Beitrag
kandesbunzler
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 116
Erhaltene Danke: 1


Delphi 7, XE2
BeitragVerfasst: Di 16.09.08 09:46 
Hallo allerseits,

wie ermittle ich beim bspw. OnMouseEnter - Ereignis bspw. die entsprechende Labelnummer?

Danke und auf bald ...
kandesbunzler.
Narses
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
Administrator
Beiträge: 10183
Erhaltene Danke: 1256

W10ent
TP3 .. D7pro .. D10.2CE
BeitragVerfasst: Di 16.09.08 09:50 
Moin!

user profile iconkandesbunzler hat folgendes geschrieben:
wie ermittle ich beim bspw. OnMouseEnter - Ereignis bspw. die entsprechende Labelnummer?
Du könntest mit FindComponent arbeiten (nicht zu empfehlen), das Components-Array der Form absuchen (das schon eher) oder einfach beim Anlegen in der .Tag-Eigenschaft der Labels eine Ordnungszahl unterbringen. :idea:

Dann kannst du so darauf zugreifen: (Sender as TLabel).Tag

cu
Narses

_________________
There are 10 types of people - those who understand binary and those who don´t.
Dunkel
ontopic starontopic starontopic starontopic starontopic starontopic starofftopic starofftopic star
Beiträge: 682

Mac OS X Snow Leopard
Xcode 3.1
BeitragVerfasst: Di 16.09.08 09:53 
Dafür ist der Parameter Sender vom Typ TObject zuständig. Einfach nach TLabel casten und den Namen ermittel.

ausblenden Delphi-Quelltext
1:
2:
3:
4:
5:
procedure TForm1.Label1Click(Sender: TObject);
begin
  if TLabel(Sender).Name = 'Label1' then
    Caption := 'OK';
end;

_________________
Ich streite einsam mich mit dieser Oberflächenwelt
Gutes sei ein löblich Brot von dem ich zehre - bis zum Tod [Das Ich - Im Ich]
Narses
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
Administrator
Beiträge: 10183
Erhaltene Danke: 1256

W10ent
TP3 .. D7pro .. D10.2CE
BeitragVerfasst: Di 16.09.08 09:57 
Moin!

Diese Typecasts kann ich nicht empfehlen: :?
user profile iconDunkel hat folgendes geschrieben:
ausblenden Delphi-Quelltext
1:
2:
3:
4:
5:
procedure TForm1.Label1Click(Sender: TObject);
begin
  if TLabel(Sender).Name = 'Label1' then
    Caption := 'OK';
end;
weil: wenn das mal kein TLabel sein sollte (wer recycled keine Methoden :zwinker:), dann gibt´s eine unklare AV, mit dem as-Operator gibt´s eine eindeutige AV mit entsprechendem Hinweis! :idea: ;)

cu
Narses

_________________
There are 10 types of people - those who understand binary and those who don´t.
Dunkel
ontopic starontopic starontopic starontopic starontopic starontopic starofftopic starofftopic star
Beiträge: 682

Mac OS X Snow Leopard
Xcode 3.1
BeitragVerfasst: Di 16.09.08 10:01 
user profile iconNarses hat folgendes geschrieben:

Diese Typecasts kann ich nicht empfehlen: :?

Da hast Du natürlich absolut recht!

_________________
Ich streite einsam mich mit dieser Oberflächenwelt
Gutes sei ein löblich Brot von dem ich zehre - bis zum Tod [Das Ich - Im Ich]
kandesbunzler Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 116
Erhaltene Danke: 1


Delphi 7, XE2
BeitragVerfasst: Di 16.09.08 12:59 
Hallo allerseits

und danke für die Infos.

Folgende Nachfrage habe ich noch.

Wie kann ich eine Auswertung/Übergabe in folgender Form durchführen:
ausblenden Delphi-Quelltext
1:
2:
3:
4:
5:
var LabelName : string;
begin
  LabelName := TLabel(Sender).Name;
  LabelName.font.style := LabelName.font.style + [fsunderline];
end;

In Z(eile)4 erhalte ich die Fehlermeldung, daß 'Record, Objekt oder Klassentyp erforderlich' sind.

Fehlt mir hier evtl. eine Konvertierung oder was mache ich falsch?

Auf bald ...
kandesbunzler.

Moderiert von user profile iconNarses: Delphi-Tags hinzugefügt
BenBE
ontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic starofftopic star
Beiträge: 8721
Erhaltene Danke: 191

Win95, Win98SE, Win2K, WinXP
D1S, D3S, D4S, D5E, D6E, D7E, D9PE, D10E, D12P, DXEP, L0.9\FPC2.0
BeitragVerfasst: Di 16.09.08 13:09 
user profile iconNarses hat folgendes geschrieben:
Moin!

user profile iconkandesbunzler hat folgendes geschrieben:
wie ermittle ich beim bspw. OnMouseEnter - Ereignis bspw. die entsprechende Labelnummer?
Du könntest mit FindComponent arbeiten (nicht zu empfehlen), das Components-Array der Form absuchen (das schon eher)

@Narses: Was denkst Du, was FindComponent tut??? :mahn: ;-)

user profile iconNarses hat folgendes geschrieben:
oder einfach beim Anlegen in der .Tag-Eigenschaft der Labels eine Ordnungszahl unterbringen. :idea:

Warum so kompliziert? Sender abfragen ... und das "Label" einfach vorne wegschneiden ;-)

user profile iconNarses hat folgendes geschrieben:
Dann kannst du so darauf zugreifen: (Sender as TLabel).Tag

cu
Narses

Close ...
ausblenden Delphi-Quelltext
1:
LabelNummer := StrToIntDef(Copy(TLabel(Sender).Name, 6, MaxInt), -1);					

_________________
Anyone who is capable of being elected president should on no account be allowed to do the job.
Ich code EdgeMonkey - In dubio pro Setting.
Boldar
ontopic starontopic starontopic starontopic starontopic starhalf ontopic starofftopic starofftopic star
Beiträge: 1555
Erhaltene Danke: 70

Win7 Enterprise 64bit, Win XP SP2
Turbo Delphi
BeitragVerfasst: Di 16.09.08 13:11 
user profile iconkandesbunzler hat folgendes geschrieben:
Hallo allerseits

und danke für die Infos.

Folgende Nachfrage habe ich noch.

Wie kann ich eine Auswertung/Übergabe in folgender Form durchführen:

...
Z1 var LabelName : string;
Z2 begin
Z3 LabelName := TLabel(Sender).Name;
Z4 LabelName.font.style := LabelName.font.style + [fsunderline];
Z5 end;

In Z(eile)4 erhalte ich die Fehlermeldung, daß 'Record, Objekt oder Klassentyp erforderlich' sind.

Fehlt mir hier evtl. eine Konvertierung oder was mache ich falsch?

Auf bald ...
kandesbunzler.


einfach mit

ausblenden Delphi-Quelltext
1:
if (sender is Tlabel) then (sender as Tlabel).font.style := (sender as Tlabel).font.style + [fsunderline];					
BenBE
ontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic starofftopic star
Beiträge: 8721
Erhaltene Danke: 191

Win95, Win98SE, Win2K, WinXP
D1S, D3S, D4S, D5E, D6E, D7E, D9PE, D10E, D12P, DXEP, L0.9\FPC2.0
BeitragVerfasst: Di 16.09.08 13:20 
user profile iconBoldar hat folgendes geschrieben:
ausblenden Delphi-Quelltext
1:
if (sender is Tlabel) then (sender as Tlabel).font.style := (sender as Tlabel).font.style + [fsunderline];					


Da ich das häufiger sehe, hier ein Hinweis:

Mit Variable is TLabel wird ts eine Typenprüfung vorgenommenberei, diese wird aber auch mit (sender as Tlabel ausgeführt. in der oben zitierten Zeile wird also 3 Mal geprüft, welchen Typ Sender hat, obwohl schon nach der ersten Prüfung feststeht, dass die beiden anschließenden Konvertierungen nicht fehlschlagen können*

Daher sollte man obige Zeile lieber so schreiben:
ausblenden Delphi-Quelltext
1:
if (sender is Tlabel) then TLabel(sender).font.style := TLabel(sender).font.style + [fsunderline];					


*Heisen-Bugs mal ausgeschlossen; deren Existenz zeigt aber sowieso schlechten Code an.

_________________
Anyone who is capable of being elected president should on no account be allowed to do the job.
Ich code EdgeMonkey - In dubio pro Setting.
Narses
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
Administrator
Beiträge: 10183
Erhaltene Danke: 1256

W10ent
TP3 .. D7pro .. D10.2CE
BeitragVerfasst: Di 16.09.08 13:23 
Moin!

user profile iconBenBE hat folgendes geschrieben:
user profile iconNarses hat folgendes geschrieben:
user profile iconkandesbunzler hat folgendes geschrieben:
wie ermittle ich beim bspw. OnMouseEnter - Ereignis bspw. die entsprechende Labelnummer?
Du könntest mit FindComponent arbeiten (nicht zu empfehlen), das Components-Array der Form absuchen (das schon eher)

@Narses: Was denkst Du, was FindComponent tut??? :mahn: ;-)
Die Namen der Instanzen (String-)vergleichen, statt die Instanzadressen? :zwinker:

user profile iconBenBE hat folgendes geschrieben:
ausblenden Delphi-Quelltext
1:
LabelNummer := StrToIntDef(Copy(TLabel(Sender).Name, 6, MaxInt), -1);					
Dazu hab´ ich oben schon was gesagt... :roll: und dann das von dir... :| also wirklich... *kopfschüttel* ;)

cu
Narses

_________________
There are 10 types of people - those who understand binary and those who don´t.
BenBE
ontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic starofftopic star
Beiträge: 8721
Erhaltene Danke: 191

Win95, Win98SE, Win2K, WinXP
D1S, D3S, D4S, D5E, D6E, D7E, D9PE, D10E, D12P, DXEP, L0.9\FPC2.0
BeitragVerfasst: Di 16.09.08 13:28 
user profile iconNarses hat folgendes geschrieben:
user profile iconBenBE hat folgendes geschrieben:
ausblenden Delphi-Quelltext
1:
LabelNummer := StrToIntDef(Copy(TLabel(Sender).Name, 6, MaxInt), -1);					
Dazu hab´ ich oben schon was gesagt... :roll: und dann das von dir... :| also wirklich... *kopfschüttel* ;)

Ich programmier ordentlich(tm) ;-)

_________________
Anyone who is capable of being elected president should on no account be allowed to do the job.
Ich code EdgeMonkey - In dubio pro Setting.