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