[Delphi] как сделать read-only Checkbox?
Enabled:= false ?
Можно стандартный TCheckBox с Enabled:=false; или обрабатывать onClick.
ОнКлик у двух десятков ставить ломает..
ладно, стибрим у rx или Express
А чем не устраивает OnClick у двух десятков?
ибо если делать типа такого:
procedure TForm1.CheckBox2Click(Sender: TObject);
var PrevState : Boolean;
begin
PrevState:=(Sender as TCheckBox).Checked;
(Sender as TCheckBox).Checked:=not PrevState;
end;
то получается зацикленная рекурсия.
есть другие соображения?
var _isProcessingClick : Boolean = false;
procedure TForm1.CheckBox2Click(Sender: TObject);
var PrevState : Boolean;
begin
if (not _isProcessingClick) begin
_isProcessingClick := true;
PrevState:=(Sender as TCheckBox).Checked;
(Sender as TCheckBox).Checked:=not PrevState;
_isProcessingClick := false;
end;
end;
Не очень красиво, но работать будет.
Но лучше - как написал
if CheckBox.Checked <> desiredChecked then CheckBox.Checked := desiredChecked;
Если ломает делать 10 обработчиков, сделай эти 10 чекбоксов потомкоми от TSetiCheckBox = class (TCheckBox) в котором и будет обработчик
Оставить комментарий
yolki
смысл такой: это информационный флаг.может иметь состояния "checked" и "not checked", при этом рользователь его тыкать не должен.
можно ли обойтись стандартными компонентами?
типа поля Edit, read-only - туда выводится информация, пользователь может ткнуть и выделить но не может изменит содержимое.