Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > Delphi: Общие вопросы > динамическое создание MDI формы


Автор: rOOxus 13.9.2009, 20:21
Здравствуйте коллеги!

имеется MDI форма родитель TMainForm. при нажатии кнопочки создаю дите:

Код

procedure TMainForm.Button1Click(Sender: TObject);
var
   Form : TForm;
   Button : TButton;
begin
   Form := TForm.Create( nil );
   Form.FormStyle := fsMDIChild;
   Form.WindowState := wsMaximized;
   Form.BorderWidth := 1;
   Form.Caption := 'Дите';
   Form.Parent := MainForm;

   Button := TButton.Create( Form );
   Button.Parent := Form;
   Button.Caption := 'ОК';
   Button.Top := 10;
   Button.Left := 10;
end;


проблема в том что если создать два таких дитя, то при смене форкуса меду ними возникает матюк Cannot focus a disabled or invisible window.
может создаю как-то не правильно?..

Автор: pseud 15.9.2009, 10:46
а если так:
Код

type
  TMainForm = class(TForm)
    Button1: TButton;
    procedure Button1Click(Sender: TObject);
    procedure FormCreate(Sender: TObject);
  private
    FCount: Integer;
  public
    { Public declarations }
  end;

procedure TMainForm.FormCreate(Sender: TObject);
begin
  FCount := 0;
end;

procedure TMainForm.Button1Click(Sender: TObject);
var
  Form: TForm;
  Button: TButton;
begin
  Inc(FCount);
  Form := TForm.Create(Self);
  wtih Form do
  begin
    Name := 'ChildForm' + IntToStr(FCount);
    FormStyle := fsMDIChild;
    WindowState := wsMaximized;
    BorderWidth := 1;
    Caption := 'Дите';
    Parent := MainForm;
  end;

  Button := TButton.Create(Form);
  with Button do
  begin
    Parent := Form;
    Caption := 'ОК';
    Top := 10;
    Left := 10;
  end;
end;

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)