![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
Frame в dll
Ekaterina © (2002-09-03 10:10:00)Вроде и ситуация-то не хитрая. Я уже как-то спрашивала, но так ни чего и не прояснилось. Может кто-нибудь всё-таки знает.
Есть dll. В ней форма и фрейм.
library Project2;
uses
SysUtils,
Classes,
Forms,
Dialogs,
Unit1 in "Unit1.pas" {Frame1: TFrame},
Unit2 in "Unit2.pas" {Form2};
{$R *.res}
procedure Test;
begin
Form2:=TForm2.Create(Application);
try
frame1:=TFrame1.Create(Form2);
frame1.Parent:=Form2;
Form2.Show;
Application.ProcessMessages;
Sleep(2000);
finally
frame1.Free;
form2.Free;
end;
end;
exports
Test;
begin
end.
Вызываем процедуру Test из основной программы. Все работает. Теперь помещаем на фрейм какой-нибудь компонент с TStrings-ами, например, ComboBox. И задаём ему непустой Items (при пустом тоже всё нормально). На строкеframe1:=TFrame1.Create(Form2);получаем ошибку: "Error reading ComboBox1.Items.Strings: Control "Frame1" has no parent window".
Если то же самое делать без dll, то всё опять работает и с Items-ами.
Просьба: создание Items-ов в Runtime и т.п. не предлагать. Вопрос не в том, как это обойти, а почему не работает так?
Ekaterina (2002-09-03 11:16:00) [21]А конкретней?
Ученик (2002-09-03 11:10:00) [22]Ошибка тогда другая
Ekaterina (2002-09-03 11:08:00) [23]Да нет, у меня Application.Handle не равен 0. В dll он тот же, что и в основной программе.
Ученик (2002-09-03 10:50:00) [24]Проблема в том, что Application.Handle в DLL равен 0, инициализации его (Application.Handle) помогает показать форму, но ошибка все-равно происходит, правда другая