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

Вниз

Экспорт TToolBar из Dll-ки   Найти похожие ветки 

 
mabus   (2003-10-27 18:52) [0]

Приветствую всех! Возникла необходимость отобразить на главной форме ToolBar из другой формы, которая находится в Dll. Я внедряю эту дочернюю форму на главную кодом вроде этого в Dll:
1) Добавляю в дочернюю форму конструктор:
constructor TChildForm.Create(ParentFormHandle:THandle);
begin
inherited CreateParented(ParentFormHandle);
self.BorderStyle := bsNone;
end;
2)Устанавливаю размер:

procedure CreateChildForm(AppHandle:THandle;
ParentFormHandle:THandle;
SameSizeRect:TRect);
var ChildForm:TChildForm;
begin
Application.Handle:=AppHandle;

ChildForm := TChildForm.Create(ParentFormHandle);
ChildForm.Left := SameSizeRect.Left;
ChildForm.Top := SameSizeRect.Top;
ChildForm.Height := SameSizeRect.Bottom - SameSizeRect.Top;
ChildForm.Width := SameSizeRect.Right - SameSizeRect.Left;
end;

А вот перенести ToolBar на главную форму не получается. Если обе формы находятся в длл или в основной программе - все нормально, а вот если одна в длл, а вторая - в основном проекте - никак. Выдается ошибка типа
"Cannot assign a TFont to a TFont". Может кто сталкивался с подобным?


 
Юрий Зотов   (2003-10-27 20:04) [1]

DLL и EXE компилятся, как два отдельных самостоятельных проекта, которым друг о друге ничего не известно. Соответственно, в каждом из них компилятор строит СВОИ таблицы с информацией о классах (VMT и пр.). То есть, получается, что класс TAnyClass в EXE и тот же самый класс в DLL - это два РАЗНЫХ класса. Отсюда и идут ошибки типа "Cannot assign a TFont (из DLL) to a TFont (в EXE) ".

Если все общие классы вынести в пакет и оба проекта (EXE и DLL) скомпилировать с run-time пакетами (включая пакеты VCL), то все будет нормально. Другой вариант - использовать COM.


 
Юрий Федоров   (2003-10-27 20:42) [2]

Еще вариант - создавать TChildForm обычным конструктором
inherited Create(nil);
А потом установить ей ParentWindow (HWND)


 
mabus   (2003-10-28 00:02) [3]

Ребята, спасибо за внимание. Обидно, что не получится напрямую изменить место отображения компонента, но тут уж ничего не поделаешь. Спасибо.



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

Форум: "Основная";
Текущий архив: 2003.11.13;
Скачать: [xml.tar.bz2];

Наверх





Память: 0.45 MB
Время: 0.037 c
4-42312
wwolf
2003-09-05 09:17
2003.11.13
Блокировка спящего режима


1-41504
Talla2k
2003-10-28 12:56
2003.11.13
Delphi and Excel


1-41241
Ganjo
2003-10-30 21:09
2003.11.13
StringGrid


3-41078
Chaked
2003-10-23 16:30
2003.11.13
Доступ к записям


7-42192
ZioN
2003-08-28 15:13
2003.11.13
Работа с CD-Rom





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