|
Тема
|
Търся идея за тайпкастинг на създавани форми в dpr
|
|
Автор |
NikB (любопитен) |
Публикувано | 28.03.05 23:51 |
|
Имам два проекта, които са доста еднакви, поне на този етап.
Ако има нужда от подробности - ще пиша :)
Проектите са така направени, че някои от формите са наследници на еднакви родители. Например:
Проект 1:
tFormA1=class(FormA);
tFormB1=class(FormB);
Проект1.dpr съдържа:
Application.CreateForm(tFormA1, FormA);
Application.CreateForm(tFormB1, FormB);
Проект 2:
tFormA2=class(FormA);
tFormB2=class(FormB);
Проект1.dpr съдържа:
Application.CreateForm(tFormA2, FormA);
Application.CreateForm(tFormB2, FormB);
Главната форма е еднаква и при необходимост си ползва инстанциите FormА и FormB.
Бих могъл в dpr само да избирам класовете, а другаде да създавам инстанциите, но това май не е съществено.
Имам голямо желание да направя и dpr файловете еднакви (т.е. да има един dpr файл) и си мисля дали да ползвам:
а) условно компилиране (няма да има нужда да декларирам всички юнити в двата проекта);
б) параметри на командната линия по време на изпълнение;
в) някоя друга ваша свежа идея.
Та въпросът ми е: по какъв друг начин мога да създам формите, така че да са от различни типове при различните компилирания.
| |
|
ся ми хрумна че може да си проверяваш името на exe-то и съответно да пускаш съответния проект
There are three determined states the cat could be in: Alive, Dead, and Bloody Furious.
| |
|
И в двата случея трябва да съм декларирал всички юнити в проекта. Това май ще се окажа най-приемливото решение :)
И остава опасението, ако някой beduser преименува изпъкнимия файл.
| |
Тема
|
Re: Това е подраздел на парам. на команданата лини
[re: NikB]
|
|
Автор |
andrew_nikoloff (bugbuster) |
Публикувано | 29.03.05 09:05 |
|
За да не декларираш всички юнити май единственият начин е условната компилация. Другото всичко е рънтайм и ще си му трябват юнитите :-/
Може би можеш да си поиграеш да отделиш формите в динамични модули - bpl или dll. Ако ти се занимава - това май е някаква решение...
| |
|
<<<< Може би можеш да си поиграеш да отделиш формите в динамични модули - bpl или dll. Ако ти се занимава - това май е някаква решение... >>>
Не само някакво ами и единственото ;-) - а пропо стига с тези dll-та - само ядове с тях ;-)
Честно казано нищо не разбрах от първото обеснение, но ще рискувам да дам идея.
1. Натъпкваш всички неща използващи се в двата проекта в една библиотека
2. Не забравяш да си регистрираш формите RegisterClass !
3. Махаш дефинициите на тези форми от dpr-то - щото няма как и си създаваш динамично формите
4. относно динамичното създаване - ползваш GetClass като го cast-ваш до Те_твойта_форма.
5-то всъщност 3.а. - зареждаш си динамично bpl-то
---
| |
Тема
|
Re: Това е подраздел на парам. на команданата лини
[re: andrew_nikoloff]
|
|
Автор |
NickBass (бас-програмист) |
Публикувано | 29.03.05 09:52 |
|
Това е елегантен начин. Прав си. Хайде и аз да предложа нещо. Какво ще кажеш за един OleAutomatition сървър?
1. Написваш проект A и B с всичките му форми и каквото трябва там
2. Добавяш им по едно Type library
3. В Type library-то слагаш един Automatition object и към него декларираш методи и пропъртита, еднакви и за двата проекта.
4. Написваш проект C, който се обръща към инсталирания OleAutomatition server.
Той може да е Project A или Project B.
| |
|
С БПЛ до сега не съм се пробвал - ама има достатъчно написано по въпроса
| |
|
|
|
|