Genau das habe ich gemeint. Und es kann ja auch ein anderes Control im Weg sein. Die schräge Schrift ist ja gerade dann sinnvoll, wenn der Platz drum herum auch benutzt wird.
Du könntest versuchen eine Region zu definieren, siehe Beispielcode.
Der Zweck im Beispielcode ist einen 3-Pixel-breiten Rahmen als Markierung um ein Control zu zeichnen, dazu wird ein TPanel erstellt und in ein TBitmap die Kontur gezeichnet, zuletzt mit SetShape das Panel "ausgeschnitten".
Code: Alles auswählen
var
Regio: TBitmap;
CurrentMarkingRect: TPanel;
MarkedControl: TWinControl;
IMPLEMENTATION
MarkedControl:= Form1.Edit1;
//Rahmen Zeichnen
CurrentMarkingRect := TPanel.Create(aOwner);
CurrentMarkingRect.Parent := aOwner;
With CurrentMarkingRect do begin
Left := MarkedControl.Left - 3;
Top := MarkedControl.Top - 3;
Width := MarkedControl.Width + 2*3;
Height := MarkedControl.Height + 2*3;
Color:= cMarkColor;
BevelOuter:= bvNone;
Regio.Width:= Width; Regio.height:= Height;
Regio.Canvas.brush.color:= clblack; //transparent
Regio.Canvas.FillRect(0,0,Regio.Width, Regio.Height);
Regio.Canvas.brush.color:= clwhite; //region
Regio.canvas.FillRect(0,0,Regio.Width,3);
Regio.canvas.FillRect(0,0,3,Regio.Height);
Regio.canvas.FillRect(0,Regio.Height-3,Regio.Width,Regio.Height);
Regio.canvas.FillRect(Regio.Width-3,0,Regio.Width,Regio.Height);
SetShape(Regio); //CurrentMarkingRect.SetShape(Regio);
end;//with