Форум: "Основная";
Текущий архив: 2004.01.29;
Скачать: [xml.tar.bz2];
ВнизСоздать свою форму Найти похожие ветки
← →
-=Sash=- (2004-01-15 14:04) [0]Как в можно создать свою форму.
Описывать визуально через депозитарий, не подходит
т.к. 1. при размещении компонентов на этой форме и назначении им событий в каждом событии добавляется inherited
2. При добавлении своих свойств в published, в инспекторе объектов они упорно не хотят отображаться.
3. Сам класс Tform описан не визуально
Пробовал просто создать юнит и в нем описать класс производный от Tfrom, потом просто при создании формы вместо tform пишу свой класс. Проблема с inherited решилась.
Но все равно все что указано в published работает так как буд-то оно указано в public.
Как я думаю мне надо мой класс как-то зарегистрировать, но как это сделать не нашел.
Подскажите, как мне правильно реализовать эту форму.
← →
Семен Сорокин (2004-01-15 14:09) [1]procedure Register;
begin
RegisterComponents("Samples", [TMyForm]);
end;
← →
Юрий Зотов (2004-01-15 14:15) [2]1. Форма должна сидеть в BPL и не иметь ресурсов (если они есть, то ошибки не будет, но ресурсы все равно не загрузятся).
2. Форму надо зарегистрировать:
RegisterCustomModule(TMyFormClass, TCustomModule);
3. Добавленные published-свойства появятся в потомках формы. Вот они уже могут иметь ресурсы.
4. Для всего для этого лучше всего скачать эксперт Сергея Орлика CFPack5 и просто его использовать. См. Яндекс.
← →
Юрий Зотов (2004-01-15 14:16) [3]> Семен Сорокин © (15.01.04 14:09) [1]
:o)
← →
Семен Сорокин (2004-01-15 14:21) [4]шутку понял, смешно :)
(с) "Две сорванные башни"
← →
Skier (2004-01-15 14:21) [5]>Семен Сорокин © (15.01.04 14:09) [1]
О как ! :))
← →
-=Sash=- (2004-01-15 15:43) [6]Спасибо.
Но опять столкнулся с проблемой.
CFPack нашел только под D3, пытался его доделать, но никак не могу найти где описана ф-я IsProxyClass который вызывается из DesignEditors.
И т.к. TCustomModule описывается в DesignEditors использовать не получается :(
← →
Sandman25 (2004-01-15 15:49) [7][6] -=Sash=- © (15.01.04 15:43)
А у Вас 1 package или 2? Нужно разбить на design-time package и run-time package.
← →
-=Sash=- (2004-01-15 15:50) [8]Sandman25 © (15.01.04 15:49) [7]:
У меня 1
← →
Sandman25 (2004-01-15 15:57) [9]Очень плохо. Разбейте на 2.
Register и RegisterPropertyEditor не должны быть в run-time.
← →
-=Sash=- (2004-01-15 15:58) [10]Sandman25 © (15.01.04 15:49) [7]:
А что писать в рантайме и что в десигнтайме ?
← →
Sandman25 (2004-01-15 16:01) [11]The design-time package should include:
All registration statements.
All property editors.
All Component editors.
Should require DesignIDE and each runtime package that holds the components themselves.
The runtime package should include:
The components themselves only.
Optionally, any forms the editors may use IF the component can call the form itself at runtime
← →
Юрий Зотов (2004-01-15 16:33) [12]> -=Sash=- © (15.01.04 15:43) [6]
1. Существует CFPack для D7 (сам видел). Ищите по строке:
CFPack+Delphi+7
Найдете с вероятностью 99%. Рекомендую именно этот путь.
2. Если все же не найдете (1%), то можно подправить исходники CFPack5 (нужен именно CFPack5, потому что просто CFPack - это несколько другое). Откройте пакет, в его секции Requires удалите DsgnIDE и добавьте DesignIDE (там и находится IsProxyClass). Потом компилируйте. Воникнут ошибки - "unit XXX not found". Это из-за того, что начиная с D6 именились названия и состав некоторых модулей. Соответственно, потребуется правка их имен в uses. В общем-то, это несложно.
3. Если все же решите делать без CFPack (хотя не рекомендую - работать без эксперта будет неудобно), то в Вашем случае в run-time пакете будут все Ваши модифицированные формы, а в design-time пакете - процедура Register с вызовом RegisterCustomModule для каждой такой формы). Возможно, в Requires design-time пакета тоже надо будет добавить DesignIDE.
← →
-=Sash=- (2004-01-15 16:57) [13]Все получилось, всем огромное спасибо
← →
-=Sash=- (2004-01-15 17:01) [14]Юрий Зотов © (15.01.04 16:33) [12]
CFPack пока не нашел, но проблема решилась созданием двух пакетов
Плюс в designtime пакет надо было добавить
requires
...
designide;
Описание ф-ии IsProxyClass лежит там
← →
Юрий Зотов (2004-01-15 17:28) [15]> -=Sash=- © (15.01.04 17:01) [14]
Сообщение [12], пункт 2:
"Откройте пакет, в его секции Requires удалите DsgnIDE и добавьте DesignIDE (там и находится IsProxyClass )"
:о)
Страницы: 1 вся ветка
Форум: "Основная";
Текущий архив: 2004.01.29;
Скачать: [xml.tar.bz2];
Память: 0.48 MB
Время: 0.009 c