Форум программистов «Весельчак У»
  *
Добро пожаловать, Гость. Пожалуйста, войдите или зарегистрируйтесь.
Вам не пришло письмо с кодом активации?

  • Рекомендуем проверить настройки временной зоны в вашем профиле (страница "Внешний вид форума", пункт "Часовой пояс:").
  • У нас больше нет рассылок. Если вам приходят письма от наших бывших рассылок mail.ru и subscribe.ru, то знайте, что это не мы рассылаем.
   Начало  
Наши сайты
Помощь Поиск Календарь Почта Войти Регистрация  
 
Страниц: [1]   Вниз
  Печать  
Автор Тема: Настройка параметров  (Прочитано 33920 раз)
0 Пользователей и 1 Гость смотрят эту тему.
Igel
Опытный

ru
Offline Offline
Пол: Мужской

« : 20-06-2003 11:58 » 

Добрый время суток!!

Проблема у меня. Сразу скажу, новичек в Дельфи, отсюда и непонимание.

В общем, для созданной системы делаю программку настройки параметров. Параметры читаются и сохраняются в INI-файле.
Структура параметров:
Общие параметры:
  - Цвет1
  - Цвет2
  -...
  - Толщины...
Параметры подключенных модулей системы:
Модуль ALL
  - слой 1
  -...
Модуль Spec
  - параметр1
  - ...

Вопрос, основной, как это реализовать?
На данный момент сделал диалог так:
Слева Список разделов (Общие, Модуль ALL, Модуль Spec)
Справа вверху список параметров выбранного раздела. TStringGrid
Справа внизу информация о разделе - Memo-поле

Вопрос, следующий, похожий, как оптимально работать с параметрами?
Первая идея, при выборе параметра на изменение, если он должен принимать жесткие значения, то разворачивать список. Как сделать - не знаю, так смутно догадываюсь. А время жмет.

Че-то, еще было... Ладно, по ходу уточним.
Записан

Ёжики, это не только ценные шкурки...
PSD
Главный специалист

ru
Offline Offline
Пол: Мужской

« Ответ #1 : 20-06-2003 12:02 » 

1) Реализовать в смысле дизайна? или  как это запрограмировать?

2) Если нужно стисок значений то на свое усмотрение либо ставишь
ComboBox(не знаю как он назывется в делфи), при помощи метода Add (незнаю как он называется у компонента делфи) загоняешь туда список значений в конце считываешь что пользователь выбрал, и запрещаешь ввод новых значений(там будет либо свойство либо режим работы компоеннта COMBOLIST).
С ListBox(не знаю как он назывется в делфи) один в один толкл он места требует по больше.
Записан

Да да нет нет все остальное от лукавого.
Pokemon
Гость
« Ответ #2 : 20-06-2003 12:07 » 

Не совсем понятно что за систему ты делаешь, поясни пожалуйста. И второе что означает: "должен принимать жесткие параметры"?
Записан
Igel
Опытный

ru
Offline Offline
Пол: Мужской

« Ответ #3 : 20-06-2003 13:53 » 

Для PSD:
 На работу со КомбоБоксом и как загонять туда списки, на это моих знаний хватает. Тут другое немного.  Именно принцип программирования.

Для Pokemon-а: Приведу мой пример. Параметр в таблице "Цвет фона" - значение 7. Пользователь хочет изменить цвет. Кликает на значение, ему разворачивается список цветов. Штук 16, например. Ну-у, это я и назвал "жесткими параметрами".
Записан

Ёжики, это не только ценные шкурки...
Igel
Опытный

ru
Offline Offline
Пол: Мужской

« Ответ #4 : 20-06-2003 14:00 » 

Pokemon, я систему, можно сказать сделал. Но это на АвтоЛИСПе и под АвтоКАД. Средств стандартного ЛИСПа не хватает для создания продвинутых диалогов. И я решил для настройки сделать небольшую программку на Дельфи, которая бы запускалась и создавала файл настроек.
Записан

Ёжики, это не только ценные шкурки...
Pokemon
Гость
« Ответ #5 : 20-06-2003 17:49 » 

Как я понял у тебя параметры хранятся в таблице: если это ListBox то лучше всего сделать при щелчке выпад контектного меню в котором есть значения цветов. Ну а если это ComboBox то у него есть параметр Style который задает возможность вводить в поле со списоком значение, вроде значение stDropList задает режим только списка. Но этот списак должен быть создан заранее из др. данных. По мне лучше всего сделать ComboBox и задать ему стиль работы ...
Записан
Igel
Опытный

ru
Offline Offline
Пол: Мужской

« Ответ #6 : 21-06-2003 09:21 » 

Млин, не удалось объяснить...
Вся проблема пока не в конкретной реализации. Не могу понять КАК сделать. Т.е., конечно можно насоздавать кучу переменных, и друг за дружкой значения заносить в "Список". Потом кучу условий и пр... Но это будет ужасно с точки зрения программирования, и реализация с точки зрения дизайна.

