Форум: "Основная";
Текущий архив: 2002.08.26;
Скачать: [xml.tar.bz2];
ВнизFrame в dll Найти похожие ветки
← →
Ekaterina (2002-08-15 10:10) [0]Есть dll. В ней есть фрейм и форма. Экспортируется процедура, которая помещает фрейм на форму.
procedure Test;
var f:TFrame1;
begin
Form2:=TForm2.Create(Application);
try
f:=TFrame1.Create(Form2);
f.Parent:=Form2;
Form2.Show;
Application.ProcessMessages;
Sleep(2000);
finally
f.Free;
form2.Free;
end;
end;
Это вроде работает. Теперь берём на фрейм помещаем ComboBox и задаём любой непустой Items (если пустой, то всё нормально).
На строкеf:=TFrame1.Create(Form2);
получаем ошибку:
"Error reading ComboBox1.Items.Strings: Control "Frame1" has no parent window".
Что надо сделать???
← →
Skier (2002-08-15 11:33) [1]>Ekaterina
procedure Test;
var f:TFrame1;
begin
Form2:=TForm2.Create(Application);
try
f:=TFrame1.Create(Form2);
f.Parent:=Form2;
f.ComboBox1.Items.Add("New Item");
Form2.Show;
Application.ProcessMessages;
Sleep(2000);
finally
f.Free;
form2.Free;
end;
end;
← →
Ekaterina (2002-08-15 11:38) [2]Это, конечно, способ обойти проблему, но не её решение. Интересно всё-таки, в чём ошибка в моём варианте.
← →
Skier (2002-08-15 11:57) [3]>Ekaterina
> Интересно всё-таки, в чём ошибка в моём варианте.
Окно ComboBox-а ещё не создано, а он уже пытается отрисовывать
свои Items-ы.
Вообще-то можно написать свой класс TYourComboBox и
в перекрытом методе CreateWnd ( после inherited !)
задавать нужные Items-ы.
← →
Ekaterina (2002-08-15 12:04) [4]Вообще-то, если дело происходит не в dll, то работает и так. Всё создаётся нормально и с Items-ами. И вообще, он не должен пытаться отрисовывать Items-ы, пока не попытается отрисовывать форму. Сперва создаётся форма, потом все её компоненты, вместе с ComboBoxом должен создаться и Items. А рисование происходит после Form2.Show.
Страницы: 1 вся ветка
Форум: "Основная";
Текущий архив: 2002.08.26;
Скачать: [xml.tar.bz2];
Память: 0.45 MB
Время: 0.006 c