다음은 초점을 맞출 때 포커스 사각형을 그리는 파생 정적입니다. 'TabStop'을 설정하거나 검사를 추가해야하는 코드를 지정해야합니다. 꽤 좋지는 않습니다 (컨트롤에는 실제로 모든 가장자리에 선을위한 공간이 없습니다). 그러나 어쨌든 :
type
TStaticText = class(stdctrls.TStaticText)
private
FFocused: Boolean;
protected
procedure WMSetFocus(var Message: TWMSetFocus); message WM_SETFOCUS;
procedure WMKillFocus(var Message: TWMKillFocus); message WM_KILLFOCUS;
procedure WMPaint(var Message: TWMPaint); message WM_PAINT;
end;
...
procedure TStaticText.WMSetFocus(var Message: TWMSetFocus);
begin
FFocused := True;
Invalidate;
inherited;
end;
procedure TStaticText.WMKillFocus(var Message: TWMKillFocus);
begin
FFocused := False;
Invalidate;
inherited;
end;
procedure TStaticText.WMPaint(var Message: TWMPaint);
var
DC: HDC;
R: TRect;
begin
inherited;
if FFocused then begin
DC := GetDC(Handle);
GetClipBox(DC, R);
DrawFocusRect(DC, R);
ReleaseDC(Handle, DC);
end;
end;
아마도 소유자가 그린 버튼을 사용하는 것이 나을 것입니다. 그런 다음 모든 기능을 즉시 사용할 수 있고 "그냥"필요한 모양을 얻을 필요가 있습니다. –