Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2004.01.29;
Скачать: CL | DM;

Вниз

Создать свою форму   Найти похожие ветки 

 
-=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;
Скачать: CL | DM;

Наверх




Память: 0.5 MB
Время: 0.013 c
1-93512
ИМХО
2004-01-18 20:41
2004.01.29
Функция, возвращающая массив значений


3-93359
_T1000_
2003-12-31 12:26
2004.01.29
Could not find object


7-93706
Talla2k
2003-11-12 01:01
2004.01.29
Com port


3-93328
Borealis
2004-01-05 12:07
2004.01.29
Начала MySQL


7-93703
Nix
2003-11-12 23:12
2004.01.29
Ring 0. Что это