| Autor |
Beitrag |
kandesbunzler
      
Beiträge: 116
Erhaltene Danke: 1
Delphi 7, XE2
|
Verfasst: 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
      

Beiträge: 10183
Erhaltene Danke: 1256
W10ent
TP3 .. D7pro .. D10.2CE
|
Verfasst: Di 16.09.08 09:50
Moin!
kandesbunzler 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.
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
      
Beiträge: 682
Mac OS X Snow Leopard
Xcode 3.1
|
Verfasst: 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.
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
      

Beiträge: 10183
Erhaltene Danke: 1256
W10ent
TP3 .. D7pro .. D10.2CE
|
Verfasst: Di 16.09.08 09:57
Moin!
Diese Typecasts kann ich nicht empfehlen:
Dunkel hat folgendes geschrieben: | 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  ), dann gibt´s eine unklare AV, mit dem as-Operator gibt´s eine eindeutige AV mit entsprechendem Hinweis!
cu
Narses
_________________ There are 10 types of people - those who understand binary and those who don´t.
|
|
Dunkel
      
Beiträge: 682
Mac OS X Snow Leopard
Xcode 3.1
|
Verfasst: Di 16.09.08 10:01
Narses 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 
      
Beiträge: 116
Erhaltene Danke: 1
Delphi 7, XE2
|
Verfasst: 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:
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 Narses: Delphi-Tags hinzugefügt
|
|
BenBE
      
Beiträge: 8721
Erhaltene Danke: 191
Win95, Win98SE, Win2K, WinXP
D1S, D3S, D4S, D5E, D6E, D7E, D9PE, D10E, D12P, DXEP, L0.9\FPC2.0
|
Verfasst: Di 16.09.08 13:09
_________________ 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
      
Beiträge: 1555
Erhaltene Danke: 70
Win7 Enterprise 64bit, Win XP SP2
Turbo Delphi
|
Verfasst: Di 16.09.08 13:11
|
|
BenBE
      
Beiträge: 8721
Erhaltene Danke: 191
Win95, Win98SE, Win2K, WinXP
D1S, D3S, D4S, D5E, D6E, D7E, D9PE, D10E, D12P, DXEP, L0.9\FPC2.0
|
Verfasst: Di 16.09.08 13:20
Boldar hat folgendes geschrieben: | 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:
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
      

Beiträge: 10183
Erhaltene Danke: 1256
W10ent
TP3 .. D7pro .. D10.2CE
|
Verfasst: Di 16.09.08 13:23
_________________ There are 10 types of people - those who understand binary and those who don´t.
|
|
BenBE
      
Beiträge: 8721
Erhaltene Danke: 191
Win95, Win98SE, Win2K, WinXP
D1S, D3S, D4S, D5E, D6E, D7E, D9PE, D10E, D12P, DXEP, L0.9\FPC2.0
|
Verfasst: Di 16.09.08 13:28
_________________ 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.
|
|