Delphi-PRAXiS
Seite 2 von 4     12 34      

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)

faux 13. Sep 2005 19:19

Re: Label unter Mausposition
 
Zitat:

Zitat von n0b0dy
@faux.

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

Jaja, schon klar, aber in der Ausführung. Ist eine Methode Schneller/Langsamer? (Abgesehen davon, dass es Hagen gerne kompliziert macht.. ;) )

n0b0dy 13. Sep 2005 19:21

Re: Label unter Mausposition
 
naja also was nun schneller ist kann ich auch nicht sagen. aber die methode von dir würd ich klar bevorzugen!!
so ein umstand von hagen (sry ;))

faux 13. Sep 2005 19:24

Re: Label unter Mausposition
 
IMHO ist Hagens Methode auch nicht so ohne weiteres ins .NET übertragbar.... Aber egal...

Zum Problem:

Du weist jedem Labelüber den Objektinspektor einfach ein und die selbe Procedure zu, dann ist das ok so. Die Procedure unterscheidet dann, von welchem Label der Aufruf kommt.
Sender ist immer das Objekt, von dem der Aufruf kommt (nicht nur bei MouseMove)...

Grüße
Faux

Mr_G 13. Sep 2005 19:29

Re: Label unter Mausposition
 
Ich möchte mich da anschließen:
Delphi-Quellcode:
procedure TForm1.OnLabelMouseMove();
begin
  if Sender is TLabel then
  begin
    (Sender as TLabel).Color := clGreen;
  end;
end;
Diese Methode könnte man dann den entsprechenden Labels zuweisen.

@ Hagen: Deine Lösung ist zwar recht simpel aber ein Problem hast du denke ich nicht bedacht: Was ist mit den Labels die diesen Effekt nicht erhalten sollen da sie z.B. nur als Beschriftung dienen sollen? Denn die bekommen den Effekt auch verpasst ...

Sharky 13. Sep 2005 19:37

Re: Label unter Mausposition
 
Zitat:

Zitat von Lilo
... es soll quasi auf der form bei mousemove eine prozedur rein die prüft ob meine maus über einem label ist ...

Ohne jetzt das für und wieder zu beurteilen.
Hagens Lösung ist die einzige die exact der geforderte Aufgabenstellung entspricht. ;-)

Lilo 13. Sep 2005 19:43

Re: Label unter Mausposition
 
@negaH

ich entwickel net unter kylix ^^ ich hab nur mal in der hilfe nach dem begriff gesucht weil das net ging ... und dann husch pfusch bei uses reingeschrieben ^^

Delphi-Quellcode:
procedure TForm1.FormMouseMove(Sender: TObject; Shift: TShiftState; X,
  Y: Integer);
var C: TControl;
begin
       C := Controls.FindDragTarget(ClientToScreen(Point(X, Y)), True);
       if C is TLabel then
       begin
       end;
end;
da bekomm ich den fehler "inkombatible Typen - tlabel und tcontrol"

vielleicht bin ich auch nur zu dumm ^^

negaH 13. Sep 2005 19:45

Re: Label unter Mausposition
 
Uff, danke Sharky.

Aber prinzipiell stimme ich den Argumenten der Anderen absolut zu, besonders wenn die Frage von einem Anfänger kommt. Ein Komponentenentwickler wird aber eher auf meinen Vorschlag basierend arbeiten da sie OHNE die Verwendung von Events auskommt.

Die Art & Weise der Programmierung ist also eine komplett unterschiedliche. Während meine Funktion universell auch für andere kompliziertere Probleme benutzt werden kann, muß bei den anderen Vorschlägen der Programmierer gezielt die Events der schon zur Designzeit existierenden Kompoenten gesetzt werden.

Mein Beispiel soll als eine mögliche Alternative zu den anderen Vorschlägen dienen. Man kann sich dann selber das rausziehen was man benötigt.

Es hat also reingarnichts damit zu tuen das ich alles verkompliziere ! das ist schon indirekt eine Beleidigung ;)

Gruß Hagen

negaH 13. Sep 2005 19:47

Re: Label unter Mausposition
 
Zitat:

da bekomm ich den fehler "inkombatible Typen - tlabel und tcontrol"
Und WO bekommst du den Fehler in deinem Code ?!?

Ich vermute mal das du C als TLabel deklariert hast und nicht wie im obigen Post als TControl !

Gruß hagen

faux 13. Sep 2005 19:48

Re: Label unter Mausposition
 
@Lilo: Verstehst du überhaupt den Unterschied der dir vorgeschlagenen Lösungswege? Hast du auch gelsen, das bei Hagens Code alle Labels betroffen sind?

@Hagen: Ich hab ja nix gegen komplexen Code :roll: Aber wenns einfacher geht, und das selbe bewirkt, dann bevorzuge ich das einfachere. ;)
Dein Code "kann" zwar mehr, in diesem Fall, ist es aber (du hast es selbst gesagt), egal, welchen Code man verwendet... :)

Gruß
Faux

NACGTRAG:

Zitat:

Zitat von negaH
Ich vermute mal das du C als TLabel deklariert hast und nicht wie im obigen Post als TControl !

Laut seinem geposteten Code, nicht...

marabu 13. Sep 2005 19:50

Re: Label unter Mausposition
 
Hi Leute,

es ist schon ein Kreuz. Manchmal legt man jedes Wort eines Fragestellers auf die Goldwaage, nur um später zu erfahren: "das hatte ich ganz anders gemeint". Andererseits besteht aber auch jederzeit die Gefahr, dass der Helfer für intelligentes Mitdenken abgewatscht wird.

In diesem Fall denke ich hat Faux vorbildlich mitgedacht, denn aus der wenig vorbildlichen dafür aber um so mehr typischen Problembeschreibung hat er eine common misconception zu eliminieren versucht: das Delphi framework (vcl) ist objektorientiert und kaum ein Ereignis muss zentral (Form) behandelt werden - fast alles wird an die controls delegiert, wenn es Sinn macht.

Wenn Lilo hier gelernt hat, dass man einen einzigen event handler für beliebig viele controls einsetzen kann, dann ist das ein Verdienst von Faux. Alle sonstigen Lösungsansätze sind in der Mächtigkeit ebenbürtig und unterscheiden sich nur im Kodieraufwand.

Freundliche Grüße vom marabu


Alle Zeitangaben in WEZ +1. Es ist jetzt 16:59 Uhr.
Seite 2 von 4     12 34      

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