| Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате |
| Форум программистов > Delphi: Для новичков > Массовое изменение свойств |
| Автор: lamravas 7.7.2008, 14:16 | ||
| Вот у меня нескольлько компонентов у них есть общее свойство которое я хочу менять в процессе работы приложения. вот пример
проблем бы не было только вот компонентов стало неприлично много , хочу узнать если более изящный способ.???? |
| Автор: Alexeis 7.7.2008, 14:37 |
| lamravas, занести компоненты в массив и менять в цикле. |
| Автор: lamravas 7.7.2008, 14:39 |
нельзя небольшой примерчик |
| Автор: Alexeis 7.7.2008, 15:25 | ||
Если у компонентов есть общий предок, то дело упрощается. Добавлено через 5 минут и 39 секунд Кстати можно еще использовать модуль TypInfo и устанавливать свойство при помощи SetPropValue не возясь с типами, менять просто по строковому имени. Это будет еще изящней, но намного медленнее. |
| Автор: lamravas 8.7.2008, 09:41 | ||||
блин проблемка еще в том что это форма создаёться
Дельфи постоянно выкидывает ошибку, на первой же строке присвоения нового свойства
что делать как присвоить новое свойство компоненту на другой форме???? |
| Автор: lamravas 8.7.2008, 10:55 | ||||||
Ну вот у меня к примеру форма1 на ней кнопа при нажатиии выполняеться вызов формы2, формы-ввода, след. образом
на этой форме2 ввода (которая создаёться ) присутствуют компоненты связанные с таблицией находящейся на форме1. На форме 1 присутствует pagecontrol-компонет при изменении которого у компонентов на форме 2 следует изменять свойства компонентов(благо оно одно) это ДАТАСОУРС. Проблема еще в том что датасоурсы находятся на форме1 это на онкрейт формы2(ввода)
итак имеем Форма1 (pagecontrol, cxgrid, button, Датасоурсы) Форма2 (компоненты связанные с таблице на форме1) |
| Автор: Alexeis 8.7.2008, 11:30 |
| Гм.. я не силен в СУБД, но мне кажеться что тут что-то со структурой не в порядке. Можно в конечную форму кинуть TSQL или как там его и использовать как источник данных. В общем так чтобы связывался только 1 компонент, а все остальные связывались через него. |
| Автор: lamravas 8.7.2008, 12:06 |
| Да нет неважно субд это или еще чтото Просто ответьте такое возможно или нет При вызове формы поменять значение свойства1 (к примеру) компонентов находящихся на вызванной форме, на значение находящиеся на первоначальной форме с которого осуществляеться вызов??? Вот и всё |
| Автор: Alexeis 8.7.2008, 12:21 |
| lamravas, это неверно с точки зрения проектирование системы. Жесткая связь неотказоустойчиая и негибкая. Лучше отослать сообщение или передать объект, который на месте все настроит сам. |
| Автор: lamravas 8.7.2008, 12:29 |
| Alexeis, Т.е. если я правильно понял то мне надо свойство, передаваемое компонентам на форме2, послать сначала с формы1 на форму2, А уже в дальнейшем изменять свойства компонентов на полученные? |
| Автор: Alexeis 8.7.2008, 12:42 | ||
Примерно, так. Только лучше это сделать не по свойствам, а ввиде одной или 2х логически оформленных программных единиц, ввиде передачи объекта или интерфейса. Почитайте книжку по патернам, это здорово облегчит проектирование. |
| Автор: pseud 14.7.2008, 10:14 | ||||||||
по-моему, ты страдаешь херней. обращаешься к свойствам компонентов, лежаших на несуществующей (удаленной тобой же free) форме. попробуй так:
Добавлено через 2 минуты и 6 секунд смысла, конечно, в этом коде больше не стало. но он рабочий. и это уже пол-дела. |