Fejl i multiple document interface eksempel
Hej,Jeg forsøger at lave dette her eksempel for at få en forståelse for mdi: http://delphi.about.com/od/objectpascalide/l/aa042500a.htm
Lige nu er jeg i gang med at oprette child forms og lukke dem igen. Og det er i at lukke dem, der kommer en fejl.
Når jeg kører koden uden at tilknytte FormClose i OnClose i Events for Child1Form, er der ingen fejl som sådan...Den opretter alle de childs jeg klikker. Men når jeg så forsøger mig med at lukke childs så lukker de ikke men bliver minimeret i stedet (som jo er default behavior, som jeg har læst mig til).
Da den ikke lukkede forsøgte jeg så at knytte FormClose (som skulle lukke i stedet for at minimere) fra codebehind til OnClose eventet og så kører koden igen, får jeg følgende fejl, når jeg forsøger at oprette child forms:
"Invalid property value"
Og den fejler i linjen
Child.Caption := childName;
i min MainForm...
Nogen der kan fortælle mig hvad jeg gør forkert?
mvh
simsen :-)
Min kode for de to forme:
unit MainForm;
interface
uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, Menus, Child1Form;
type
TfrMain = class(TForm)
MainMenu1: TMainMenu;
File1: TMenuItem;
Newchild1: TMenuItem;
CloseAll1: TMenuItem;
Window1: TMenuItem;
Cascade1: TMenuItem;
ArrangeAll1: TMenuItem;
procedure Newchild1Click(Sender: TObject);
procedure CloseAll1Click(Sender: TObject);
private
{ Private declarations }
procedure CreateChildForm(const childName : string);
public
{ Public declarations }
end;
var
frMain: TfrMain;
implementation
{$R *.dfm}
procedure TfrMain.CloseAll1Click(Sender: TObject);
var
i : integer;
begin
for i := 0 to MdiChildCount - 1 do
MDIChildren[i].Close;
end;
procedure TfrMain.CreateChildForm(const childName : string);
var Child: TfrChild;
begin
Child := TfrChild.Create(Application);
Child.Caption := childName;
end;
procedure TfrMain.Newchild1Click(Sender: TObject);
begin
CreateChildForm('Child '+IntToStr(MDIChildCount+1));
end;
end.
-------------------
unit Child1Form;
interface
uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs;
type
TfrChild = class(TForm)
private
{ Private declarations }
public
{ Public declarations }
procedure FormClose(Sender: TObject; var Action: TCloseAction);
end;
var
frChild: TfrChild;
implementation
{$R *.dfm}
procedure TfrChild.FormClose(Sender: TObject; var Action: TCloseAction);
begin
Action := caFree;
end;
end.