![]() |
|
|
Регистрация Восстановить пароль |
Регистрация | Задать вопрос |
Заплачу за решение |
Новые сообщения |
Сообщения за день |
Расширенный поиск |
Правила |
Всё прочитано |
![]() |
|
Опции темы | Поиск в этой теме |
![]() |
#1 |
Пользователь
Регистрация: 28.11.2007
Сообщений: 49
|
![]()
Народ, как программно решить следующую задачу: Имеется 2 чекбокса. В случае если свойство одного из чекбоксов - Checked становиться равным True, то при повторном нажатии оставить прежнее состояние (то есть не выполнять Checked = False, (здесь же имееть ввиду то что при повторном нажатии не должны инициироваться никае действия выполняемые при Checked = True - они должны выполняться единожды при первоначальном назначении флага True)).
|
![]() |
![]() |
![]() |
#2 |
Старожил
Регистрация: 13.10.2007
Сообщений: 2,740
|
![]()
Если CheckBox используется только один раз, то можно так:
Код:
|
![]() |
![]() |
![]() |
#3 |
Участник клуба
Регистрация: 09.11.2007
Сообщений: 1,762
|
![]()
Не совсем понятен вопрос. Сначала говорите что у Вас 2 чекбокса, потом что-то об одном только заговорили. Конкретнее можно?
|
![]() |
![]() |
![]() |
#4 |
Пользователь
Регистрация: 28.11.2007
Сообщений: 49
|
![]()
Рассматривается такой вариант. Имеется несколько чекбоксов
Здесь чекбоксы работаю как аналог радиобутонов (в плане перемещения). Как реализовать нижеописанную возможность, в данном случае (То есть при перемещении в следующии чекбокс предыдущий сбросить в False, а для текущего сделать (код_1). То есть надо сделать: Когда мы кликаем на чекбокс то его состояние переходит в cbChecked. При следующем клике на этом же чекбоксе если состояние уже равно cbChecked не иницировать никаких действий при этом оставив текущее состояние. Но в том случае если мы чекаем другой чекбокс то для него произвести аналогичные предыдущему действия при этом сбросив состояние предыдущего чекбокса в cbUnchecked код Pascal/Delphi 1: 2: 3: 4: 5: 6: 7: 8: 9: 10: 11: 12: 13: 14: 15: 16: 17: 18: 19: 20: 21: 22: procedure TForm1.C(Sender: TObject); var i: Integer; begin for i := 0 to ControlCount - 1 do if (Controls[i] is TCheckBox) and (Components[i] <> Sender) and ((Sender as TCheckBox).State = cbChecked) then (Components[i] as TCheckBox).Checked := False; end; ***********************КОД1******** ************** procedure TForm1.CheckBox1MouseUp(Sender: TObject; Button: TMouseButton; Shift: TShiftState; X, Y: Integer); begin if CheckBox1.Checked then begin CheckBox1.Checked := true; //тут код состояния Checked end else CheckBox1.Checked := not CheckBox1.Checked; end; |
![]() |
![]() |
![]() |
#5 |
Телепат с дипломом
Старожил
Регистрация: 10.06.2007
Сообщений: 4,929
|
![]()
Во первых радиогруппа это то что нужно и что обычно используется в этом случае, и ничего писать ненадо.
Но можно и с чекбоксами сделать. Создать переменную хранящую активный (выбранный) чекбокс. При клике на чекбоксе проверять или это не он, если он - ничего не делаем, если не он - выполняем нужный код и присваиваем этот чекбокс переменной. Вот как я делал для пунктов меню (хотя там радиогруппу тоже вполне можно было организовать) Код:
The future is not a tablet with a 9" screen no more than the future was a 9" black & white screen in a box. It’s the paradigm that survives. (Kroc Camen)
Проверь себя! Онлайн тестирование | Мой блог Последний раз редактировалось mutabor; 30.01.2008 в 23:07. |
![]() |
![]() |
![]() |
#6 | ||
Участник клуба
Регистрация: 19.12.2007
Сообщений: 1,100
|
![]() Цитата:
Цитата:
Ставишь RadioGroup и не мучишь себе голову ....
На форуме: Помогаю за спасибо
ICQ\Skype: Это моё личное время ... ![]() |
||
![]() |
![]() |
![]() |
![]() |
||||
Тема | Автор | Раздел | Ответов | Последнее сообщение |
Форма остаётся видимой при Visible=False | Viteef | Общие вопросы Delphi | 10 | 23.02.2015 08:07 |
CheckBox | zzzzz | Компоненты Delphi | 6 | 22.07.2008 12:35 |
Form2.sSkinManager1.Action := false; | beegl | Компоненты Delphi | 2 | 17.06.2008 17:05 |
UpdateData(false) в цикле? вывод числа в Edit box | Иван36 | Помощь студентам | 5 | 31.03.2008 18:33 |
Panel1.Visible:=true | s-force | Компоненты Delphi | 7 | 30.08.2007 02:22 |