Поиск:

Ответ в темуСоздание новой темы Создание опроса
> синхронизация контролов диалогов, не хочу изобретать велосипед... 
:(
    Опции темы
zkv
Дата 26.9.2007, 16:54 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата



****


Профиль
Группа: Участник Клуба
Сообщений: 2133
Регистрация: 23.7.2006
Где: Санкт-Петербург

Репутация: 16
Всего: 92



Нередко приходится дублировать некоторые элементы управления в программе.
К примеру у меня есть некоторое свойство объекта, управляется оно слайдером.
сейчас мне потребовалось продублировать этот слайдер в другом месте программы, те создать еще один слайдер, который будет управлять этим же свойством объекта.
Необходимо теперь эти два слайдера синхронизировать - изменение одного из них должно отражаться на другом.
Те мне нужно создать что-то типа ссылки в с++, но только гуишной  smile 

Стало интересно, может существуют стандартные методы (типа: m_ctrlSome.SynchronizeWith( m_ctrlAnother ) ) или приемы, для организации сей фишки?
PM MAIL   Вверх
Andrey44
Дата 27.9.2007, 08:42 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Завсегдатай
Сообщений: 1501
Регистрация: 4.12.2006
Где: На работе

Репутация: 12
Всего: 26



При движении одного слайдера делаешь другому  two.SetPos(one.GetPos());  smile 
И всех делов.


--------------------
????? ??, ??????? ?????.  smile 
PM MAIL WWW ICQ   Вверх
zkv
Дата 27.9.2007, 09:57 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата



****


Профиль
Группа: Участник Клуба
Сообщений: 2133
Регистрация: 23.7.2006
Где: Санкт-Петербург

Репутация: 16
Всего: 92



Цитата(Andrey44 @  27.9.2007,  08:42 Найти цитируемый пост)
При движении одного слайдера делаешь другому  two.SetPos(one.GetPos()); 

это понятно, но это велосипед, хотел узнать, существует ли унифицированный подход...
PM MAIL   Вверх
Andrey44
Дата 27.9.2007, 12:05 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Завсегдатай
Сообщений: 1501
Регистрация: 4.12.2006
Где: На работе

Репутация: 12
Всего: 26



А интересно, можно-ли одну переменную связать с двумя контролами? smile
Сейчас не могу попробовать. Но интересно! 

Это сообщение отредактировал(а) Andrey44 - 27.9.2007, 12:06


--------------------
????? ??, ??????? ?????.  smile 
PM MAIL WWW ICQ   Вверх
Coocky
Дата 28.9.2007, 13:36 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


GUI гуру
****


Профиль
Группа: Участник Клуба
Сообщений: 2879
Регистрация: 16.2.2004
Где: Украина. Запорожь е

Репутация: 25
Всего: 62



Цитата(zkv @  27.9.2007,  09:57 Найти цитируемый пост)
это понятно, но это велосипед, хотел узнать, существует ли унифицированный подход...

Не понял,что ты хочешь толком,но кроме срздание промежуточного класса,в котором хранятся данные об изменении свойств обьекта,которых управляется слайдером,не вижу.
Пересечений не будет,если организуешь все через сообщения.



--------------------
Верю в смерть после жизни, в любовь после секса ,в крем после бритья smile        
PM ICQ   Вверх
zkv
Дата 29.9.2007, 15:49 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата



****


Профиль
Группа: Участник Клуба
Сообщений: 2133
Регистрация: 23.7.2006
Где: Санкт-Петербург

Репутация: 16
Всего: 92



Цитата(Coocky @  28.9.2007,  13:36 Найти цитируемый пост)
Не понял,что ты хочешь толком

знаешь ссылку в с++?
тоже самое хочу, изменяю один объект - абсолютно также одновременно изменяется другой.
Вот но только для контролов. smile

Цитата(Coocky @  28.9.2007,  13:36 Найти цитируемый пост)
кроме срздание промежуточного класса,в котором хранятся данные об изменении свойств обьекта,которых управляется слайдером,не вижу.
Пересечений не будет,если организуешь все через сообщения.

 smile а тут уже я не понял

Вообщем то задачу конечно решил, но мне не нравится решение  smile 
Если придумаю что-нить красивое, отпишусь.

Это сообщение отредактировал(а) zkv - 29.9.2007, 16:05
PM MAIL   Вверх
Любитель
Дата 29.9.2007, 23:55 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Программист-романтик
****


Профиль
Группа: Комодератор
Сообщений: 3645
Регистрация: 21.5.2005
Где: Воронеж

Репутация: 7
Всего: 92



Цитата(zkv @  29.9.2007,  15:49 Найти цитируемый пост)
знаешь ссылку в с++?тоже самое хочу, изменяю один объект - абсолютно также одновременно изменяется другой

Насколько также? Положение всё-таки, думаю, будет разным smile Если речь про значения (того же слайдера), то в WinAPI/MFC стандартных средств нету. Просто изменять значение другого слайдера при изменении первого и наоборот. И, конечно, не забыть проверку, что зачение второго слайдера уже возможно совпадает с первым. Чтоб не было вечной рекурсии smile

[offtop]
А вообще, концепция сигнал/слотов (при встраивании соответствующей поддержке со стороны ГУИ-либы или написании своих обёрток) в данном случае очен красива и удачна.
[/offtop]


--------------------
PM MAIL ICQ Skype   Вверх
Earnest
Дата 30.9.2007, 11:26 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Экс. модератор
Сообщений: 5962
Регистрация: 17.6.2005
Где: Рязань

Репутация: 87
Всего: 183



Если слайдеры находяться не в модальных диалогах, а на панелях, то сделай им одинаковые ид-ры и напиши метод OnUpdateCmdUI где-нибудь в таком классе, который точно получит управление - документе, виде, фрейме, ... где логичнее в общем.
Далее, эти слайдеры должны управлять каким-то глобально (или через документ) доступным свойством. И неважно, кто его установит - один из слайдеров или кто-то третий. 
Можно даже написать для этого конкретного слайдера свой класс и повесить OnUpdateCmdUI ему на REFLECT. И тогда хоть 10 слайдеров заведи - все будут работать как один.

Это примерно тот же механизм, который применяется для обновления кнопок, пунктов меню и прочего...


--------------------
...
PM   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | Visual C++/MFC/WTL | Следующая тема »


 




[ Время генерации скрипта: 0.0757 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.