Справочник функций

Ваш аккаунт

Войти через: 
Забыли пароль?
Регистрация
Информацию о новых материалах можно получать и без регистрации:

Почтовая рассылка

Подписчиков: -1
Последний выпуск: 19.06.2015

Создание диалога с опциями

40K
13 июля 2009 года
MixerLosev
26 / / 13.07.2009
Имеется некотрая разветвленная структура данных, назовем GameOptions. Хочу сделать диалог Options как в VS 2005.
Т.е. будет tree view, при клике на итем которого будет динамически формироваться список контролов, раскидается по форме и заполниться соответствующими данными.
Кто-нибудь делал что-то подобное? Или знает где можно посмотреть описание как это делается?
535
13 июля 2009 года
Нездешний
537 / / 17.01.2008
И в чем, собственно, проблема? В обработке клика, в динамическом создании контрола или еще в чем-то?

Проще, кстати, не создавать контролы динамически, а разместить их на другом контроле (скажем, в CBuider это Panel), который можно скрывать/показывать по клику.

Или используйте вкладки
40K
13 июля 2009 года
MixerLosev
26 / / 13.07.2009
1)Вкладки - будет не очень удобно (будет где-то 30 страниц)
2)Проблема - как сделать все это пороще.
3)Сейчас предполагаю что будет работать так.

В структуре GameOptions реализован метод ShowDialog.
При его вызове появляется форма. Форма уже готовая. На ней будут 4 статических компонента: OK, Cancel, TreeView, Label с Description.
При клике на итем формируется страница - метод CreateOptionLevel(string name) - где name имя страницы - соотвествует названию итема в TreeView.
Внутри CreateOptionLevel будет вызов FillLevel() в котором заполним контолоы страницы соотвествующими данными.

При создании новой страницы непонятно как сохранить изменения сделанные в контролах предыдущей страницы. Как определить какая страница была до этого?
Вообще хочется как упростить архитектуру. Не очень понятно и удобно для изменения. Есть какие-нибудь предложения?
Как я понимаю это более-менее стандартная задача.
288
13 июля 2009 года
nikitozz
1.2K / / 09.03.2007
На чем пишите? Что используете?
40K
13 июля 2009 года
MixerLosev
26 / / 13.07.2009
Пишу на C#.
Появилась идея сделать так, чтобы CreateOptionLevel возвращала Panel с уже настроенными контролами. Эту панель кидаю на форме на соответствующий клик на три вайве.
Соотвественно упрощается идея сохранения изменеий. Позову SaveOptions(string name, Panel panelOptions) - где name - имя страницы опций, panelOptions - панель на которой все это лежит.
Ваши мысли?
288
13 июля 2009 года
nikitozz
1.2K / / 09.03.2007
Цитата: MixerLosev
Пишу на C#.
Появилась идея сделать так, чтобы CreateOptionLevel возвращала Panel с уже настроенными контролами. Эту панель кидаю на форме на соответствующий клик на три вайве.
Соотвественно упрощается идея сохранения изменеий. Позову SaveOptions(string name, Panel panelOptions) - где name - имя страницы опций, panelOptions - панель на которой все это лежит.
Ваши мысли?



В принципе почти тоже самое вам и предлагал Нездешний.

Цитата: MixerLosev
клик на три вайве.



Долго втыкал, где вы собираетесь кликать :)

40K
13 июля 2009 года
MixerLosev
26 / / 13.07.2009
Ну да, типа того.
Не встречал ли кто где - нибудь подобную реализацию.
Хочется посмотреть исходники(можно на java, C++, Pascal, C#).
Киньте ссылку.
241
14 июля 2009 года
Sanila_san
1.6K / / 07.06.2005
Друг мой, а вы уверены, что при наличии трёх десятков вкладок или страниц пользователь не запутается, где что настраивается?
40K
14 июля 2009 года
MixerLosev
26 / / 13.07.2009
Предложите как сделать проще.
Я взял за за основу диалог Tools | Options в VS2005.
535
14 июля 2009 года
Нездешний
537 / / 17.01.2008
Темной июльской ночью, в новолуние, выйдем из дому ни с кем не разговаривая. Пойдем строго на восток три перекрестка и молча купим пиво "Программистское" в ближайшем ларьке, суя мятую банкноту и тыкая пальцем в бутылку за стеклом. Повернемся три раза вокруг себя через плечо правое и плюнем на след себе. Да не попадем на гопников окаянных, ибо прервется обряд сей выявления сути треда!

Придя домой, да громыхая дверию подъездной, дабы духов злых распугати, прошествуем к алтарю с электронным демоном в жужжащей темнице. Оседлаем демона, да проследуем на сайт какой, бесовским делом - гаданием промышляющий.

Вопросим строго у демона: "Предложите как сделать проще. Я взял за за основу диалог Tools | Options в VS2005!" Созданье тупое может в ответ тебе ум смутить вопросом: "А что же сделать хотите, господин. Да цель кака же?!" Не поддадимся в заблужденье явному введенью и рявкнем на него грозно: "Отвечай сей же миг! Ишь чего удумал, увиливать!"

И выдаст расклад нам покорно железка:
Что было? - Иди туда да сваяй незнамо что заданье дадено
Сей миг что? - Возводит вдохновенно проектер три по десять раз страничек разных, да свойствами заполненных, дабы людям сделать благодеянье великое - под себя чтоб каждый настроить мог
Что будет? - Не оценят скоты неблагодарные проектера труды великие, поломают ноги в тьме свойств и страничек и предадут забвенью сей продукт программный
Чем сердце успокоится? - Разраба сменить бы надобно иль проектера

Да отпустим же на том демона на покой, дабы отдохнула железка
40K
14 июля 2009 года
MixerLosev
26 / / 13.07.2009
Уважаемый Нездешний, все что ты написал крайне познавательно.
Но все- таки если есть какие-то мысли и идеи, то пиши попроще.

Сообственно по теме(может кому пригодиться):
сделал интерфейс и и какждая группа опций реализует этот интерфейс.
interface IOptionsVisualizer
{
Panel CreateOptionsLevel(string name);
IOptionsVisualizer GetChangesFromOptionsLevel(Panel panel)
}
При переходе на другую страницу опций сначало сохраняю изменения с предыдущей страницы, а потом создаю новую. Если нажали ок - изменения применяютяс.
Реклама на сайте | Обмен ссылками | Ссылки | Экспорт (RSS) | Контакты
Добавить статью | Добавить исходник | Добавить хостинг-провайдера | Добавить сайт в каталог