Как отобразить модально MDIChild форму

Материал из DRKB

Как отобразить модально MDIChild форму[править | править код]

Как выполнить код после создания MDIChild-формы но до появления ее на экране?Как отобразить MDIChild-форму модально?

1. Убираешь свою MDIChild форму из автосоздания: (MainMenu) Project->Options->Forms. Там её перебрасываешь в: Available forms

2. Переключаешься на свою MDIChild форму и дописываешь в описание класса(пусть например твой класс формы для MDIChild называется TForm2):


 TForm2 = class(TForm)
    ...
    procedure CreateWindowHandle(const Params: TCreateParams); override;
  private
    { Private declarations }
  public


3. Реализуешь эту процедуру:


procedure TForm2.CreateWindowHandle(const Params: TCreateParams);
var 
  Comp: TForm2;
begin
  inherited;
  Comp := TForm2(Application.Components[Application.ComponentCount-1]);
  Comp.Visible := False;
end;


uses Unit2; // ссылка на модуль MDIChild формы

{$R *.dfm}

procedure TForm1.Button1Click(Sender: TObject);
var
  vv: TForm2;
begin
  vv := TForm2.Create(Application);
  //... Здесь форма не видна
  vv.Memo1.Lines.Add('123123'); // Типо что-то заполняем на MDIChild форме
  Caption := '2';
  Sleep(2000);
  Caption := '0';
  //.. Здесь форма до сих пор не видна
  vv.Show;
end;


Source: Взято с Vingrad.ru http://forum.vingrad.ru
ID: 00505