Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Основная";
Текущий архив: 2002.06.06;
Скачать: [xml.tar.bz2];

Вниз

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

 
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;
Скачать: [xml.tar.bz2];

Наверх





Память: 0.46 MB
Время: 0.007 c
1-17892
Лана Розанова
2002-05-27 12:06
2002.06.06
Chart


1-17956
SPeller
2002-05-27 21:28
2002.06.06
Комилятор Дельфей


3-17806
ZDN
2002-05-16 09:17
2002.06.06
Делаю простенький отчет с помощью QReport 3.


3-17829
Glonia Zbanov
2002-05-16 17:56
2002.06.06
Поиск в гриде-DBGridEh


3-17790
RDA
2002-05-15 21:43
2002.06.06
Запрос в связанных таблицах





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
Английский Французский Немецкий Итальянский Португальский Русский Испанский