Форум: "Основная";
Текущий архив: 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