EAccessViolation D6

From: Rob Solomon (agent_at_drrob1.com)
Date: 02/26/05


Date: Sat, 26 Feb 2005 15:57:32 -0500

I am going thru the Delphi lessons at about.com. In the MDI lesson I am
having touble. Any help would be appreciated.

Thanks

procedure TChildFr.LoadPicture;
var OpenPicDlg : TOpenPictureDialog;
begin
 OpenPicDlg := TOpenPictureDialog.Create(Self);
 if OpenPicDlg.Execute then begin
==> Image1.Picture.LoadFromFile(OpenPicDlg.FileName); EAccessViolation
 end;
 OpenPicDlg.Free;
end;

Full code
unit Main;

interface

uses
  Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls,
Forms,
  Dialogs, Menus;

type
  TMainFr = class(TForm)
    MainMenu1: TMainMenu;
    File1: TMenuItem;
    Newchild1: TMenuItem;
    CloseAll1: TMenuItem;
    Window1: TMenuItem;
    Cascade1: TMenuItem;
    Tile1: TMenuItem;
    ArrangeAll1: TMenuItem;
    LoadPicture1: TMenuItem;
    procedure Newchild1Click(Sender: TObject);
    procedure CloseAll1Click(Sender: TObject);
    procedure Cascade1Click(Sender: TObject);
    procedure Tile1Click(Sender: TObject);
    procedure ArrangeAll1Click(Sender: TObject);
    procedure LoadPicture1Click(Sender: TObject);
  private
    { Private declarations }
    procedure CreateChildForm (const childName : string);
    
  public
    { Public declarations }
  end;

var
  MainFr: TMainFr;

implementation

uses Childu, ExtDlgs;

{$R *.dfm}

procedure TMainFr.CreateChildForm
         (const childName : string);
  var Child: TChildFr;
begin
  Child := TChildFr.Create(Application);
  Child.Caption := childName;
end;

procedure TMainFr.Newchild1Click(Sender: TObject);
begin
 CreateChildForm('Child '+IntToStr(MDIChildCount+1));
end;

procedure TMainFr.CloseAll1Click(Sender: TObject);

var i: integer;

begin
for i:= 0 to MdiChildCount - 1 do
  MDIChildren[i].Close;

end;

procedure TMainFr.Cascade1Click(Sender: TObject);
begin
  Cascade;
end;

procedure TMainFr.Tile1Click(Sender: TObject);
begin
  Tile;
end;

procedure TMainFr.ArrangeAll1Click(Sender: TObject);
begin
  ArrangeIcons;
end;

procedure TMainFr.LoadPicture1Click(Sender: TObject);
begin
Childu.ChildFr.LoadPicture;
end;

end.

unit Childu;

interface

uses
  Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls,
Forms,
  Dialogs, ExtCtrls;

type
  TChildFr = class(TForm)
    Image1: TImage;
    procedure FormClose(Sender: TObject; var Action: TCloseAction);
  private
    { Private declarations }

  public
    { Public declarations }
    procedure LoadPicture;
  end;

var
  ChildFr: TChildFr;

implementation
uses ExtDlgs;
{$R *.dfm}

procedure TChildFr.FormClose(Sender: TObject; var Action: TCloseAction);
begin
 Action := caFree;
end;

procedure TChildFr.LoadPicture;
var OpenPicDlg : TOpenPictureDialog;
begin
 OpenPicDlg := TOpenPictureDialog.Create(Self);
 if OpenPicDlg.Execute then begin
  Image1.Picture.LoadFromFile(OpenPicDlg.FileName);
 end;
 OpenPicDlg.Free;
end;

end.



Relevant Pages