Форум: "Основная";
Текущий архив: 2007.08.26;
Скачать: [xml.tar.bz2];
ВнизДинамическое копирование частей форы из DLL Найти похожие ветки
← →
LeoTon © (2007-06-18 12:22) [0]Нужно скопировать панель, хранящуюся в DLL в главное окно программы. Ведь, простым присвоением Parent"ов тут не обойдешься...
Я использую такой код, который найден в инете, но не работает:
DLL
function crGetInterface(pn: Cardinal): Pointer; register;
begin
unForm.crFMain.Panel1.Parent := nil;
unForm.crFMain.Panel1.ParentWindow := pn;
Result := unForm.crFMain.Panel1;
end;
exports crGetInterface;
EXE
<credit>
func := GetProcAddress(crH,"crGetInterface");
TPanel(func(Form1.Handle)).Parent := Form1;
</credit>
Загрузка DLL происходит по всем правилам, там нареканий быть ен может. Ошибка срабатывает именно на вызове функции из DLL.
Первоистоник: http://www.delphirus.com/article70.html
Подскажите кому не трудно, где мне себе руки ровнять и как. По возможности, исправте код на правильный...
Зарание, спасибо.
← →
vpbar (2007-06-18 14:02) [1]Тут телепатов мало. И хоть я не телепат но попробую.
>>connecting to brain .... пи пи
>>ok
Вы проверьте ваша панель вообще создана, ибо если она nil, то ошибка буде
Вот у меня код в дллprocedure CreateForm; register;
begin
Form1:=TForm1.Create(nil);
end;
function crGetInterface(pn: Cardinal): Pointer; register;
begin
Form1.Panel1.Parent := nil;
Form1.Panel1.ParentWindow := pn;
Result := Form1.Panel1;
end;
exports crGetInterface,CreateForm;
Это код в программе....
procedure CreateForm; register; external "Project1.dll";
function crGetInterface(pn: Cardinal): Pointer; register; external "Project1.dll";
....
procedure TForm1.SpeedButton2Click(Sender: TObject);
var P:TPanel;
begin
CreateForm; // если не создать форму в длл то ошибка
P:= TPanel(crGetInterface(self.Handle));// поместим панель на форму
P.Top:=100; // позицию моно поменять
P.Left:=20; //
// хотя позвращать указатель не всегда гуд.
//В приложении придется использовать TPanel что увеличит размер exe
// лучще Хендл возвращать и посылать сообщения
end;
....
И все работает
Страницы: 1 вся ветка
Форум: "Основная";
Текущий архив: 2007.08.26;
Скачать: [xml.tar.bz2];
Память: 0.45 MB
Время: 0.046 c