Delphi-PRAXiS
Seite 1 von 4  1 23     Letzte »    

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Sonstige Fragen zu Delphi (https://www.delphipraxis.net/19-sonstige-fragen-zu-delphi/)
-   -   Delphi Label unter Mausposition (https://www.delphipraxis.net/53293-label-unter-mausposition.html)

Lilo 13. Sep 2005 18:18


Label unter Mausposition
 
tach...

und zwar hab ich folgendes problem ^^
ich habe eine form und auf dieser befinden sich ca 30 label... ich will auf die label eine art rolloverefekt haben und en bissl was anderes... und hab nicht unbedingt lust für jedes label ne prozedur zu machen ^^ es soll quasi auf der form bei mousemove eine prozedur rein die prüft ob meine maus über einem label ist und wenn ja, dann brauche ich den name des labels.

ist das einfach möglich? oder ist das mit anderen componenten einfacher? wie statictext oder so...

faux 13. Sep 2005 18:21

Re: Label unter Mausposition
 
So müsste es gehen:

Delphi-Quellcode:
procedure TFormname.OnLabelMouseMove(Sender: TObject......);
var
  LabelName: String;
begin
  LabelName := (Sender as TLabel).Name;
end;
Einfach jedes Label mit dieser Procedure im OnMouseMove verlinken.

Grüße
Faux

marabu 13. Sep 2005 18:26

Re: Label unter Mausposition
 
Hi Lilo,

alternativ kannst du bei den TLabel-Komponenten auch mit OnMouseEnter() und OnMouseLeave() arbeiten - je nachdem was du vorhast.

Grüße vom marabu

faux 13. Sep 2005 18:29

Re: Label unter Mausposition
 
Mir ist noch eingefallen, du du mit dem namen nicht viel machen kannst (außer mit der API-FUnktion FindComponent weiter arbeiten). Es wäre sinnvoller wenn du gleich auf die Eigenschaft die du verändern willst (oder auf die Procedure, etc.) zugreifst. Also zB

Delphi-Quellcode:
(Sender as TLabel).Color := clGreen;

negaH 13. Sep 2005 18:38

Re: Label unter Mausposition
 
Delphi-Quellcode:
procedure TForm1.MouseMove();
var
  C: TControl;
begin
  C := Controls.FindDragTarget(ClientToScreen(Point(X, Y)), True);
  if C is TLabel then
  begin
  end;
end;
Gruß Hagen

Lilo 13. Sep 2005 19:09

Re: Label unter Mausposition
 
Zitat:

Zitat von negaH
Delphi-Quellcode:
procedure TForm1.MouseMove();
var
  C: TControl;
begin
  C := Controls.FindDragTarget(ClientToScreen(Point(X, Y)), True);
  if C is TLabel then
  begin
  end;
end;
Gruß Hagen

das funzt irgendwie nicht... hab bei unit qcontrols eingetragen aber das finddragtarget mkennt der irgendwie nicht... fehlt da noch was?

die varianten von oben sind nicht gut da ich dann wieder auf jedes label ne prozedur machen muss ^^ ich will quasi über eine prozedure das verhalten von 30 labels koordinieren ^^

n0b0dy 13. Sep 2005 19:12

Re: Label unter Mausposition
 
@Lilo

die methode von faux ist aber genau das, was du suchst. diese EINE procedure wird jedem Label zugeordnet und fertig. über den Sender kannste dann den namen bekommen. wie oben
beschrieben

Delphi-Quellcode:
  (Sender as TLabel).Name
wobei ich es immer so mache (geschmackssache):

Delphi-Quellcode:
  TLabel(Sender).Name;

MfG

negaH 13. Sep 2005 19:14

Re: Label unter Mausposition
 
wieso "QControls" ? davon war nie die rede das du unter Kylix entwickelst, hast du mal die Hilfe bemüht ??

Wichtig ist noch eines: FindDragTarget() findet ALLE Controls der gesamten Anwendung, also auch diejenigen die sich in anderen Forms befinden. Du solltest also mit

Delphi-Quellcode:
if (C is TLabel) and (C.Owner = Self) then
sicherstellen das du nur die Labels des Forms ansprichst.

Gruß Hagen

faux 13. Sep 2005 19:15

Re: Label unter Mausposition
 
Wo liegt eigentlich der Unterschied zwischen Hagens und meiner Methode?

n0b0dy 13. Sep 2005 19:17

Re: Label unter Mausposition
 
@faux.

also ich denke mal, Hagen sucht über die MouseMove Funktion des Formulars, oder? :?


Alle Zeitangaben in WEZ +1. Es ist jetzt 06:12 Uhr.
Seite 1 von 4  1 23     Letzte »    

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