Nach etwas längerer Recherche bin ich jetzt auf eine funktionierende Lösung gekommen. Da ich noch nie wirklich mit Canvas gearbeitet habe, war es schon etwas rumgefummel... aber meine Erfahrungen sind wieder angewachsen
Ich habe einfach die WMPaint Methode überschrieben. Erst habe ich es mit Rectangle(ClientRect) versucht, aber da wurde auch der Dropdown-Pfeil überbügelt. Mit folgender Lösung ist es genau wie ich will:
Code:
procedure TAutoComboBox.WMPaint(var Message: TWMPaint);
var
CC: TControlCanvas;
begin
inherited;
CC := TControlCanvas.Create;
try
CC.Control := Self;
CC.Pen.Color := clGray;
CC.Pen.Width := 1;
CC.MoveTo(ClientRect.Left, ClientRect.Top);
CC.LineTo(ClientRect.Right - 1, ClientRect.Top);
CC.LineTo(ClientRect.Right-1, ClientRect.Bottom -1);
CC.LineTo(ClientRect.Left, ClientRect.Bottom-1);
CC.LineTo(ClientRect.Left, ClientRect.Top);
finally
CC.Free;
end;
end;
Nach noch ein wenig Recherche bin ich nun auf folgende Lösung gekommen:
Code:
procedure TAutoComboBox.WMPaint(var Message: TWMPaint);
var
CC: TControlCanvas;
begin
inherited;
CC := TControlCanvas.Create;
try
CC.Control := Self;
CC.Brush.Color := clGray;
CC.FrameRect(ClientRect);
finally
CC.Free;
end;
end;