Форум: "Основная";
Текущий архив: 2002.04.04;
Скачать: [xml.tar.bz2];
ВнизКак грамотно организовать проверку условия? Найти похожие ветки
← →
MaXie (2002-03-25 09:50) [0]Есть панель RadioGroup1, на которой расположены три зависимых переключателя RadioButton1..3. С последним переключателем RadioButton3 связано поле ввода Edit1. Если RadioButton3.Chacked = True, поле ввода Edit1 активно. Иначе - Edit1.Enable := False.
Теперь вопрос: если мы кликаем на RadioButton1, то в событии OnClick должны указать метод или процедуру, который(-ая) сделает неактивным поле ввода Edit1. В свою очередь, в событии OnClick для переключателя RadioButton2 мы также обязаны указать ту же самую процедуру по "деактивации" поля Edit1. А если переключателей сотня-другая? То в каждой указывать Edit1.Enable := False?
Знаю, что задача тривиальная, но все же хотелось бы получить совет, как сделать все это проще и грамотнее, так ", чтобы огород не городить"?
← →
gek (2002-03-25 09:59) [1]Edit1.Enable := RadioGroup1.ItemIndex = 1;// нужная цифра
← →
MBo (2002-03-25 10:04) [2]RadioButton -ы должны быть Item-ами RadioGroup
OnClick тогда один, и в нем
Edit1.Enable := RadioGroup1.ItemIndex=2;
← →
MaXie (2002-03-25 11:43) [3]Моя ошибка - не правильно сформулировал вопрос!
Как быть если RadioButton-ы расположены на панели GroupBox? ... или же, следуя ответам на поставленный вопрос, когда RadioButton-ы не являются Item-ами панели RadioGroup?
P.S. Не являются Item-ами в силу известных причин: невозможностью форматирования, расположения в произвольном месте и др.
← →
Alx2 (2002-03-25 11:47) [4]Можно попробовать ActionList и в OnUpdate проверять значения нужных RadioButtonов и выставлять активность других контролов.
← →
MaXie (2002-03-25 11:52) [5]> Alex2
... значит все таки в событии OnClick каждого RadioButton указывать одну и ту же процедуру?
Или, если это не затруднит, чуть по-подробней, как это можно реализовать.
← →
Виктор Щербаков (2002-03-25 11:54) [6]А что мешает указать один обработчик для всех RadioButton-ов.
А в нем проверять, например, свойство Name компонента, для которого этот обработчик был вызван, и в зависимости от его значения устанавливать св-во TEdit.
← →
Alx2 (2002-03-25 12:07) [7]В черновую вышло вот что:
В ActionList добавляем новый Action1, связываем его с RadioButton1 и для Action1 о указываем метод OnExecute:
procedure TForm1.Action1Execute(Sender: TObject);
begin
Edit1.Enabled := RadioButton1.Checked;
end;
А для ActionList такой же OnUpdate:
procedure TForm1.ActionList1Update(Action: TBasicAction;
var Handled: Boolean);
begin
Edit1.Enabled := RadioButton1.Checked;
end;
← →
MaXie (2002-03-25 12:35) [8]> Виктор Щербаков.
Можно чуть по-подробней. Не совсем ясна суть Вашего предложения.
> Alex2
Не работает! :((( Такой подход обеспечивает реакцию только при нажатии на переключатель RadioButton1. Все же остальные в этом случае остаются бездейственными, т.е. нам необходимо, чтобы клик по RadioButton1 делал активным Edit1, а клик на любой другой делал его, соответственно, неактивным.
Выходит так, что клик на RadioButton1 меняет свойство Enabled элемента Edit1 и на этом все заканчивается. Клики на любые другие переключатели оставляют Edit1 в прежнем, доступном (активном) состоянии. :((( Может я что ни того сделал?
← →
Виктор Щербаков (2002-03-25 12:40) [9]MaXie © (25.03.02 12:35)
Один обработчик для всех RadioButton-ов:
procedure TForm1.RadioButton1Click(Sender: TObject);
begin
if (Sender as TControl).Name = "RadioButton1" then
Edit1.Enabled := true else Edit1.Enabled := false;
end;
← →
Alx2 (2002-03-25 12:43) [10]>MaXie © (25.03.02 12:35)
>Можно чуть по-подробней.
>Не совсем ясна суть Вашего предложения.
Делаем OnClick для RadioButton1 с
кодом Edit1.Enabled := RadioButton1.Checked;
Для всех остальных onClick делаем равным RadioButton1Click.
>Не работает! :((( Такой подход обеспечивает ...
У меня работает.
Делал так:
Кидаю на форму ActionList1. Двойной щелчок - открывается редактор Actionов. Добавляю новый Action1. Делаю ему событие OnExecute (см выше). В свойстве Action у RadioButton1 ставлю Action1. Для ActionList1 делаю событие OnUpdate (см. выше)
← →
MaXie (2002-03-25 12:57) [11]>Alex2
Ну ты ПРОФи!
Вместо того, чтобы указать Action1 в свойстве Action компонента RadioButton1, указал его в событии OnClick - мой баг! Все работает на "ура"! Приношу свои извинения за дискредитацию!
← →
Alx2 (2002-03-25 13:04) [12]>MaXie © (25.03.02 12:57
Но я бы делал общий обработчик. А Action, обычно, - для синхронизации всего интерфейса вцелом. А то "из пушки по воробьям"... :))
← →
Fay (2002-03-25 13:58) [13]2Alx2
Присоединяюсь 8)
Страницы: 1 вся ветка
Форум: "Основная";
Текущий архив: 2002.04.04;
Скачать: [xml.tar.bz2];
Память: 0.47 MB
Время: 0.005 c