Вверх ↑
Ответов: 14
Рейтинг: 0
#1: 2024-08-28 03:56:07 ЛС | профиль | цитата
Компонент "CheckBox"
Добавил свойство 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
карма: 0

0
Редактировалось 4 раз(а), последний 2024-08-30 19:01:42