-
Будьте добры, подскажите пожалуйста как лучше осуществить вот какую задумку:
Хочу попробывать научится использовать пакеты(BPL) в приложениях.
На сей момент задумка такая. Есть программа(exe)-загрузчик. Из себя представляет обычное приложение по умолчанию в делфи.
Т.е. одна главная форма, на ней.... (вот тут вопросик что лучше?) Я пока остановился на TTabControl. Как вариант TPageControl или.... ??
Суть такая: Форма, вверху закладки, так вот содержимое закладок должно быть в bpl'ках...
Все это должно быть в динамике, добавили bpl в папку с плагинами, появилась новая закладка при следующем старте программы-загрущика...
т.е. при старте приложения-загрузчика просматриваются файлы bpl и если пакет содежит "вкладку" (тут тоже вопрос), то добавить в
TabControl1.Tabs.Add(имя вкладки из пакета).... так вот вопрос что лучше в пакете использовать.... Я пока остановился на TFrame...
Вообщем у меня пока дуратское сообщение о том, что TFont не совместим c TFont.... :) Это мне уже знакомо, думаю разберусь, но вот подскажите вообще идеи по данной задумке.
-
> у меня пока дуратское сообщение о том, что TFont не совместим
> c TFont.... :) Это мне уже знакомо
Притча о граблях)
> подскажите вообще идеи по данной задумке
Нормальная вполне себе задумка.
Если с граблями отношения выяснить раз и на всегда.
-
Пакеты - это просто #%!@#%^#@#$! какой-то. Неужели для того, чтобы использовать собственного потомка некоторого визуального компонента мне нужно оформлять его в виде отдельного пакета, отдельно компилировать и прочая и прочая?
Это же морока какая и умножение сущностей без всякой меры.
-
> Неужели для того, чтобы использовать собственного потомка
> некоторого визуального компонента мне нужно оформлять его
> в виде отдельного пакета
Нет.
> отдельно компилировать
Да. А как же без компиляции ? Без нее никуда)
> и прочая и прочая
В Коране об этом ничего не сказано)
-
Сергей М. © (30.11.08 22:25) [3]
А разъясните, пожалуйста, тогда как. Я пробовал просто отнаследовать и в dfm имя подменить, мне сказали чтобы больше так не делал. Пришлось делать пакет.
-
monogandhi (30.11.08 22:27) [4]
Имеется в виду, среда ругалась на сие непотребство.
-
> [1] Сергей М. © (30.11.08 22:07)
Т.е. так и оставить (TTabControl в программе) и (TFrame в пакете) ?
>>>>
И если можно, коротко о граблях, пожалуйста... хотя бы о "TFont не совместим c TFont"
т.е. как правильно создать в пакете фрэйм, и как его поместить на TTabControl...?
> [2] monogandhi (30.11.08 22:22)
> Пакеты - это просто #%!@#%^#@#$! какой-то.
Зря ты так.... я тоже раньше был такого же мнения, но... :)
-
A причем здесь dfm ?
Компоненты не нуждаются ни в каких dfm'ах - они прекрасно рождаются существуют сами по себе.
-
Сергей М. © (30.11.08 22:30) [7]
Вы что-то все уклончиво говорите. В [2] говорилось о потомке некоего визуального компонента из некой сторонней библиотеки (то есть стороннего пакета, который уже был установлен). Он присутствовал на форме, то есть инстанциировался средой. Насколько я понимаю, для этого нужно указывать его тип. Этого как раз и не удалось сделать.
-
> {RASkov} © (30.11.08 22:29) [6]
exe должен быть собран с опцией использования ран-тайм пакетов - вот и вся премудрость граблей
-
> В [2] говорилось о потомке некоего визуального компонента
> из некой сторонней библиотеки (то есть стороннего пакета,
> который уже был установлен). Он присутствовал на форме,
> то есть инстанциировался средой.
В [2] об этом нет ни слова, не надо выдумывать задним числом.
-
Сергей М. © (30.11.08 22:39) [10]
Цитирую себя же, простите.
>Неужели для того, чтобы использовать собственного потомка некоторого визуального компонента мне нужно
Выходит, его нужно инстанциировать динамически без всякого упоминания в форме?
Тогда мы теряем все прелести визуального редактирования свойств (компонент может быть достаточно сложным, но что делать, пакеты...
-
Повторяю эту цитату:
> использовать собственного потомка некоторого визуального
> компонента
Для этого достаточно объявить и реализовать наследника этого компонента. Где он будет объявлен, реализован и использован - об этом речь не шла. Равно как не шла речь и конкретно о дизайн-тайм.
-
> [9] Сергей М. © (30.11.08 22:37)
так... но тогда тут получается EXEшник маленького размера, т.е. нужно будет все библиотеки VCL прикладывать к екзе....
А как сделать так, чтоб экзешнику не требовались никае внешние(VCL) БПЛ....?
-
> его нужно инстанциировать динамически без всякого упоминания
> в форме?
Класс этого компонента должен быть зарегистрирован, иначе дельфийская стрим-система не будет знать о компоненте ничего и инстанцировать его автоматически не сможет.
-
Сергей М. © (30.11.08 22:47) [12]
Речь шла о том, нужно ли для этого делать пакет. Насколько я могу понять из ваших слов: "Для этого достаточно объявить и реализовать наследника этого компонента", то пакета создавать не нужно.
Если под объявлением и реализацией наследника вы подразумеваете создание соответствующего класса-потомка, то у меня так не получилось сделать.
Без создания пакета, он не появится на вкладках с компонентами. А замена имени его предка в форме вызывает маловразумительное сообщение дельфи о том, что вот этого имени тут-то не должно быть, и не удалить ли его?
Выходит, что пакет создавать таки нужно. А вы говорите что не нужно. Мне кажется, что где-то здесь есть противоречие.
-
> {RASkov} © (30.11.08 22:51) [13]
> тут получается EXEшник маленького размера, т.е. нужно будет
> все библиотеки VCL прикладывать к екзе
И что этому мешает ?
> как сделать так, чтоб экзешнику не требовались никае внешние(VCL)
> БПЛ....?
Собрать без вышеупомянутой опции.
Но тогда придется распрощаться с изначальной идеей-фикс)
-
Сергей М. © (30.11.08 22:51) [14]
Можно ли это сделать, не создавая пакет, и если да, то как?
-
> [16] Сергей М. © (30.11.08 22:54)
> [13] {RASkov} © (30.11.08 22:51)
если я ставлю данную галку и очищаю строку со списком бплок, то галка снимается.... и опять тажа ошибка :(
можно конечно оставить какой-нибудь пакет и его дополнительно положить в папку с программой.... например специально для этих целей подготовленную...
Но так не верно наверное, или как? :)
> И что этому мешает ?
Ну, не.... я так не расчитывал :)
-
> [18] {RASkov} © (30.11.08 22:57)
т.е. там под галкой есть строка со списком бпл... вот там можно оставить одну какую-нибудь и положить ее к программе в папку...