private
   
    procedure CreateMDIChild(const Name:string;const childtype:integer); var
  MainForm: TMainForm;implementationuses TXT_browse, RTF_browse, Image_browse;
          {$R *.dfm}   procedure TMainForm.CreateMDIChild(const Name:string;const childtype:integer);
   var    Child:TForm;
   begin
      case childtype of
             1:begin
               Child:=Ttxt_MDIChild.Create(Application);
               Child.Caption:=Name;
               if FileExists(Name) then
                 Child as Ttxt_MDIChild.Memo1.Lines.LoadFormFile(Name);
               end;
              2:begin
                Child:=TRichtxt_MDIChild.Create(Application);
                Child.Caption:=Name;
                if FileExists(Name) then
                  (Child as TRichtxt_MDIChild).Richedit1.Lines.LoadFormFile(Name);
                end;
               3:begin
                 Child:=TImage_MDIChild.Create(Application);
                Child.Caption:=Name;
                if FileExists(Name) then
                  (Child as TImage_MDIChild).image1.picture.LoadFormFile(Name);
                end;
    end;
procedure TMainForm.New_TXT_FileExecute(Sender: TObject);
begin
 CreateMDIChild('新TXT文件'+IntToStr(MDIChildCount+1),1);
end;procedure TMainForm.New_RichTxt_FileExecute(Sender: TObject);
begin
CreateMDIChild('新RichTxt文件'+IntToStr(MDIChildCount+1),2);
end;procedure TMainForm.Open_TXT_FileExecute(Sender: TObject);
begin
OPenDialog.Filter:='TXT文件(*.TXT)|*.txt)';
if OpenDialog.Execute then
   CreateMDIChild(OpenDialog.FileName,1);
end;procedure TMainForm.Open_RichTxt_FileExecute(Sender: TObject);
begin
OpenDialog.Filter:='RTF文件(*.RTF)|*.RTF';
if OpenDialog.Execute then
   CreateMDIChild(OpenDialog.Filename,2);
end;procedure TMainForm.Open_Image_FileExecute(Sender: TObject);
begin
OpenDialog.Filter:=GraphicFilter(TGraphic);
if OpenDialog.Execute then
   CreateMDIChild(OpenDialog.Filename,3);
end;procedure TMainForm.SaveExecute(Sender: TObject);
begin
if(self.ActiveMDIChild is Ttxt_MDIchild) then begin
   savedialog1.Title:='TXT文件保存为...';
   savedialog1.Filter:='TXT文件(*.TXT)|*.TXT';
   savedialog1.FileName:=self.ActiveMDIChild.Caption;
   if savedialog1.Execute then
      (self.ActiveMDIChild as Ttxt_MDIchild.Caption).memo1.Lines.savetofile(savedialog1.FileName);
  end else if(self.ActiveMDIChild is TRichtxt_MDIchild) then begin
              savedialog1.Title:='RTF文件保存为...';
              savedialog1.Filter:='RTF文件(*.RTF)|*.RTF';
              savedialog1.FileName:=self.ActiveMDIChild.Caption;
             if savedialog1.Execute then
                (self.ActiveMDIChild as TRICHtxt_MDIchild).RichEdit1.Lines.savetofile(savedialog1.FileName);
  end else if(self.ActiveMDIChild is TImage_MDIchild) then begin
              savedialog1.Title:='图形文件保存为...';
              savedialog1.FileName:=self.ActiveMDIChild.Caption;
             if savedialog1.Execute then
                (self.ActiveMDIChild as TImage_MDIchild).image1.picture.savetofile(savedialog1.FileName);
  end;
end;procedure TMainForm.Save_asExecute(Sender: TObject);
begin
if(self.ActiveMDIChild is Ttxt_MDIchild) then begin
   savedialog1.Title:='TXT文件保存为...';
   savedialog1.Filter:='TXT文件(*.TXT)|*.TXT';
   savedialog1.FileName:='';
   if savedialog1.Execute then
      (self.ActiveMDIChild as Ttxt_MDIchild).memo1.Lines.savetofile(savedialog1.FileName);
  end else if(self.ActiveMDIChild is TRichtxt_MDIchild) then begin
              savedialog1.Title:='RTF文件保存为...';
              savedialog1.Filter:='RTF文件(*.RTF)|*.RTF';
              savedialog1.FileName:='';
             if savedialog1.Execute then
                (self.ActiveMDIChild as TRICHtxt_MDIchild).RichEdit1.Lines.savetofile(savedialog1.FileName);
  end else if(self.ActiveMDIChild is TImage_MDIchild) then begin
              savedialog1.Title:='图形文件保存为...';
              savedialog1.FileName:='';
             if savedialog1.Execute then
                (self.ActiveMDIChild as TImage_MDIchild).image1.picture.savetofile(savedialog1.FileName);
  end;
