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

Вниз

Связь Dll и TPanel   Найти похожие ветки 

 
Warstone ©   (2005-06-12 23:23) [0]

Ситуация: Есть приложение, в нем есть панель DllPanel. Есть Dll, в которой при вызове функции RunDll(APanel:TPanel); stdcall; В эту панель пихаются компоненты TButton, TLabel. Для отрисовки этих компонент надо Установить у них св-во Parent:=APanel. На это месте возникает ошибка EConversionError Cannot assign TFont to TFont - Как с этим бороться или обойти это?
Начальная задача: Из Dll создавать компоненты на компоненте родителе - приложения


 
Defunct ©   (2005-06-12 23:29) [1]

классическая проблема.
> Как с этим бороться или обойти это?
Компилировать и хост приложение и DLL с галочкой Build with Run-Time packages.


 
Warstone ©   (2005-06-12 23:59) [2]

Большое ПАСИБО! Всё работает. Но чтоб до конца... Зачем это надо было сделать?


 
-=XP=- ©   (2005-06-13 00:11) [3]

TFont в приложении и TFont в DLL - разные классы. Более того, для DLL класс TFont из приложения - не класс вовсе, а некая абстрактная ссылка. И наоборот. Все это из-за того, что RTTI (Run-Time Type Information) в DLL и в приложении - разные. Компиляция с использованием Run-Time Packages позволяет объединить RTTI о некоторых типах данных воедино. Но вообще, предавать из DLL в приложение, и из приложения в DLL ссылки на объекты - порочная практика. Ибо достаточно будет перекомпилировать какой-то (обычно сторонний) пакет отдельно от DLL или приложения - и вся эта связка рухнет с грохотом.


 
Profi ©   (2005-06-13 14:14) [4]

Warstone ©   (12.06.05 23:59) [2]
А чтобы все работало без Build with Run-Time packages, то нужно делать через interface (как сам еще не разобрался).


 
VVV-First   (2005-06-13 15:51) [5]

а я делал так
Parent := nil
ParentWindow := parent (тот на который ставится компонент) почему так сам незнаю ено у меня работало:)_


 
Profi ©   (2005-06-13 16:18) [6]

VVV-First   (13.06.05 15:51) [5]
Блин, ну ты гений! Я мозги парил, а оказалось действительно работает! Зато с plugin"ом через interface разобрался.


 
VVV-First   (2005-06-13 16:24) [7]


> Я мозги парил,
ха ты парил , сам два дня не спал:)))))))))


 
Profi ©   (2005-06-13 16:26) [8]

VVV-First   (13.06.05 16:24) [7]
Я уже около месяца мучился. Читал все про COM и Interface. Да еще экзамены приходилось сдавать.


 
VVV-First   (2005-06-13 16:28) [9]

ну сочувствую только:)


 
Profi ©   (2005-06-13 16:29) [10]

VVV-First   (13.06.05 16:28) [9]
Кстати. Чего-то не могу ничего на OnClick повесить. Ошибок нет, но ничего и не происходит.


 
VVV-First   (2005-06-13 16:31) [11]

ну чего так я все вещал очень даже хорошо получается


 
VVV-First   (2005-06-13 16:31) [12]

как ты это делаешь? и что он говорит?


 
Profi ©   (2005-06-13 16:32) [13]

VVV-First   (13.06.05 16:31) [11]
Я так делаю:

procedure TForm1.Button1Click(Sender: TObject);
var P:Tpanel;
b:Tbutton;
begin
P:=TPanel(Inf.GetMainForm.FindComponent("ManagPanel"));
b:=Tbutton.Create(nil);
b.Caption:="Урааааааа!";
b.Parent:=nil;
b.ParentWindow:=p.Handle;
b.Top:=10;
b.Left:=10;
b.OnClick:=Form1.ClickButton;
end;


Procedure TForm1.ClickButton(Sender:Tobject);
begin
showmessage("");
end;


Ничего!


 
VVV-First   (2005-06-13 16:35) [14]

и это что все в библиотека напиванно?


 
Profi ©   (2005-06-13 16:38) [15]

VVV-First   (13.06.05 16:35) [14]
Короче ясно. В том то и дело, что мне нужна такая поддержка plugin"ов, чтобы сторонний разработчик если хотел, мог добавлять свои кнопки на любой компонент (Panel или саму Форму) и присваевать им свои процедуры.


 
VVV-First   (2005-06-13 16:45) [16]

я делал так

type
Tmy = class
procedure Onclick(sendr:Tobject);
end;

а потом объявлял переменную этого типа и присваивал его он-клик к тому компоненту , которому нам надо


 
Profi ©   (2005-06-13 16:51) [17]

VVV-First   (13.06.05 16:45) [16]
Ладно, буду еще думать!


 
VVV-First   (2005-06-13 16:52) [18]

давай:)


 
Profi ©   (2005-06-13 16:54) [19]

VVV-First   (13.06.05 16:52) [18]
Короче замес в том, что не обрабатывается именно само нажатие кнопки. Событие не передается в модулью



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

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

Наверх





Память: 0.49 MB
Время: 0.036 c
14-1118513659
Delphi-beginer
2005-06-11 22:14
2005.07.11
Квадратные уравнения.Помогите новечку.


1-1118401758
!Trinix
2005-06-10 15:09
2005.07.11
Время


14-1117999906
NeoVariant
2005-06-05 23:31
2005.07.11
Кто ловит музыку в ON-LINE!!! ВАМ СЮДА!!!


8-1110967985
Leeechhhh
2005-03-16 13:13
2005.07.11
Как сохранить скриншот в jpg


1-1119591049
Earth
2005-06-24 09:30
2005.07.11
Win





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