Как я делал на ЛИСПе: все данные, с которыми я работал, загонял в список(параметры, значения). В процессе работы в диалоге этот список меняется.И при выходе уже список сохраняю...  

Здесь думал смогу аналогично, но язык другой, и я его еще не "чувствую".
Записан

Ёжики, это не только ценные шкурки...
PSD
Главный специалист

ru
Offline Offline
Пол: Мужской

« Ответ #7 : 21-06-2003 11:43 » 

А так те нужна схема управлеия даными?

Тут вариантов куча.
Вот один
Чтаешь свой ини файл в структуру типа дерева секции(папки) парамертры листья. Можно вообще ограничится  стандартным компонентом TREE если сами строки вводить в ручную.

А так по двойному клику извлекаешь стоку из дерева (там она в названии ноды хранится) распаковваешь и грузишь на правую строну в компоненты типа "Имя"  "значение".

Вероятно для каждой секции придется подгружать свои компонеты управления.

По кнопке "ок" собираешь строку и запишиваешь ее назад в дерево.

К расиво и элегантно, причем для мастеров можно оставить возможность  создавать и редактировать ноды  средствами самого дерева.

По завершении или команде сохранить  записываешь все из дерева назад в файл.

Алгоритм работы с деревом будет очень простой у тебя там всего два уровня.

Единственое нужно перехватить создание папок и не разрешать создовать  папки во втором уровене.
Записан

Да да нет нет все остальное от лукавого.
Igel
Опытный

ru
Offline Offline
Пол: Мужской

« Ответ #8 : 21-06-2003 13:46 » 

Именно так я и думал. Только решил пока с "Деревом" не возиться, а взять ListBox. Ну, не важно.
Вот как это реализовать, что-бы были эти самые "компоненты управления"? Тут у меня с понятиями туго... нет детальной картины...
Записан

Ёжики, это не только ценные шкурки...
PSD
Главный специалист

ru
Offline Offline
Пол: Мужской

« Ответ #9 : 21-06-2003 14:34 » 

Я так понимаю й тебя данные в принципе типизированые.
в виде

имя = число

так?

Только число  нужно по разному отобрадать
то это цвет то толщина линии и тп.

Я бы сотворил так

повесил Edit для имени комбо для параметра и возможно дополнительную кнопку  [...] для допонительных функций.
Ну и разумется блок кнопок  изменить добавить сохранить отмена(можно без него но у меня юзеры тупые)
Далее к списку нужно привязать както информацию о типе конкретной записи. Почему я говорил про дерево  У MS Tree  в качестве индотификатора ноды используется параметр key он текстовый и в него можно зашифровать информацию о типе ноды
col - секция цвета
col_1 -первая настройка
col_2 вторая
....
Записан

Да да нет нет все остальное от лукавого.
PSD
Главный специалист

ru
Offline Offline
Пол: Мужской

« Ответ #10 : 21-06-2003 14:35 » 

Далее когда  юзер кликает на ноду ды смотришь key видишь что
там  col_xx значит это цвет.
и загружаешь в комбо цвета, будут толшины линий значит толшины линий.
На кнопку [...]  case можно скомутировать вызов диалогов напимер вибора цвета или открытия файла.   case опереть на тотже key.

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

Юзер кликнул из строки имя поля и его значение упали на правую сторону. Нажал изменить компоненты стали енабле  кликнул сохранить
все из считал имя счтал значение собрал строчку и запихнул в дерево на место старой.
Все просто нужно толко акуратно запоминать(id или key) счем ты сейчас работаешь  и отслеживать его изменения  в VB такой диалог пишется за час. В делфи наверное чуть подольше возится.
Записан

Да да нет нет все остальное от лукавого.
Igel
Опытный

ru
Offline Offline
Пол: Мужской

« Ответ #11 : 21-06-2003 15:07 » 

Это ясно. Только зачем дерево городить, если у меня всего 2 уровня:
Модуль
 - Параметры модуля
Хотел так:
Слева Список модулей. Вызываю(указываю) конкретный - считываю объект, присоединенный (TStringList) в нем содержатся параметры (причем имя=число/строка).
По списку параметров формирую справа таблицу. Первый столбец - имена пар-ов, второй значения.
Вот на этом месте и встал. Список (TStringList) параметров сформирован, хотя, может есть конкретные предложения по структуре? Потому-что я делал, как привык, может это привнесет сложности!!
Записан

Ёжики, это не только ценные шкурки...
PSD
Главный специалист

ru
Offline Offline
Пол: Мужской

« Ответ #12 : 21-06-2003 15:18 » 

Про дерево писать короче.

Можно и два списка.

А вчем проблемат тогда если ты уже все сделал?
Или у тебя в гриду не получилось выпихнить?
Записан

Да да нет нет все остальное от лукавого.
Igel
Опытный

