![]() |
|
|
Регистрация | << Правила форума >> | FAQ | Пользователи | Календарь | Поиск | Сообщения за сегодня | Все разделы прочитаны |
![]() |
|
Опции темы | Поиск в этой теме | Опции просмотра |
#1
|
|||
|
|||
![]() Здравствуйте!
Пара вопросов по RadioButton. 1. Есть ли автосвязанные батоны, когда добавив хоть 100 штук на форму - автоматически контролируется, что выбранным может быть только один батон? 2. Если нужно не только выбрать лишь один из вариантов, но и скрыть все неактуальные для данного варианта поля ввода - есть ли что-то более автоматизированное, чем радио батоны? (типа вкладок с ограничением выбора одной вкладки, или тп) 3. Как наиболее кратко написать аналогичное действие на радио батон для скрытия полей? Я пишу так, но утомляет кол-вом строк EditField1.Enabled := rb1.Checked; EditField2.Enabled := rb1.Checked; EditField3.Enabled := rb1.Checked; Можно ли это как-то в одну строку? типа [EditField1,EditField2,EditField3].Enabled := rb1.Checked; ? 4. Также что-то не могу понять как написать обращение boolean переменной? То есть если "a :=true", как "b" присвоить значение обратное "a", то есть false в одну строку? Последний раз редактировалось delphicoding, 21.07.2011 в 17:46. |
#2
|
|||
|
|||
![]() 1. Если RadioButton на одном и том же родителе то ты сможешь использовать только один.
2. Не выехал, но предполагаю что в стандартных средсвах нет. 3. Цыкл с использованием FindComponent 4. Код:
|
#3
|
|||
|
|||
![]() 1. Ок
2. ![]() 3. Не катит, тк объекты на форме с разным названием, просто в примере написал с разными цифрами. Нужно именно перечисление через запятую или типа того. Может массив создать? Но хотелось бы проще... 4. Ой как страшно. А в одно действие в Delphi никак что-ли?!?!?! |
#4
|
|||
|
|||
![]() 2. Заводишь массив, в котором описываешь варианты и соответсвующие связи. Потом у еомпонентов расставляешь св-во Tag. Ну а дальше при выборе варианта в соотв. со свойством Tag и вышеописанной таблицы просто скрываешь все ненужные компоненты (цикл по всем компонентам).
3. Если радиокнопка и соов. Edit имеют одинаковую схему названия, то соотв. можно на основе одного название сконструировать другой и потом findComponent. Еще есть TActionList. Может получится его задействовать. 4. Код:
|
#5
|
|||
|
|||
![]() 2. Ну это да, массив... думал может можно побыстрее как-то одним действим через запятую. Типа "SetAll (Field1,Filed2,Field3+[.Enable]) := False", жалко, что нет такой конструкции
![]() 3. FindComponent да, но названия разные, лучше назвать нормально, чем потом ковыряться пытаясь понять что обозначает название Tlabel100500. TActionList похоже не подходит, да и разницы видимо нет со списком/массивом в коде, а поскольку это компонент формы - код будет хуже читаться. 4. Круто, я знал, что такое должно быть! Спасибо. ![]() |
#6
|
|||
|
|||
![]() Кстати в продолжение темы со скрытием объектов, подскажите, пожалуйста, для ряда объектов, например TDBEdit, TJvDBSpinEdit, TJvDBComboBox, идр, не подходит строка вида:
TDBEdit1.Value=null; Как правильно очищать такие объекты от значений? |
#7
|
||||
|
||||
![]() Цитата:
Зачот, парень! ![]() — Как тебя понимать? — Понимать меня не обязательно. Обязательно меня любить и кормить вовремя. На Delphi, увы, больше не программирую. Рекомендуемая литература по программированию |
#8
|
||||
|
||||
![]() Цитата:
Je venus de nulle part 55.026263 с.ш., 73.397636 в.д. |
#9
|
|||||||||
|
|||||||||
![]() Цитата:
2. Ну, например, можно изголяться так: Код:
Код:
3. Вот тебе пара названий: Код:
Соотв, можно написать что-то вроде этого: Код:
И присвоить его всем кнопкам. Соотв. при смене состояния кнопка найдет соотв. компонент и сделает все что нужно. |
#10
|
|||
|
|||
![]() Большое спасибо за ответы, про массивы хорошо объяснили!
Значит подходит только массив или FindComponent или ComponentCount если имена однотипные или объекты расположены подряд, но в данном случае имена разные и одинаково называть обрабатываемые множеством процедур поля я категорически против, а ComponentCount правда элегантное решение, только немного стрёмное, тк в случае добавления/удаления/передвижения объектов всё можно пойти вкривь. Хотя вопрос был именно "есть ли возможность/функция позволяющая сделать назначение параметра списку объектов в одну строку вида : "SetAll (Field1,Filed2,Field3+[.Enable]) := False". Видимо в Delphi такого нет. Кстати в продолжение темы со скрытием объектов, подскажите, пожалуйста, для ряда объектов, например TDBEdit, TJvDBSpinEdit, TJvDBComboBox, идр, не подходит строка вида: TDBEdit1.Value=null; Как правильно и желательно универсально очищать объекты текстового ввода и выпадающие списки от вписанных или выбранных значений? |
#11
|
|||
|
|||
![]() Массив тоже млять не прокатил, тк у некоторых полей очищение = Clear, а у других очищение = ClearValue.. Козлы, млять, не могут стандарт сделать.
![]() |
#12
|
|||
|
|||
![]() Ответ был намного проще. Нужно просто группировать поля на одну Tpanel - которую можно сделать недоступной или вообще скрыть. Всё действие в одну строку - Tpanel.Visible := False.
Но это только блокирует (Enable) или скрывает (Visible), но не очищает поля... ![]() Может есть функция "очистить все поля на панели Tpanel" ? Или типа того? Последний раз редактировалось delphicoding, 22.07.2011 в 13:35. |
#13
|
||||
|
||||
![]() Цитата:
Je venus de nulle part 55.026263 с.ш., 73.397636 в.д. |
#14
|
|||
|
|||
![]() Цитата:
Цитата:
так связывается строка в ini с тремя свойствами PHP код:
Цитата:
|
#15
|
|||
|
|||
![]() angvelem
Может и нормально. В общем тоже хорошее решение. Хотя панель ещё проще - вообще ничего прописываь не нужно. ![]() ![]() Жалко, только, что если параметр Enebled везде идентичен, то параметр Clear увы различается у разных полей (бывает ClearValue, итд) - поэтому обработка группы/массива получается только по параметру Visible / Enabled, а очищать приходится по одному... ![]() Pyro Цитата:
Не понял - без ini это работать вроде как не должно? Последний раз редактировалось delphicoding, 23.07.2011 в 16:21. |