Форум: "Основная";
Поиск по всему сайту: delphimaster.net;
Текущий архив: 2002.02.21;
Скачать: [xml.tar.bz2];




Вниз

Множество настроек - как организовать? 


VovanV   (2002-02-03 23:55) [0]

Пишу некую программку. В ней предусмотрено большое количество различных настроек.

Вопрос: Как организовать их просмотр, изменение?

Обычно делают так:
Некое специально окно - настройки.
Окно разделено на две части - левую и правую.
В левой части - список разделов.

При нажатии на какой-то раздел в правой части окна появляются настройки которые касаются только этого раздела.

Реализация:
Воплощение я представляю так: Левая часть(список разделов настроек) - ListBox
При выборе какого-либо раздела. Уничтожается все, что было в правой части. И там создаются(в коде программы) всякие новые TEdit, TComboBox и т.п. в которых настройки касающиеся только этого раздела.

Что мне в этом не нравится: При большом количестве настроек довольно муторно постоянно создавать новые TEdit, TComboBox и т.п. А потом их уничтожать.

Может как-то по другому лучше это реализовать? Компонент? Кто как делает подобные вещи? Каков алгоритм?



Виктор Щербаков   (2002-02-04 09:00) [1]

TPageControl



Юрий Федоров   (2002-02-04 10:02) [2]

Можно не уничтожать и создавать, а накидать панелей (или фреймов), из которых только одна visible = true, а слева на мой взгляд лучше TTreeView.
Я писал фреймы от общего предка, в котором было 2 абстрактных метода, типа LoadParams и SaveParams (загрузка\сохранение в реестр\ини-файл)



VovanV   (2002-02-04 12:48) [3]

а если самому создавать и уничтожать, то программа будет меньше места занимать? Или может более оптимальный код будет?



Юрий Федоров   (2002-02-04 13:09) [4]

Кода будет больше, а памяти занимать меньше



VovanV   (2002-02-04 16:37) [5]

А объем дискового пространства?

Вообще, имеет ли смысл возится с тем, чтобы в коде создавать все элементы? Кнопки, TEdit и т.п.?



KSergey   (2002-02-04 16:56) [6]

>Вообще, имеет ли смысл возится с тем, чтобы в коде создавать все элементы? Кнопки, TEdit и т.п.?

А зачем вам тогда собственно Delphi с его огромными библиотеками? Возьмите и слепипе все это без использования каких-либо библиотек (хоть и на Delphi, но без использования VCL, как модно говорить "используя только WinAPI"). И места и памяти займет минимум.

Вот только зачем?



MaratFromTomsk   (2002-02-05 08:03) [7]

На мой взгляд, правильно делать страницы свойств.
а в них отрисовывать то что надо
ну примерно так как это в Дельфе сделано
свойства среды, редактора ...

я считаю неправильным использование каких либо общих редакторов
типа Object Inspector для выполнения этой работы.
если ты не знаешь какие свойства у тебя д.б.
это означает что ты не знаешь какую программу ты пишешь ...



Ura   (2002-02-05 11:06) [8]

Цель: создать неизменяемый код программы, а изменять извне только список настроек?
Все равно придеться внутри хранить объект настроек!!!
Предложение такое...
Каждый класс настроек т.е. название класса настроек + название каждой настройки + тип переменной каждой настройки + форма для их редактирования = DLL
Алгоритм такой:
1. Сканируешь список DLL с настройками.
2. В список слева занисишь название класса настроек (из DLL)+ адрес на функцию вызова формы для редактирования
3. Создаешь структуру взяв из DLL название настроек и их тип.
4. Передаешь в DLL ссылку ко компонент правой панели в который будем встраивать форму для редактирования настроек + еще кое что.
5. При активизации настройки
а) уничтожаешь форму которая сейчас в правой панели
б) создаешь форму для данной настройки
в) либо она сома дочится (адрес передали то), либо дочишь ее сам
г) отображаешь форму...

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




Форум: "Основная";
Поиск по всему сайту: delphimaster.net;
Текущий архив: 2002.02.21;
Скачать: [xml.tar.bz2];




Наверх





Память: 0.74 MB
Время: 0.015 c
1-66607           oomneeq               2002-02-04 18:21  2002.02.21  
TFieldDef через TField ?


3-66484           EternalWonderer       2002-01-23 20:48  2002.02.21  
Получение списка алиасов Net8


14-66657          Agent Smith           2002-01-01 00:13  2002.02.21  
Защита исходного кода.


1-66543           M@XIDROM              2002-02-03 15:43  2002.02.21  
Jpeg->StringGrid


1-66568           ray_wagner            2002-02-05 15:45  2002.02.21  
Эмуляция работы компа :-)