Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Основная";
Текущий архив: 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
1-93494
last
2004-01-19 08:41
2004.01.29
QReport


14-93666
BorisMor
2004-01-07 21:34
2004.01.29
Немного политики


1-93501
Hex0DesiMaL
2004-01-19 08:59
2004.01.29
Скрыть прогу в панли задач


14-93631
Zeon
2004-01-08 01:01
2004.01.29
Алгоритм сортировки


4-93738
Mohamed
2003-11-23 12:54
2004.01.29
Resource





Afrikaans Albanian Arabic Armenian Azerbaijani Basque Belarusian Bulgarian Catalan Chinese (Simplified) Chinese (Traditional) Croatian Czech Danish Dutch English Estonian Filipino Finnish French
Galician Georgian German Greek Haitian Creole Hebrew Hindi Hungarian Icelandic Indonesian Irish Italian Japanese Korean Latvian Lithuanian Macedonian Malay Maltese Norwegian
Persian Polish Portuguese Romanian Russian Serbian Slovak Slovenian Spanish Swahili Swedish Thai Turkish Ukrainian Urdu Vietnamese Welsh Yiddish Bengali Bosnian
Cebuano Esperanto Gujarati Hausa Hmong Igbo Javanese Kannada Khmer Lao Latin Maori Marathi Mongolian Nepali Punjabi Somali Tamil Telugu Yoruba
Zulu
Английский Французский Немецкий Итальянский Португальский Русский Испанский