procedure TForm1.CheckListBox1ClickCheck(Sender: TObject);
var
old: TNotifyEvent;
begin
if b then
with (Sender as TCheckListBox) do
begin
old := OnClick;
OnClick := nil;
Checked[ItemIndex]:=not Checked[ItemIndex];
OnClick := old;
end;
end;
CheckBox
Как сделать, чтобы CheckBox нельзя было отмечать вручную. А заодно то же самое для CheckListBox, пожалуйста подскажите
для CheckListBox
Код:
для CheckBox
Код:
procedure TForm1.CheckBox1Click(Sender: TObject);
var
old: TNotifyEvent;
begin
if b then
with (Sender as TCheckBox) do
begin
old := OnClick;
OnClick := nil;
Checked:=not Checked;
OnClick := old;
end;
end;
var
old: TNotifyEvent;
begin
if b then
with (Sender as TCheckBox) do
begin
old := OnClick;
OnClick := nil;
Checked:=not Checked;
OnClick := old;
end;
end;
сделаешь глобальную переменную типа b: boolean и если её значение false, то отмечать вручную можно, если true нельзя. вообщем думаю разберешься.
А вообще разобрался я. Поместил чекс на панель, а панель сделал Enabled:=false
А как насчёт CheckListBox'а?
Код:
...
type
TCheckBoxEx = class(TCheckBox)
private
FDisableClicks: Boolean;
procedure CNCommand(var Message: TWMCommand); message CN_COMMAND;
published
property DisableClicks: Boolean read FDisableClicks write FDisableClicks;
end;
...
procedure TCheckBoxEx.CNCommand(var Message: TWMCommand);
begin
if (Message.NotifyCode = BN_CLICKED) then
begin
if (not FDisableClicks) then
inherited;
end
else
inherited;
end;
type
TCheckBoxEx = class(TCheckBox)
private
FDisableClicks: Boolean;
procedure CNCommand(var Message: TWMCommand); message CN_COMMAND;
published
property DisableClicks: Boolean read FDisableClicks write FDisableClicks;
end;
...
procedure TCheckBoxEx.CNCommand(var Message: TWMCommand);
begin
if (Message.NotifyCode = BN_CLICKED) then
begin
if (not FDisableClicks) then
inherited;
end
else
inherited;
end;
А с CheckListBox думаю сами разберетесь :)
P.S. Там еще есть свойство ClicksDisabled в protected, но оно не всегда работает.