Autor Beitrag
Frühlingsrolle
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
Beiträge: 2105
Erhaltene Danke: 385

[Win NT] 5.1 x86 6.1 x64
[Delphi] 7 PE, 2006, 10.1 Starter, Lazarus - [C#] VS Exp 2012 - [Android API 15] VS Com 2015, Eclipse, AIDE - [C++] Builder 10.1
BeitragVerfasst: Mi 07.03.18 14:20 
Hallo Forum

Problemstellung:
Sobald meine Komponente den Fokus erhält, soll ein gepunkteter Rahmen darauf gezeichnet werden, siehe Abbildung (CheckBox1):

delphi_focusrect

Ich dachte, mit der Methode TCanvas.DrawFocusRect() wäre das kein Problem, jedoch wird da garnichts abgebildet, auch nicht, wenn ich diese direkt in der Paint() Methode meiner Komponente aufrufe.
Oder ist .DrawFocusRect() garnicht dafür gedacht? :gruebel:

Alternativ dazu, habe ich eine eigene Methode bereitgestellt:

ausblenden Delphi-Quelltext
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
13:
14:
15:
16:
17:
procedure DrawSelectionRect(ACanvas: TCanvas;
  ARect: TRect; AColor: TColor = clBlack; PenWidth: Byte = 1);
var
  r: TRect;
begin
  r := ARect;
  InflateRect(r, -PenWidth - 4, -PenWidth);
  ACanvas.Pen.Color := AColor;
  ACanvas.Pen.Width := PenWidth;
  ACanvas.Pen.Style := psDot;
  ACanvas.Rectangle(r);
end;

// Aufruf
begin
  DrawSelectionRect(frCheckRadioControl1.Canvas, frCheckRadioControl1.ClientRect);
end;

Wie es nach dem Aufruf aussieht, siehe Abbildung.

Das weicht doch etwas vom "Ideal" ab.
Wie bekomm' es nun so wie gewünscht (siehe CheckBox1) hin?
Einloggen, um Attachments anzusehen!
_________________
„Politicians are put there to give you the idea that you have freedom of choice. You don’t. You have no choice. You have owners. They own you. They own everything." (George Denis Patrick Carlin)