AGB  ·  Datenschutz  ·  Impressum  







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

Label unter Mausposition

Ein Thema von Lilo · begonnen am 13. Sep 2005 · letzter Beitrag vom 11. Nov 2005
 
Benutzerbild von negaH
negaH

Registriert seit: 25. Jun 2003
Ort: Thüringen
2.950 Beiträge
 
#30

Re: Label unter Mausposition

  Alt 13. Sep 2005, 21:35
Zitat:
ich müsste dann ja bei allen 30 labeln mouseenter mouseleave jeweils 1 procedure machen...
Ok, Faux hat es dir schon gesagt, nun nochmal.

1.) du hast 30 labels auf deinem TForm.
2.) klicke in das OnMouseEnter im OI von Label1 und schreibe im Quelltext folgendes

Delphi-Quellcode:
procedure TForm1.Label1MouseEnter(Sender: TObject);
begin
  (Sender as TLabel).Font.Color := clRed;
end;
3.) nun wieder in de OI vom Label1 in OnMouseLeave() und doppelklick in der Methode schreibst du folgendes

Delphi-Quellcode:
procedure TForm1.Label1MouseLeave(Sender: TObject);
begin
  (Sender as TLabel).Font.Color := clBlack;
end;
4.) jetzt arbeitet das Label1 auf deinem Form schon wie gewünscht.
5.) markiere alle anderen Labels von Label2 bis Label30 per Shift Taste
6.) gehe in den OI in OoMouseEnter() und wähle dort in der DropDown Liste die Methode .Label1OnMouseEnter() aus
7.) mache das gleiche mit OnMouseLeave()

Nun haben alle 30 Labels die gleichen beiden Methoden, wie oben codiert in ihren Events zugewiesen.

Du benötigst also KEINE 30*2 eigene Events um diese dann auf 2 Basismethoden umzudiregieren.

Das Problem mit meiner Funktion ist das du nicht erkennen kannst ob die Mausbewegung ein neues Label selektiert bzw. das alte selektierte Label verlassen hat. Benötigst du diese Funktionalität so müsstest du meine Methode umbauen, inetwaso

Delphi-Quellcode:
type
  TForm1 = class(TForm)
  ...blabla
  private
    FCurrentLabel: TControl;
  ...blabla
  end.

procedure TForm1.MouseMove();
var
  C: TControl;
begin
  C := FindDragTarget(ClientToScreen(Point(X, Y)), False);
  if C <> FCurrentLabel then
  begin
    if (FCurrentLabel is TLabel) and (FCurrentLabel.Owner = Self) then
      TLabel(FCurrentLabel).Font.Color := clBlack;
    FCurrentLabel := C;
    if (FCurrentLabel is TLabel) and (FCurrentLabel.Owner = Self) then
      TLabel(FCurrentLabel).Font.Color := clRed;
  end;
end;
Wichtig ist nur eines, egal welche Lösung du benutzt, du musst sie verstanden haben.
Ich empfehle also erstmal den Vorschlag von Faux genau zu verstehen, denn sein Vorschlag ist die Standardvorgehensweise, die man begriffen haben sollte. Also arbeite obige Punkte einfach mal ab.

Gruß Hagen
  Mit Zitat antworten Zitat
 


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 06:33 Uhr.
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz