Справочник функций

Ваш аккаунт

Войти через: 
Забыли пароль?
Регистрация
Информацию о новых материалах можно получать и без регистрации:

Почтовая рассылка

Подписчиков: -1
Последний выпуск: 19.06.2015

CheckBox

6
10 марта 2007 года
George
4.1K / / 05.01.2007
Как сделать, чтобы CheckBox нельзя было отмечать вручную. А заодно то же самое для CheckListBox, пожалуйста подскажите
257
11 марта 2007 года
kosfiz
1.6K / / 18.09.2005
и для того и для другого код аналогичный:
для CheckListBox
Код:
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
Код:
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;

сделаешь глобальную переменную типа b: boolean и если её значение false, то отмечать вручную можно, если true нельзя. вообщем думаю разберешься.
6
12 марта 2007 года
George
4.1K / / 05.01.2007
А вообще разобрался я. Поместил чекс на панель, а панель сделал Enabled:=false
6
24 марта 2007 года
George
4.1K / / 05.01.2007
А как насчёт CheckListBox'а?
257
24 марта 2007 года
kosfiz
1.6K / / 18.09.2005
вот же http://forum.codenet.ru/showpost.php?p=179303&postcount=2
4.6K
28 марта 2007 года
Tokolist
268 / / 22.03.2007
ИМХО зачем так извращатся? :) Для CheckBox можно все сделать гораздо элегантнее ;) Порылся в исходниках VCL и вот что у меня получилось

Код:
...
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, но оно не всегда работает.
Реклама на сайте | Обмен ссылками | Ссылки | Экспорт (RSS) | Контакты
Добавить статью | Добавить исходник | Добавить хостинг-провайдера | Добавить сайт в каталог