ru
Offline Offline
Пол: Мужской

« Ответ #13 : 21-06-2003 16:22 » 

Не-е, я прогнал. Я не смог все в один список запихнуть, мучаюсь...
Хотел так:
Список Модулей
Каждый элемент(объект класса) - список параметров - каждый параметр - объект со своими пар-ми, такими, как: Имя пар-ра, тип значения,значение, Информация о параметре.
Вот такую структуру и не могу создать. Точнее я хотел создать класс.
Затем, уже визуализация. Возьмем к примеру дерево: Выбрал я в дереве параметр - ладно-бы мне просто число или текст задать надо, так значение параметра может быть выбрано из жесткого списка. Т.е. не просто для параметра EDitBox приделать, а еще в зависимости от типа Или EDitBox или ComboBox. Ну, это ладно, можно, как ты советовал, кнопку приделать.
Главное, как мне этот клас реализовать?
Записан

Ёжики, это не только ценные шкурки...
PSD
Главный специалист

ru
Offline Offline
Пол: Мужской

« Ответ #14 : 21-06-2003 16:32 » 

Ты меня окончательно запутал.

Тыхочешь создать структуру данных(кнотейнер)в который бы считывались данные из ini  файла редактировались в программе а затем записывалис при сохранении в ini  файл  и тебя возникли проблемы именно с реализацией этой структуры?

А скакой частью проблемы?
Ты не можешь формализовать структуру данных.

Не получается загнать данные из файла в структуру

или не получается привязать структуру к интерфейсу и элементам управления?
Записан

Да да нет нет все остальное от лукавого.
Гром
Птычк. Тьфу, птычник... Вот!
Готовлюсь к пенсии

il
Offline Offline
Пол: Мужской
Бодрый птах


« Ответ #15 : 21-06-2003 17:00 » 

Опиши всю задачу целиком - пропиши здесь структуру и типы данных, которые ты собираешься использовать - я попробую тебе рассказать. я уже делал нечто подобное с деревом и зависимостью от дерева кучи параметров и использую ini файл...
Записан

А птичку нашу прошу не обижать!!!
Igel
Опытный

ru
Offline Offline
Пол: Мужской

« Ответ #16 : 21-06-2003 17:03 » 

Да нет... Я не могу сделать класс так, что-бы он подошел под поставленную задачу. Знаний не хватает... может поэтому так изъясняюсь?
Не знаю что такое контейнер и с чем его едять...
Понимаю, что все просто, но не могу сделать... еще хуже, объяснить толком не могу...
Записан

Ёжики, это не только ценные шкурки...
PSD
Главный специалист

ru
Offline Offline
Пол: Мужской

« Ответ #17 : 21-06-2003 17:21 » 

Так вот в моей идее с деревом в этом классе нужды нет вообще так как там строки ini файла храняться не посредственно в дереве в виде названия нод, а структура обеспечивается самим деревом(MS TREE это элемент управления в делфях должнобыть похожее или еееже можно зацепить это ActiveX)
ты кабы видишь на экране свой ини но можешь ворачивать и разворачивать секции переносить мышью параметры из секции в секцию и прочие.

А класс  можно сделать такой например:
Код:
class meitem
|
int id;
int id_parent;
CString Name;
int value; // Или VARIANT value
int type;// тип записи
// Еще раз прошу прощения за С++
"


А как тебе их связать вариантов множество
можешь просто объявить массив этих элементов и по  type  выбирать нужные. Можешь их опустить в контейнер типа Tlist(если не ошибаюсь или TTree)

Если ты не очень хорошо разбираеся в среде то вопрос как правильно не коректен делай как получится, будут конкретные траблы спросишь, по ходу дела возникнут мысли как это можно облегчить и оптимизировать.  Вариантов решения твоей задачи сотни и у каждого свои минусы и плюсы. Я лично думаю что в твоей задаче красивые изыски програмирования не кчему, побыстому слепить, чтоб только работала, а там видно будет что нетак.
Записан

Да да нет нет все остальное от лукавого.
Igel
Опытный

ru
Offline Offline
Пол: Мужской

« Ответ #18 : 23-06-2003 10:50 » 

Спасибо, пробую...
Записан

Ёжики, это не только ценные шкурки...
Igel
Опытный

ru
Offline Offline
Пол: Мужской

« Ответ #19 : 23-06-2003 10:51 » 

Спасибо всем, пробую...
За поддержку, особенно! Улыбаюсь)
Записан

Ёжики, это не только ценные шкурки...
Alex
Гость
« Ответ #20 : 24-06-2003 20:58 » new

Есть классный компонент -Virtual Treeview (http://www.delphi-gems.com/)
Он позволяет подвешивать разные эдиты к своим нодам,
правда в нем не очень просто разобраться.
Удачи!
Записан
Страниц: [1]   Вверх
  Печать  
 

Powered by SMF 1.1.21 | SMF © 2015, Simple Machines