![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
Хелп! НЕ ПОНИМАЮ В ЧЕМ ДЕЛО ! [D5, D6, Win95/98, WinME, NT4, Win2k, WinXP]
NeyroSpace © (2002-08-22 14:14:00)Есть 3а Unit"а. В первом Form1, во втором Form2, созданая как модал Form1, и Unit3 в котором хранится процедура динамического создания обьекта(ов).
Из Unit3"a динамически создаю компонент на Form1, расположенной в Unit1"е:
Edit[CurEditComponent] := TEdit.CreateParented(Form1.Handle);
Все нормально, но как только я пытаюсь создать тот же самый компонент, для Form2 (модального окна Form1) - ничего не получается.
Edit[CurEditComponent] := TEdit.CreateParented(Form2.Handle);
по всем признакам компонент создается, но его не видно.
Однако, если текст создания перенести в Unit2 с модальной Form2, то все работает. Мне хотелось бы, поместить процеДУРУ динамического создания обьекта(ов) в отдельный модуль (чтобы не засорять Unit2), и передавать ему только параметры создания обьекта(ов), т.е. сделать некий универсальный юнит для дальнейшего использования.
Если кто-нить знает в чем трабла, помогите плизззз...
NeyroSpace (inside deep debuging) (2002-08-22 16:02:00) [1]Edit[CurEditComponent] := TEdit.CreateParented(ParentHandle);
Form2.InsertComponent(Edit[CurEditComponent]);
так тоже пробовал но это дело не меняет. Я заметил самое главное на обычной форме Form1 создается на Form2(модальной от Form1) нет.
Трабла именно в том что Form2 модальное.
Edit:array of TEdit;//SetLength не забываю :-)
Skier (2002-08-22 15:36:00) [2]>NeyroSpace
Покажи код : как ты создаёшь TEdit-ы на Form2
(строки Edit[CurEditComponent] := TEdit.CreateParented(Form2.Handle) - не достаточно...)
И что есть Edit[...] ?
NeyroSpace (2002-08-22 15:08:00) [3]Попробовал,не помогло. Значит трабла не в этом.
TEdit.CreateParented(Form1.Handle) - работает
TEdit.CreateParented(Form2.Handle) - нет
, где Form2 модальная относительно Form1.
Smithson (2002-08-22 14:53:00) [4]Когда ты указываешь лялялял.Create(Form1), ты уведомляешь лялялял, что его родителем числится Form1. Но надо еще уведомить Form1, что ему подсунули очередного ребенка. Form1.InsertComponent(лялялял).
NeyroSpace (2002-08-22 14:48:00) [5]Это одно и тоже, можно передавать handle родительского окна, можно название компонента родительского окна:
на прямую
Edit[CurEditComponent].parent = Form1
или через переменную, что надо в моем слуае
function (название sParent:String или Handle:Hwnd или Component:TWinControl родительского окна)//что ни передавай, ну никак не получается создать на модальном окне , то что легко создается на его родителе
var
TempComp:TWinControl;
sParent:string;
..
begin
..
sParent:="Form2";//уже и так :-)
TempComp:=TWinControl(Form2.FindComponent(sParent));
if TempComp<>nil then begin
ParentHandle := TempComp.Handle;
//и через хендел, компонент создается, его свойства читаются но его не видно
ShuraGrp (2002-08-22 14:36:00) [6]Не видно потому, что надо Edit[CurEditComponent].parent = Form1.
Могу ошибаться, но TEdit.CreateParented(Form1);