Главная страница
    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.034 c
14-42055
False_Delirium
2003-10-15 19:40
2003.11.13
Xaser III v2000 Super Tower


14-41970
Daniel
2003-10-19 12:31
2003.11.13
Есть ли способ


14-41961
Ketmar
2003-10-16 19:22
2003.11.13
DarkEyeProxy v0.3.0


9-40765
Ricks
2003-05-04 15:28
2003.11.13
Формат модели.


3-40837
SER
2003-10-16 19:16
2003.11.13
Перенос приложения использующего АДО и Аксесс на другой ПК





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