Форум программистов
 
Регистрация на форуме тут, о проблемах пишите сюда - alarforum@yandex.ru, проверяйте папку спам! Обязательно пройдите активизацию e-mail, а тут можно восстановить пароль

Купить рекламу на форуме 15-35 тыс рублей в месяц

Вернуться   Форум программистов > Delphi программирование > Компоненты Delphi
Регистрация

Восстановить пароль
Повторная активизация e-mail

Ответ
 
Опции темы Поиск в этой теме
Старый 10.03.2007, 21:14   #1
Washington
Пользователь
 
Регистрация: 04.02.2007
Сообщений: 38
По умолчанию сделать так, чтобы CheckBox и CheckListBox нельзя было отмечать вручную

Как сделать, чтобы CheckBox нельзя было отмечать вручную. А заодно то же самое для CheckListBox, пожалуйста подскажите
Washington вне форума Ответить с цитированием
Старый 10.03.2007, 22:00   #2
BOBAH13
Android Developer
Старожил Подтвердите свой е-майл
 
Аватар для BOBAH13
 
Регистрация: 19.02.2007
Сообщений: 3,708
По умолчанию

enabled... а так незнаю, можно чтонить придумать стабильно. посмотрите на сообщения связаные с checkbox'ами и еще можно при изменении свой-ва Checked ставить обратное ему, т.е. будет еффект как будто ничего не изменилось вообщем дурим юзеров
BOBAH13 вне форума Ответить с цитированием
Старый 11.03.2007, 16:29   #3
rpy3uH
добрый няша
Старожил
 
Аватар для rpy3uH
 
Регистрация: 29.10.2006
Сообщений: 4,805
По умолчанию

Цитата:
Сообщение от BOBAH13 Посмотреть сообщение
посмотрите на сообщения связаные с checkbox'ами и еще можно при изменении свой-ва Checked ставить обратное ему, т.е. будет еффект как будто ничего не изменилось вообщем дурим юзеров
только так!!!!!
rpy3uH вне форума Ответить с цитированием
Старый 11.03.2007, 17:47   #4
BOBAH13
Android Developer
Старожил Подтвердите свой е-майл
 
Аватар для BOBAH13
 
Регистрация: 19.02.2007
Сообщений: 3,708
По умолчанию

ну вариант совершенноо думаю лучший !

создай компонент прямой потомок от TCheckBox ! )) и переопредели OnClick - WM_LBUTTONMOUSEDOWN и т.п. вроде так.... чтобы при клике не изменялось значение Checked, а ты уже программно буш менять его
BOBAH13 вне форума Ответить с цитированием
Старый 12.03.2007, 20:40   #5
Washington
Пользователь
 
Регистрация: 04.02.2007
Сообщений: 38
По умолчанию

я делал так:
Во-первых когда CheckBox1.Enabled = false он серого цвета!!!!
Во-вторых когда
Код:
>procedure TForm5.CheckBox1Click(Sender: TObject);
>begin
>if CheckBox1.Checked=true then CheckBox1.Checked:=true else
>CheckBox1.Checked:=false;
>end; 
ничего не происходит, а если
>procedure TForm5.CheckBox1Click(Sender: TObject);
>begin
>if CheckBox1.Checked=true then CheckBox1.Checked:=false else
>CheckBox1.Checked:=true;
>end;
ошибка - Stack Overflow.
Был предложен такой вариант:
Код:
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

но этот вариант тоже чтото не пропёр

А вообще разобрался я. Поместил чекс на панель, а панель сделал Enabled:=false

Последний раз редактировалось zetrix; 13.03.2007 в 19:24.
Washington вне форума Ответить с цитированием
Старый 12.03.2007, 21:44   #6
BOBAH13
Android Developer
Старожил Подтвердите свой е-майл
 
Аватар для BOBAH13
 
Регистрация: 19.02.2007
Сообщений: 3,708
По умолчанию

легче создать свой компонент.... имхо
BOBAH13 вне форума Ответить с цитированием
Старый 24.03.2007, 15:23   #7
Washington
Пользователь
 
Регистрация: 04.02.2007
Сообщений: 38
По умолчанию

А как насчёт CheckListBox'а?
Washington вне форума Ответить с цитированием
Старый 24.03.2007, 16:59   #8
mihali4
*
Старожил
 
Регистрация: 22.11.2006
Сообщений: 9,201
По умолчанию

Что-то на примитивной вещи такой длительный затык...
100% работающий простенький код:
old: boolean; //глобальная переменная

Код:
procedure TForm1.CheckBox1MouseDown(Sender: TObject; Button: TMouseButton; Shift: TShiftState; X, Y: Integer);
begin
old:=CheckBox1.Checked;
end;

procedure TForm1.CheckBox1MouseUp(Sender: TObject; Button: TMouseButton; Shift: TShiftState; X, Y: Integer);
begin
CheckBox1.Checked:=old;
end;
Абсолютно аналогично и с CheckListBox. Только нужно перебрать в цикле все итемсы...
Ну и глобальный массивчик размерностью в число итемсов вместо одной переменной OLD.
mihali4 вне форума Ответить с цитированием
Ответ
Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Как сделать так, чтобы форму можно было тостать не только за заголовок? Никки Общие вопросы Delphi 1 04.09.2008 14:34
Как сделать так, чтобы переключение между окнами было автоматическим? barand Свободное общение 9 07.07.2008 23:54
Как сделать, чтобы программа запускалась один раз, т.е. повторно запустить нельзя??? Kamikadze_666 Безопасность, Шифрование 7 31.07.2007 08:34
Как сделать так чтобы окно формы всегда было поверх остальных окон? HelloZAPOR Общие вопросы Delphi 5 23.07.2007 08:05
Подскажите, как сделать так, чтобы тест можно было повторно пройти не перезагружая пр Kamikadze_666 Помощь студентам 2 23.05.2007 02:48