Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > Delphi программирование > Общие вопросы Delphi
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 11.09.2009, 11:48   #1
plato
Форумчанин
 
Регистрация: 23.01.2009
Сообщений: 107
По умолчанию Изменяемые компоненты формы хранить в плагинах или подключаемых файлах?

Нужен совет о том, как лучше организовать форму приложения.
Само приложение работает так. Есть несколько разных sql-запросов к БД. У каждого запроса могут быть свои параметры. Эти параметры буду вводиться при помощи различных визуальных компонент типа TEdit, TChekBox, TUpDown и т.п. В зависимости от запроса и от количества параметров соответственно этим компоненты разнятся.
В том случае, когда этих запросов 4-5, то все можно было бы сделать, например через TPageControl, расставить для каждого запроса компоненты, и жить счастливо.
Но количество разных вариантов запросов растет с каждым днем.
При запуске программы, программа должна просканировать соответствующий каталог, выяснить список тех форм (или как это лучше обозвать, список плагинов, дополнений, приложений) которые она будет обрабатывать, и на основании этого списка формируется меню. Затем, жму в меню нужный пункт, и у меня на форме появляются нужные кнопки и компоненты, а sql-запрос хранится в какой-то переменной. Ну и далее по смыслу запроса что-то делается и выводится.
Стоит вопрос, как это лучше организовать, чтобы не переделывать каждый раз приложение.
Есть такие варианты:
1) Делать плагины. Создал dll и подбросил в каталог с плагинами. Но мне кажется, что задача намного проще, чем использование dll.
2) Хранить описание нужных компонентов в ini, txt или xml файлах.
3) Ваш вариант …. )))))))))
и не забудьте подарить детям шоколадку
plato вне форума Ответить с цитированием
Старый 11.09.2009, 12:11   #2
Stilet
Белик Виталий :)
Старожил
 
Аватар для Stilet
 
Регистрация: 23.07.2007
Сообщений: 57,097
По умолчанию

Цитата:
Хранить описание нужных компонентов в ini, txt или xml файлах.
Я ж правильно понимаю что тебе не просто нужно менять форму от запроса к запросу, но еще и менять действия по нажатии кнопок?
Тогда так: в папку с экзешником прикрепляй BPL (ну или ДЛЛ на худой конец) с формой нужной, и ее обработчиками.
В цикле проходи, подключай эти файлы как и задумал
I'm learning to live...
Stilet вне форума Ответить с цитированием
Старый 11.09.2009, 12:20   #3
plato
Форумчанин
 
Регистрация: 23.01.2009
Сообщений: 107
По умолчанию

В целом правильно. Но, походу, кнопка будет одна с однинаковым набором действий для всех запросов. Т.е. она будет запускать запрос на выолнение и выводить рельтат в грид. Соттветсвенно грид и кнопку можно сделать стационарными и не менять.
А на счет ДЛЛ.
Мне бы хотелось не подгружать нужную форму целиком, а сделать иначе.
Есть три стационарных компоненты: 1) Грид, 2) кнопка с общим дейтвием для всех запросов, и 3) чистая панель, на которую я буду расставлять подгружаемые компоненты.
Вот так вот как-то хотелось бы....
и не забудьте подарить детям шоколадку
plato вне форума Ответить с цитированием
Старый 11.09.2009, 12:29   #4
SuperVisor
Павел Сергеевич
Форумчанин
 
Регистрация: 05.11.2006
Сообщений: 665
По умолчанию

Ну, если не хотите делать это через dll, то придется Вам самому писать обработчик "описания нужных компонентов в ini, txt или xml файлах".
Динамически выстраивать компоненты и т.д. Только вот действия компонент(по нажатию кнопки, допустим) у вас не получатся...
Цитата:
Мне бы хотелось не подгружать нужную форму целиком
Никто и не заставляет )) Для библиотек делаете стандартную операцию (LoadMyLibrary, допустим) и проходитесь по всем библиотекам... Библиотеки вполне могут сделать Вам все, что пожелаете - не строить формы, а дополнять существующие в том числе. ))
Познавая других, мы познаем себя.
С'est la vie...
SuperVisor вне форума Ответить с цитированием
Старый 11.09.2009, 12:46   #5
plato
Форумчанин
 
Регистрация: 23.01.2009
Сообщений: 107
По умолчанию

да, щаз еще чуток подразобрался, походу в библиотеках это будет удобнее
и не забудьте подарить детям шоколадку
plato вне форума Ответить с цитированием
Старый 11.09.2009, 13:16   #6
Stilet
Белик Виталий :)
Старожил
 
Аватар для Stilet
 
Регистрация: 23.07.2007
Сообщений: 57,097
По умолчанию

Цитата:
Есть три стационарных компоненты
Если все стационарно то зачем лишние плагины?
Пусть селекты хранятся в ИНИ файле, и оттуда их и выбирай.
I'm learning to live...
Stilet вне форума Ответить с цитированием
Старый 11.09.2009, 13:19   #7
plato
Форумчанин
 
Регистрация: 23.01.2009
Сообщений: 107
По умолчанию

не все, третий компонент, "панель", он стационарный, но на него я хотел в зависимости от задачи размещать динамически компоненты......
ну или, если длл, то тогда уже открывать модальные формы, созданные в этих длл
и не забудьте подарить детям шоколадку
plato вне форума Ответить с цитированием
Старый 11.09.2009, 13:40   #8
Stilet
Белик Виталий :)
Старожил
 
Аватар для Stilet
 
Регистрация: 23.07.2007
Сообщений: 57,097
По умолчанию

Цитата:
plato
Тогда я бы в ДЛЛ или BPL загонял Frame с его обработчиками, а уже на панель этот Фрейм подгружал. Тогда эти библиотеки полностью зависят от разработчика.
I'm learning to live...
Stilet вне форума Ответить с цитированием
Старый 11.09.2009, 13:55   #9
plato
Форумчанин
 
Регистрация: 23.01.2009
Сообщений: 107
По умолчанию

каким образом натянуть фрейм на понель?
для формы я в ДЛЛ-ке писал функцию

function MShowForm : Integer; stdcall;
var
Form : TForm1;
begin
Form := TForm1.Create(Application);
Result := Form.ShowModal;
Form.Free;
end;

Для фрейма .ShowModal разумеется это не прилепишь.
и не забудьте подарить детям шоколадку
plato вне форума Ответить с цитированием
Старый 11.09.2009, 17:14   #10
evg_m
Старожил
 
Регистрация: 20.04.2008
Сообщений: 5,526
По умолчанию

Код:
f:=tframe.Create(panel);
f.parent:=panel;
f.allign:=altop;
f.name:='';//что-бы можно было добфвитьдва одинакоых
программа — запись алгоритма на языке понятном транслятору
evg_m вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Использование подключаемых модулей Ольг Помощь студентам 6 31.07.2009 17:17
Скрыть компоненты, изменив размер формы Hollander Общие вопросы C/C++ 5 28.01.2008 18:39
VB код сворачивания формы в трей, или просто свернуть sqvair Помощь студентам 4 04.01.2008 20:21
при изменении размера формы, все компоненты на ней оставались на своих местах ***СкаЙ*** Помощь студентам 15 13.06.2007 11:13
можно ли использовать визуальные компоненты, если у приложения нет формы? Holly1444 Общие вопросы Delphi 8 19.11.2006 16:21