end;procedure TMainForm.Close_winExecute(Sender: TObject);
begin
 self.ActionMDIChild.close;
end;procedure TMainForm.Exit_systemExecute(Sender: TObject);
begin
close;
end;procedure TMainForm.Win_HExecute(Sender: TObject);
begin
TileMode:=tbHorizontal;
Tile;
end;procedure TMainForm.Win_VExecute(Sender: TObject);
begin
TileMode:=tbVertical;
Tile;
end;procedure TMainForm.Win_CExecute(Sender: TObject);
begin
cascade;
end;procedure TMainForm.AboutExecute(Sender: TObject);
begin
AboutBox.showModal;
end;procedure TMainForm.OnTimer(Sender: TObject);
begin
statusbar1.Panels[2].Text:=datetimetostr(now);
end;end.
---------------以下为错误------------------------------
[Error] browse.pas(108): Undeclared identifier: 'LoadFormFile'
[Error] browse.pas(108): Operator not applicable to this operand type
[Error] browse.pas(114): Operator not applicable to this operand type
[Error] browse.pas(114): Missing operator or semicolon
[Error] browse.pas(120): Operator not applicable to this operand type
[Error] browse.pas(120): Missing operator or semicolon
[Error] browse.pas(123): Statement expected but 'PROCEDURE' found
[Error] browse.pas(156): Operator not applicable to this operand type
[Error] browse.pas(157): Undeclared identifier: 'savedialog1'
[Error] browse.pas(157): Missing operator or semicolon
[Error] browse.pas(158): Missing operator or semicolon
[Error] browse.pas(159): Missing operator or semicolon
[Error] browse.pas(160): 'THEN' expected but identifier 'Execute' found
[Error] browse.pas(162): Operator not applicable to this operand type
[Error] browse.pas(163): Missing operator or semicolon
[Error] browse.pas(164): Missing operator or semicolon
[Error] browse.pas(165): Missing operator or semicolon
[Error] browse.pas(166): 'THEN' expected but identifier 'Execute' found
[Error] browse.pas(168): Operator not applicable to this operand type
[Error] browse.pas(169): Missing operator or semicolon
[Error] browse.pas(170): Missing operator or semicolon
[Error] browse.pas(171): 'THEN' expected but identifier 'Execute' found
[Error] browse.pas(178): Operator not applicable to this operand type
[Error] browse.pas(179): Missing operator or semicolon
[Error] browse.pas(180): Missing operator or semicolon
[Error] browse.pas(181): Missing operator or semicolon
[Error] browse.pas(182): 'THEN' expected but identifier 'Execute' found
[Error] browse.pas(184): Operator not applicable to this operand type
[Error] browse.pas(185): Missing operator or semicolon
[Error] browse.pas(186): Missing operator or semicolon
[Error] browse.pas(187): Missing operator or semicolon
[Error] browse.pas(188): 'THEN' expected but identifier 'Execute' found
[Error] browse.pas(190): Operator not applicable to this operand type
[Error] browse.pas(191): Missing operator or semicolon
[Error] browse.pas(192): Missing operator or semicolon
[Error] browse.pas(193): 'THEN' expected but identifier 'Execute' found
[Error] browse.pas(200): Undeclared identifier: 'ActionMDIChild'
[Error] browse.pas(200): Missing operator or semicolon
[Error] browse.pas(203): Statement expected but 'PROCEDURE' found
[Error] browse.pas(227): Undeclared identifier: 'AboutBox'
[Error] browse.pas(73): Unsatisfied forward or external declaration: 'TMainForm.Save_asExecute'
[Error] browse.pas(74): Unsatisfied forward or external declaration: 'TMainForm.Close_winExecute'
[Fatal Error] browse_Project1.dpr(9): Could not compile used unit 'browse.pas'

