![]() |
Модераторы: Poseidon, Snowy, bems, MetalFan |
![]() ![]() ![]() |
|
Vas |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 830 Регистрация: 29.6.2005 Где: Stavropol region Репутация: 4 Всего: 28 |
Как определить одинаковое значение свойства у нескольких объектов?
Все знают, что в дельфи если выделить несколько объектов, то их общие свойства будут показаны в инспекторе объектов, а также их значения будут соответсвующим образом установлены, если все одинаковые, то ставится значение, иначе пустота. Пока мысль такая: Просто перебором в цикле строить массив с встречающимися свойствами и ставить флаг видимости если есть оно у всех перебранных или невидимости если хоть у одного объекта его нет, в конце перебора получим массив свойств и значения флагов visible - true/false. А вот как сравнивать значения? Обычным раавенством? Но как хранить текущее общее значение, ведь свойства могут содержать любые значения (ссылки, числа, строки), испоьзовать variant или выделять память и хранить указатели? Что-то как то с трудом себе представляю. Все-таки может есть какие-то более грамотные решения, а то какая то каша в голове. Ну или где почитать, ткните носом, поисковик отказывается меня понимать :( -------------------- И опыт, сын ошибок трудных, И гений, парадоксов друг, И случай, бог изобретатель. ... (А.С. Пушкин) |
|||
|
||||
DarkProg |
|
|||
![]() Законченный романтик ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 1784 Регистрация: 11.3.2009 Где: Земля Репутация: 2 Всего: 19 |
Просто пройдитесь по всем объектам искомого типа и выставьте соответствующее свойство.
Или я не понимаю что вы хотите ![]() -------------------- "И твоя голова всегда в ответе за то куда сядет твой зад..." "Я студент - скажите с какого я ВУЗа..." ![]() ![]() ![]() |
|||
|
||||
Vas |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 830 Регистрация: 29.6.2005 Где: Stavropol region Репутация: 4 Всего: 28 |
Именно так, причем при одинаковых значениях свойства - это значение должно быть в редакторе, а при разных значениях должна быть пустота. Пример: на форме Label и Button свойство Caption у обоих 'Бла-бла-бла', а свойство Visible у одного True у второго False. Так вот при одноврменном выделении обоих объектов в испекторе должны отображаться только свойства, присутствующие у обоих объектов, а значение соответсвенно быть выставлены для Caption 'Бла-бла-бла', а для Visible - пустое значение. Это сообщение отредактировал(а) Vas - 13.2.2013, 15:03 -------------------- И опыт, сын ошибок трудных, И гений, парадоксов друг, И случай, бог изобретатель. ... (А.С. Пушкин) |
|||
|
||||
DarkProg |
|
|||
![]() Законченный романтик ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 1784 Регистрация: 11.3.2009 Где: Земля Репутация: 2 Всего: 19 |
Ну так просто же можно
![]() 1-й выделенный забивает редактор своими значениями, потом выделяете второй и опять пытаетесь заполнить редактор, только где-то ставите флаг, что есть один выделенный(или массив отдельный бьёте содержащий выделенные в текущий момент элементы), проходитесь по редактору и если есть отличные значения, то вместо значения пишите пустоту и т.д. по всем свойствам, выделяете третий и следующие там смотрите есть ли разница, а если пустота вообще игнорируете свойство и всё ![]() Вроде бы я теперь правильно понял ![]() -------------------- "И твоя голова всегда в ответе за то куда сядет твой зад..." "Я студент - скажите с какого я ВУЗа..." ![]() ![]() ![]() |
|||
|
||||
Akella |
|
|||
![]() Творец ![]() ![]() ![]() ![]() Профиль Группа: Модератор Сообщений: 18485 Регистрация: 14.5.2003 Где: Корусант Репутация: 36 Всего: 329 |
Нужно во время исполнения программы показывать инспектор объектов? Может взять готовое решение, например, от Greatis.
|
|||
|
||||
Vas |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 830 Регистрация: 29.6.2005 Где: Stavropol region Репутация: 4 Всего: 28 |
Почти, но больше нужно не готовое решение, а именно свое, под свои нужды, хотел посмотреть Greatis, скачал, а исходников нет :( Понял правильно, но еще нужно показывать только одинаковые свойства. Видимо нет путевых решений, окромя перебора, ну ниче буду перебирать . -------------------- И опыт, сын ошибок трудных, И гений, парадоксов друг, И случай, бог изобретатель. ... (А.С. Пушкин) |
|||
|
||||
gesper |
|
|||
![]() "Shарфик" ![]() Профиль Группа: Участник Сообщений: 183 Регистрация: 23.2.2005 Репутация: 1 Всего: 2 |
В инспекторе свойств отображаются только имеющиеся у обоих параметры.
Можно разбить на отдельные фунции. 1. Если все объекты относятся к Классу родительскому, то включаем функцию показа свойств этого класса 2. Если и дальше по уровням.. какие совпадения в родительских классах. Если все относятся к одному классу, то включаем функцию загрузки свойств конкретно этого класса. Еще можно сделать в отдельном файлике описание свойств у каждого типа элементов и дальше проверкой наличия свойств в каждом объекте выводить их. Это сообщение отредактировал(а) gesper - 14.2.2013, 13:25 --------------------
...И приколется обломившийся и oбломится приколовшийся... |
|||
|
||||
Vas |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 830 Регистрация: 29.6.2005 Где: Stavropol region Репутация: 4 Всего: 28 |
В принципе алгоритм немного набросал.
1. Берем выделенный объект и грузим его свойства и их значения в массив. 2. Далее запускаем цикл со следующего выделенного. 3. Перебираем свойства 4. Если свойство объекта входит в массив, то берем его значение. 5. Если значение свойства не пустое, то сравниваем, одинаковые - запоминаем, разные - обнуляем. Ну собственно и все за исключением нюансов. В принципе с учетом того, что пользователь не сможет выделить сразу много объектов (тысяч 10), то думаю что на парсинг много времени уходить не будет. -------------------- И опыт, сын ошибок трудных, И гений, парадоксов друг, И случай, бог изобретатель. ... (А.С. Пушкин) |
|||
|
||||
![]() ![]() ![]() |
Правила форума "Delphi: Общие вопросы" | |
|
Запрещается! 1. Публиковать ссылки на вскрытые компоненты 2. Обсуждать взлом компонентов и делиться вскрытыми компонентами
Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, Snowy, MetalFan, bems, Poseidon, Rrader. |
1 Пользователей читают эту тему (1 Гостей и 0 Скрытых Пользователей) | |
0 Пользователей: | |
« Предыдущая тема | Delphi: Общие вопросы | Следующая тема » |
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |