Thema: Delphi MDI Problem :-(

Einzelnen Beitrag anzeigen

dorisdoloris

Registriert seit: 9. Nov 2005
44 Beiträge
 
#1

MDI Problem :-(

  Alt 18. Jan 2006, 18:13
Hallo ihr lieben ich habe folgendes Problem. Wenn ich eine Hauptform habe die "FormStyle (fsMDIForm)" ist und ich dann von dieser Hauptform aus im "OnActivate" Ereignis ein neues MDIChild aufrufen will dann klappt das. Hier mal der Code.

Delphi-Quellcode:

unit Unit1;

interface

uses
  Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs,ChildWin,
  StdCtrls;

type
  TfMain = class(TForm)
    procedure FormActivate(Sender: TObject);
    procedure FormCreate(Sender: TObject);
  private
    { Private-Deklarationen }
    procedure CreateMDIChild(const Name: string);
  public
    { Public-Deklarationen }
  end;

var
  fMain: TfMain;

implementation

{$R *.DFM}

procedure TfMain.CreateMDIChild(const Name: string);
var
  Child: TMDIChild;
begin
  //new MDI child window
  Child := TMDIChild.Create(Application);
  Child.Caption := Name;
end;

procedure TfMain.FormActivate(Sender: TObject);
begin

CreateMDIChild('NewWindow');

end;

procedure TfMain.FormCreate(Sender: TObject);
begin

end;

end.
Soweit so gut das klappt ja, aber wenn ich eine Hauptform habe die nur "FormStyle (fsNormal)" ist und ich auf dieser einen Button platziere und ich dann über diesen eine neue Form von "FormStyle (fsMDIForm)" öffne dann klappt es nicht mehr. Es wird zwar die neue Form geöffnet aber beim erzeugen eines MDIChild im "OnActivate" Ereignis der "MDI-Form" tritt folgender Fehler auf "Formular kann nicht erstellt werden. Zur Zeit sind keine MDI-Formulare aktiv."

Delphi-Quellcode:

// Code wo der Fehler auftritt

unit Unit1;

interface

uses
  Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs,
  StdCtrls, Buttons;

type
  TfMain = class(TForm)
    BitBtn1: TBitBtn;
    procedure BitBtn1Click(Sender: TObject);
  private
    { Private-Deklarationen }
  public
    { Public-Deklarationen }
  end;

var
  fMain: TfMain;

implementation

uses Unit2;

{$R *.DFM}


procedure TfMain.BitBtn1Click(Sender: TObject);
begin

fMDI.Show();


end;

end.

//-----------------------------------------------------------------------------

unit Unit2;

interface

uses
  Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs,
  Menus, ImgList, ComCtrls, ToolWin,ChildWin;

type
  TfMDI = class(TForm)
    MainMenu1: TMainMenu;
    Einstellungen1: TMenuItem;
    ToolBar1: TToolBar;
    ToolButton1: TToolButton;
    ToolButton2: TToolButton;
    ImageList1: TImageList;
    ToolButton3: TToolButton;
    procedure FormCreate(Sender: TObject);
    procedure ToolButton3Click(Sender: TObject);
  private
    { Private-Deklarationen }

  public
    { Public-Deklarationen }
    procedure CreateMDIChild(const Name: string);
  end;

var
  fMDI: TfMDI;


implementation

uses Unit1;

{$R *.DFM}


procedure TfMDI.CreateMDIChild(const Name: string);
var
  Child: TMDIChild;
begin
  //new MDI child window
  Child := TMDIChild.Create(Application);
  Child.Caption := Name;
end;


procedure TfMDI.FormCreate(Sender: TObject);
begin

CreateMDIChild('NewWindwow' + IntToStr(MDIChildCount + 1));

end;


end.

//-------------------------------------------------------------------------------
lg: doris
  Mit Zitat antworten Zitat