解决方案 »

  1.   

    LoadFormFile -> LoadFromFile
      

  2.   

    因为手上没有这个单元USE的其他UNIT,所以只能大概说一下。
    1.[Error] browse.pas(108): Undeclared identifier: 'LoadFormFile'
     呵呵 是LOADFROMFILE不是LOADFORMFILE。2.[Error] browse.pas(108): Operator not applicable to this operand type
    类似于这样的:
        (Child as TRichtxt_MDIChild).Richedit1.Lines.LoadFormFile(Name);
    最好改成:
    with chile as TRichtxt_MDIChild do
    begin
    Richedit1.Lines.LoadFormFile(Name);
    end;
    这样的错误还多,不再累述
    3.[Error] browse.pas(114): Missing operator or semicolon
    同上4。[Error] browse.pas(123): Statement expected but 'PROCEDURE' found
    这样的错误是因为一个PROCEDURE没有完全地用BEGIN,END包括,却又开始了新的一个PROCEDURE。5。[Error] browse.pas(157): Undeclared identifier: 'savedialog1'
    SAVEDIALOG1没有声明。也就是说可能你写错了DIALOG控件的名字6。[Error] browse.pas(160): 'THEN' expected but identifier 'Execute' found
     在这一句   if savedialog1.Execute then 这里报错,可能也是因为没有这个叫SAVIEDIALOG1的控件的原因
    7。[Error] browse.pas(200): Undeclared identifier: 'ActionMDIChild'
    没有这个对象,ACTIONMDICHILD;8。[Error] browse.pas(227): Undeclared identifier: 'AboutBox'
    ABOUTBOX没有声明;8。declaration: 'TMainForm.Save_asExecute'
    你在开始声明了Save_asExecute这个过程,但是没有这个过程的实际内容。9。declaration: 'TMainForm.Close_winExecute' 
    同上,是这个过程Close_winExecute
      

  3.   

    unit browse;interfaceuses
      Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
      Dialogs, ComCtrls, Menus, StdCtrls, ToolWin, ImgList, ExtCtrls, StdActns,
      ActnList;type
      TMainForm = class(TForm)
        StatusBar1: TStatusBar;
        MainMenu1: TMainMenu;
        N1: TMenuItem;
        N2: TMenuItem;
        N3: TMenuItem;
        N4: TMenuItem;
        XT2: TMenuItem;
        RichTxt2: TMenuItem;
        N5: TMenuItem;
        N6: TMenuItem;
        N7: TMenuItem;
        N8: TMenuItem;
        N9: TMenuItem;
        N10: TMenuItem;
        N11: TMenuItem;
        N12: TMenuItem;
        CtrlX1: TMenuItem;
        CtrlC1: TMenuItem;
        CtrlV1: TMenuItem;
        N13: TMenuItem;
        N14: TMenuItem;
        N15: TMenuItem;
        N16: TMenuItem;
        RichTxt1: TMenuItem;
        XTNCtrlN1: TMenuItem;
        ImageList1: TImageList;
        ToolBar1: TToolBar;
        ToolButton1: TToolButton;
        ToolButton_copy: TToolButton;
        ToolButton_cut: TToolButton;
        ToolButton_paster: TToolButton;
        ToolButton2: TToolButton;
        ToolButton_binlie: TToolButton;
        ToolButton_chuezhi: TToolButton;
        ToolButton_chengdie: TToolButton;
        Timer1: TTimer;
        OpenDialog: TOpenDialog;
        SaveDialog: TSaveDialog;
        ActionList1: TActionList;
        New_TXT_File: TAction;
        New_RichTxt_File: TAction;
        Open_TXT_File: TAction;
        Open_RichTxt_File: TAction;
        Open_Image_File: TAction;
        Save: TAction;
        Save_as: TAction;
        Close_win: TAction;
        Exit_system: TAction;
        Edit_Cut: TEditCut;
        Edit_Copy: TEditCopy;
        Edit_Paste: TEditPaste;
        Win_H: TAction;
        Win_V: TAction;
        Win_C: TAction;
        About: TAction;
        procedure New_TXT_FileExecute(Sender: TObject);
        procedure New_RichTxt_FileExecute(Sender: TObject);
        procedure Open_TXT_FileExecute(Sender: TObject);
        procedure Open_RichTxt_FileExecute(Sender: TObject);
        procedure Open_Image_FileExecute(Sender: TObject);
        procedure SaveExecute(Sender: TObject);
        procedure Save_asExecute(Sender: TObject);
        procedure Close_winExecute(Sender: TObject);
        procedure Exit_systemExecute(Sender: TObject);
        procedure Win_HExecute(Sender: TObject);
        procedure Win_VExecute(Sender: TObject);
        procedure Win_CExecute(Sender: TObject);
        procedure AboutExecute(Sender: TObject);
        procedure OnTimer(Sender: TObject);
      

  4.   

    为什么把1:begin
                   Child:=Ttxt_MDIChild.Create(Application);
                   Child.Caption:=Name;
                   if FileExists(Name) then
                     Child as Ttxt_MDIChild.Memo1.Lines.LoadFormFile(Name);
                   end;
    改成
    1:begin
                   Child:=Ttxt_MDIChild.Create(Application);
                   Child.Caption:=Name;
                   if FileExists(Name) then
                     with child as Ttxt_MDIChild do
                        begin
                         Memo1.Lines.LoadFromFile(Name);
                        end;
    还是报
    [Error] browse.pas(108): Operator not applicable to this operand type
      

  5.   

    改成下面的就应该好了
    1:begin
                   Child:=Ttxt_MDIChild.Create(Application);
                   Child.Caption:=Name;
                   if FileExists(Name) then
                         Child.Memo1.Lines.LoadFromFile(Name);
      

  6.   

    : lxl(蚊蚊) 给你分析得够细了,自己认真查查吧,写程序本来就是和BUG打交道,有点耐心嘛