148просмотров
5 января 2026 г.
📷 ФотоScore: 163
Избавляемся от фокусной рамки Иногда очень хочется избавиться от примитивной фокусной рамки на контроле. В некоторых случаях может помочь: function RecreateControlRgn( const AControl: TWinControl; const AMargin: TRect; const ARGN: NativeInt): NativeInt; var rct: TRect; begin if ARGN <> 0 then DeleteObject(ARGN); rct := AControl.ClientRect; rct.TopLeft := rct.TopLeft + AMargin.TopLeft; rct.BottomRight := rct.BottomRight - AMargin.BottomRight; Result := CreateRectRgn(rct.Left, rct.Top, rct.Right, rct.Bottom); SetWindowRgn(AControl.Handle, Result, TRUE); end; Использовать, например, так: procedure TForm1.FormResize(Sender: TObject); var i: Integer; P: TWinControl; begin for i := 0 to ComponentCount-1 do if (Components[i] is TTrackBar) then begin P := TWinControl(Components[i]); P.Tag := RecreateControlRgn( P, Rect(1, 1, 1, 1), P.Tag); end; end; Работает со стилями, и без.
148
просмотров
957
символов
Нет
эмодзи
Да
медиа

Другие посты @ip76ru

Все посты канала →