Добавил свойство AutoSize - автоподгон ширины элемента по длине текста, как это сделано, например, у Label.
https://dropmefiles.com/Bb30T
CheckBox.ini
[About]
Version=1.0
Author=Dilma
[Type]
Class=WinElement
Info=Флажок
Inherit=WinControl
Interfaces=ControlManager
[Edit]
Class=CheckBox
Caption=Caption
Color=Color
Font=Font
[Property]
Width= |1|55
Height= |1|20
Transparent=Прозрачность надписи|14|1|True,False
Checked=Задаёт начальное значение переключателя|4|1|True,False
+@Caption=Задаёт текст надписи возле переключателя|2|CheckBox
AutoSize=Определяет поведение надписи при изменении текста. True - её размер устанавливается равным длине текста, False - её размер не изменяется независимо от длины текста|14|0|True,False
Flat=Стиль отображения элемента|14|1|True,False
[Methods]
doCheck=Устанавливает/снимает флажок|1|
onCheck=Событие происходит всякий раз при изменении статуса флажка и выдает в поток 1, если флажок установлен и 0 в противном случае ARG(Status)|2|1
*onClick=Событие происходит при клике на элементе|2|0
Checked=Содержит 1, если флажок установлен, или 0 - в противном случае|3|1
hiCheckBox.pas
unit hiCheckBox;
interface
uses Windows,Kol,Share,Win;
{$I share.inc}
type
THICheckBox = class(THIWin)
private
procedure SetAutoSize(Value:boolean);
procedure _OnClick(Obj:PObj);
procedure SetCaption(const Value:string);
procedure SetChecked(Value:byte);
public
_event_onCheck:THI_Event;
_event_onClick:THI_Event;
constructor Create(Parent:PControl);
procedure _work_doCheck(var _Data:TData; Index:word);
procedure _work_doCaption(var _Data:TData; Index:word);
procedure _var_Checked(var _Data:TData; Index:word);
property _prop_Checked:byte write SetChecked;
property _prop_Caption:string write SetCaption;
property _prop_AutoSize:boolean write SetAutoSize;
end;
implementation
constructor THICheckBox.Create;
begin
inherited Create(Parent);
Control := NewCheckbox(Parent,'CheckBox');
Control.OnClick := _OnClick;
end;
procedure THICheckBox._work_doCheck;
begin
Control.Checked := ReadBool(_Data);
_hi_onEvent(_event_onCheck,byte(Control.Checked ));
end;
procedure THICheckBox._work_doCaption;
begin
Control.Caption := ToString(_Data);
end;
procedure THICheckBox._var_Checked;
begin
dtInteger(_Data,integer(Control.Checked));
end;
procedure THICheckBox.SetCaption;
begin
Control.Caption := Value;
end;
procedure THICheckBox.SetChecked;
begin
Control.Checked := Value = 0;
end;
procedure THICheckBox.SetAutoSize;
begin
Control.AutoSize( Value );
end;
procedure THICheckBox._OnClick;
begin
_hi_onEvent(_event_onCheck,byte(Control.Checked ));
_hi_onEvent(_event_onClick,byte(Control.Checked ));
end;
end.
--- Добавлено в 2024-08-28 03:58:54