|
|
Регистрация | << Правила форума >> | FAQ | Пользователи | Календарь | Поиск | Сообщения за сегодня | Все разделы прочитаны |
|
Опции темы | Поиск в этой теме | Опции просмотра |
#1
|
|||
|
|||
Динамическое создание компонентов на модальной форме
Всем привет.
Не пойму в чем проблема, создаю модальную форму, на ней в onCreate должны динамически создаваться компоненты, но они создаются только если владельцем является панель. В чем может быть дело? Тут все прекрасно работает Код:
procedure TForm1.FormCreate(Sender: TObject); var Memo: TMemo; begin Memo:= TMemo.Create(Form1); Memo.Parent:= Form1; end; А тут нет Код:
procedure TForm1.btn1Click(Sender: TObject); var Form2: TForm2; begin Form2:= TForm2.Create(Application); Form2.ShowModal; end; // unit2 procedure TForm2.FormCreate(Sender: TObject); var Memo: TMemo; begin Memo:= TMemo.Create(Form2); Memo.Parent:= Form2; end; |
#2
|
|||
|
|||
потому что в момент OnCreate переменная Form2 еще не инициализированна (ну или там указатель на другой экземпляр формы, если переменная переиспользуется). Надо использовать Self:
Код:
procedure TForm2.FormCreate(Sender: TObject); var Memo : TMemo; Button : TButton; begin Button := TButton.Create(Self); Button.Parent := Self; Button.ModalResult := mrOK; Button.Top := 8; Button.Left := 8; Button.Caption := 'OK'; Memo := TMemo.Create(Self); Memo.Parent := Self; Memo.Top := Button.Top + Button.Height + 8; Memo.Left := 8; Memo.Lines.Text := 'Created in OnCreate'; end; |
Этот пользователь сказал Спасибо lmikle за это полезное сообщение: | ||
aford (10.09.2018)
|