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

Вниз

Cannot assign a TFont to a TFont   Найти похожие ветки 

 
prockrut   (2003-12-01 02:09) [0]

Скомпилил Dll, в которой есть фунция

functiun GetPanel(AOwner:TComponent):TPanel;
begin
Panel:=TPanel.Create(AOwner);
Panel.Parent:=AOwner;
Result:=Panel;
end;


из программы пытаюсь получить панель
...
Panel:=GetPanel(self); //self - допустим форма
...

в результате искючение типа не могу назначить фонт фонту.
в чем засада?


 
Passer-by   (2003-12-01 02:28) [1]

1. Переменная Panel должна быть описана - Var Panel: TPanel;
2. "Родителем" (parent) должен быть объект класса не ниже TWinControl.
Так у меня сработало, правда в dll функцию не выносил.


 
prockrut   (2003-12-01 02:49) [2]

function GetPanel(AOwner:TComponent):TPanel;
var
Panel:TPanel //забыл вписать просто
begin
Panel:=TPanel.Create(AOwner);
Panel.Parent:=AOwner;
Result:=Panel;
end;


Форма - порождение от TWinControl

эта комбинация не работает именно при использовании Dll.


 
Jack   (2003-12-01 03:16) [3]

Почитай внимательнее литературу. В качестве параметров функций DLL нельзя передавать компоненты. (Елманова-Трепалин-Тенцер Delphi6 и COM). Я не пробовал но попробуй помудрить с указателм.


 
Passer-by   (2003-12-01 04:33) [4]

Надеюсь, что догадываюсь в чем дело, но надо подумать.
На сейчас есть такое решение (извращение, но работает).
В dll-ке:

TFunctionGetPanel = function (AOwner: TWinControl): TPanel;

function GetPanel(FunctionGetPanel: TFunctionGetPanel; AOwner: TWinControl): TPanel;
var
Panel:TPanel;
begin
Panel:=FunctionGetPanel(AOwner);
Panel.Parent:=AOwner;
Result:=Panel;
end;

В вызывающей ее программе:

Type

...

TFunctionGetPanel = function (AOwner: TWinControl): TPanel;

...

Var Panel: TPanel;

...

function SelfFunctionGetPanel(AOwner: TWinControl): TPanel;
begin
Result:=TPanel.Create(AOwner);
end;

procedure TForm1.Button1Click(Sender: TObject);
begin
Panel:=GetPanel(SelfFunctionGetPanel,self);
end;


 
prockrut   (2003-12-01 05:14) [5]

то Passer-by
только что "поизвращался"
действительно работает

правда функция, генерящая panel, находится в программе а не в dll.
Так что твой пример - "полное извращение" ж)

но идея понравилась


 
Dimka Maslov   (2003-12-01 10:13) [6]

Класс TFont в dll и класс TFont в exe, да и вообще все классы, находящиеся в разных модулях (module) составляют различные иерархии классов и ни IS, ни AS, ни Assign работать не будут


 
REA   (2003-12-01 10:28) [7]

Угу. Прав
> Dimka Maslov ©
Используй Packages.


 
me   (2003-12-01 12:20) [8]

Packages использовать необязательно, но обязательно компилить и хост-аппликацию, и библиотеку с run-time packages.



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

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

Наверх





Память: 0.46 MB
Время: 0.008 c
1-36615
bobtubob
2003-12-01 09:20
2003.12.12
Как передать переменные из программы в программу


1-36619
Zapped
2003-12-01 03:09
2003.12.12
Delphi 7 глюк редактора


1-36604
Relaxxx
2003-12-01 15:32
2003.12.12
Есть ли сочетание букв в слове???


14-36799
Mihey
2003-11-20 20:26
2003.12.12
Нужна помощь по MS Word.


1-36650
Blamyr
2003-11-30 23:04
2003.12.12
Длина текста





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