Einzelnen Beitrag anzeigen

DieDolly

Registriert seit: 22. Jun 2018
953 Beiträge
 
#5

AW: Anfängerfrage eigene TLabel-Komponente

  Alt 23. Jun 2018, 20:42
Das hat mir geholfen danke.

Das mit dem MouseLeave scheint nicht ganz zu klappen. Die Farbe die das Label vorher hatte wird nicht wieder zugewiesen.

Mein Versuch
Delphi-Quellcode:
function TMyLabel.GetLastLabelColor: TColor;
begin
 Result := FLastLabelColor;
 FLastLabelColor := -1;
end;

procedure TMyLabel.SetLastLabelColor(aLabel: TLabel);
begin
 if FLastLabelColor = -1 then
  FLastLabelColor := aLabel.Font.Color;
end;

constructor TMyLabel.Create(AOwner: TComponent);
begin
 inherited Create(AOwner);

 FLastLabelColor := 1;

 // usw.
end;

procedure TMyLabel.SetLabelMouseProperties(Sender: TLabel; Color: TColor; Cursor: TCursor = crDefault; Styles: TFontStyles = []);
begin
 TLabel(Sender).Font.Color := Color;
 TLabel(Sender).Cursor := Cursor;
 TLabel(Sender).Font.Style := Styles;
end;

procedure TMyLabel.CMMouseEnter(var Message: TMessage);
begin
 inherited;

 SetLastLabelColor(Self); // alte Farbe zwischenspeichern?
 SetLabelMouseProperties(Self, CColorHover, crHandPoint);

 if Assigned(FOnMouseEnter) then
  FOnMouseEnter(Self);
end;

procedure TMyLabel.CMMouseLeave(var Message: TMessage);
begin
 inherited;

 SetLabelMouseProperties(Self, GetLastLabelColor); // alte, zwischengespeicherte Farbe wieder setzen

 if Assigned(FOnMouseLeave) then
  FOnMouseLeave(Self);
end;
Statt der zwischengespeicherten Farbe (clRed) wird aber schwarz zurückgeschrieben.
  Mit Zitat antworten Zitat