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

Вниз

Форма в пакете   Найти похожие ветки 

 
Stanbab   (2002-05-28 11:38) [0]

Как можно визуально наследоваться от формы, которя находится в пакете, и явно не включена в проект?


 
Игорь Шевченко ©   (2002-05-28 12:56) [1]

RegisterCustomModule ?


 
Stanbab   (2002-05-28 14:36) [2]

Я использую RegisterCustomModule для регистрации формы. Однако визуальное наследование получается только at runtime, at designtime - не получается. Из проекта форма в пакете видна, собщений об ошибках нет.


 
Игорь Шевченко ©   (2002-05-28 14:43) [3]

Я тоже могу ошибаться :-)

От: "Vitaliy Lyanchevskiy" <elic@operamail.com>
Тема: Re: Наследование форм из пакетов
Дата: 6 декабря 2001 г. 16:17

Привет, Sergey

06.12.2001 10:27, Sergey Gerasin -> All:

SG> Вот тут вопрос поднимался о сабже, помнится...

SG> Ни к чему дельному тогда не пришли, хотя ларчик просто
SG> открывался. :) Честь открытия принадлежит Станиславу
SG> Горбаневу (gorby@energomash.ru).

SG> Так вот, все оказывается довольно простым, только нужно
SG> совсем чуть-чуть поработать ручками.

SG> 0. В секции инициализации формы, желающей быть предком
SG> и находящейся в другом пакете, регистрируем класс
SG> этой формы:
SG> RegisterClass ( TMyAncestorForm );
SG> Можно этого и не делать, так как, если верить хелпу
SG> для RegisterClass, классы форм регистрируются автоматически,
SG> но на всякий случай не помешает.
SG> 1. Убеждаемся, что в нашем проекте доступен ресурс (*.dfm)
SG> этой формы (лучше просто включить проект этого пакета
SG> в состав группы с текущим проектом). При этом пакет, в
SG> котором она содержится, должен быть указан в свойствах
SG> проекта в строке "Build with runtime packages".
SG> 2. Создаем обычным путем (через New -> Form) форму.
SG> 2а. F12, лезем в исходник формы, правим:
SG> TMyDescendantForm = class ( TForm )
SG> на
SG> TMyDescendantForm = class ( TMyAncestorForm )
SG> 2б. F12, Alt+F12, лезем в текст dfm-ки, правим:
SG> object MyDescendantForm : TMyDescendantForm
SG> на
SG> inherited MyDescendantForm : TMyDescendantForm.
SG> Все, что между этой строкой и end, удаляем.
SG> 3. Alt+F12 - мы снова в дизайнере и любуемся на созданную
SG> форму. Компилим, запускаем - ПАШЕТ!!!

SG> Фишка в том, что дизайнеру на этапе проектирования формы нужен
SG> прямой доступ к ресурсу предка формы - из скомпиленного пакета
SG> оного дизайнер вытащить не может. Но при запуске программы и
SG> загрузке пакетов механизм чтения ресурсов форм работает
SG> нормально. Это номер раз.

SG> Далее, многих конфузит то, что форма обычно визуально наследуется
SG> посредством выбора New -> <Project> -> <Желаемая форма>.
SG> Естественно, что это всего лишь красивая оболочка для выполнения
SG> описанных выше тривиальных ручных операций. При этом, на самом
SG> деле, совершенно неважно, где реально находится форма-предок:
SG> была бы она видна текущему проекту да скомпиленный пакет с ней
SG> корректно подключался бы в рантайме. Это номер два.

Большое человеческое спасибо! Классный способ! Давно его искал.

BTW, пункт 0, IMHO, не нужен,
а пункт 2 все-таки можно осуществить привычным способом:
- в Project Manager-е выбрать (сделать текущим) нужный пакет
- и File -> New -> <нужный пакет> -> <Желаемая форма>.

--
Vitaliy Lyanchevskiy (E-mail: elic@operamail.com)



 
Stanbab   (2002-05-28 15:22) [4]

Большое спасибо! Все сработало. Я почти все так и делал, за исключением того, что регистрировал форму с помощью RegisterCustomModule и не включал пакет в "Build with runtime packages".



Страницы: 1 вся ветка

Текущий архив: 2002.06.06;
Скачать: CL | DM;

Наверх




Память: 0.48 MB
Время: 0.01 c
1-17849
Серг
2002-05-25 15:08
2002.06.06
Знатоки, подскажите, как на основе ф-и (ниже) перевести рис.


6-18096
DANTIST
2002-03-23 17:30
2002.06.06
Как отправить E-mail из проги, желательно с приклеплённым файлом????


1-17850
Грифон
2002-05-24 22:47
2002.06.06
Симплекс-метод


1-17975
yozhik
2002-05-28 14:07
2002.06.06
Получение пути к программе, связанной с расширением


14-18151
anod
2002-05-02 18:43
2002.06.06
Книги по Win32 Api для Delphi