文本编辑器程序的多个错误!!
程序如下:
unit untMain;
interface
uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, Menus, ExtCtrls, ComCtrls, AppEvnts, ImgList, ActnList,
StdActns, ExtActns, ToolWin;
type
TfrmMain = class(TForm)
ActionList1: TActionList;
MainMenu1: TMainMenu;
PopupMenu1: TPopupMenu;
ImageList1: TImageList;
ApplicationEvents1: TApplicationEvents;
StatusBar1: TStatusBar;
File1: TMenuItem;
Edit1: TMenuItem;
Search1: TMenuItem;
Window1: TMenuItem;
Help1: TMenuItem;
EditCut1: TEditCut;
EditCopy1: TEditCopy;
EditPaste1: TEditPaste;
EditSelectAll1: TEditSelectAll;
EditUndo1: TEditUndo;
EditDelete1: TEditDelete;
RichEditBold1: TRichEditBold;
RichEditItalic1: TRichEditItalic;
RichEditUnderline1: TRichEditUnderline;
RichEditStrikeOut1: TRichEditStrikeOut;
RichEditBullets1: TRichEditBullets;
RichEditAlignLeft1: TRichEditAlignLeft;
RichEditAlignRight1: TRichEditAlignRight;
RichEditAlignCenter1: TRichEditAlignCenter;
WindowClose1: TWindowClose;
WindowCascade1: TWindowCascade;
WindowTileHorizontal1: TWindowTileHorizontal;
WindowTileVertical1: TWindowTileVertical;
WindowMinimizeAll1: TWindowMinimizeAll;
WindowArrange1: TWindowArrange;
FileOpen1: TFileOpen;
FileSaveAs1: TFileSaveAs;
FilePrintSetup1: TFilePrintSetup;
FileExit1: TFileExit;
SearchFind1: TSearchFind;
SearchFindNext1: TSearchFindNext;
SearchReplace1: TSearchReplace;
SearchFindFirst1: TSearchFindFirst;
FileNew1: TAction;
FileSave1: TAction;
FilePrintDlg1: TAction;
HelpAbout1: TAction;
Open1: TMenuItem;
SaveAs1: TMenuItem;
PrintSetup1: TMenuItem;
Exit1: TMenuItem;
New1: TMenuItem;
Save1: TMenuItem;
Print1: TMenuItem;
Cut1: TMenuItem;
Copy1: TMenuItem;
Delete1: TMenuItem;
SelectAll1: TMenuItem;
Undo1: TMenuItem;
Delete2: TMenuItem;
Bold1: TMenuItem;
Italic1: TMenuItem;
Underline1: TMenuItem;
Strikeout1: TMenuItem;
Bullets1: TMenuItem;
AlignLeft1: TMenuItem;
AlignRight1: TMenuItem;
Center1: TMenuItem;
Find1: TMenuItem;
FindNext1: TMenuItem;
Replace1: TMenuItem;
FindFirst1: TMenuItem;
Close1: TMenuItem;
Cascade1: TMenuItem;
ileHorizontally1: TMenuItem;
ileVertically1: TMenuItem;
MinimizeAll1: TMenuItem;
Arrange1: TMenuItem;
Help2: TMenuItem;
About1: TMenuItem;
ControlBar1: TControlBar;
ToolBar1: TToolBar;
ToolBar2: TToolBar;
ToolBar3: TToolBar;
ToolBar4: TToolBar;
ToolButton1: TToolButton;
ToolButton2: TToolButton;
ToolButton3: TToolButton;
ToolButton4: TToolButton;
ToolButton5: TToolButton;
ToolButton6: TToolButton;
ToolButton7: TToolButton;
ToolButton8: TToolButton;
ToolButton9: TToolButton;
ToolButton10: TToolButton;
ToolButton11: TToolButton;
ToolButton12: TToolButton;
ToolButton13: TToolButton;
ToolButton14: TToolButton;
ToolButton15: TToolButton;
ToolButton16: TToolButton;
ToolButton17: TToolButton;
ToolButton18: TToolButton;
ToolButton19: TToolButton;
ToolButton20: TToolButton;
ToolButton21: TToolButton;
ToolButton22: TToolButton;
ToolButton23: TToolButton;
ToolButton24: TToolButton;
ToolButton25: TToolButton;
ToolButton26: TToolButton;
procedure FormCreate(Sender: TObject);
procedure ApplicationEvents1Hint(Sender: TObject);
private
{ Private declarations }
public
{ Public declarations }
procedure UpdateStatusBar;
end;
var
frmMain: TfrmMain;
implementation
uses untChild;
{$R *.dfm}
procedure TfrmMain.FormCreate(Sender: TObject);
begin
FileSaveAs1.Dialog.InitialDir:=ExtractFilePath(Application.ExeName)+'Files\';
FileOpen1.Dialog.InitialDir:=ExtractFilePath(Application.ExeName)+'Files\';
end;
procedure TfrmMain.ApplicationEvents1Hint(Sender: TObject);
begin
StatusBar1.Panels[0].Text:=GetLongHint(Application.Hint);
end;
procedure TfrmMain.UpdateStatusBar;
begin
if ActiveMDIChild<>nil then begin
StatusBar1.Panels[1].Text:=IntToStr((ActiveMDIChild as TfrmChild).RichEdit1.CaretPos.Y+1)+':'+IntToStr((ActiveMDIChild as TfrmChild).RichEdit1.Caretpos.X+1);
if(ActiveMDIChild as TfrmChild).IsModified then
StatusBar1.Panels[2].Text:='Modified.';
else
StatusBar1.Panels[2].Text:='Not Modified.';
end;
end;
end.
unit untChild;
interface
uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, StdCtrls, ComCtrls;
type
TfrmChild = class(TForm)
RichEdit1: TRichEdit;
procedure FormActivate(Sender: TObject);
private
{ Private declarations }
procedure SetFileName(const Value:string);
procedure SetIsModified(const Value:Boolean);
procedure SetIsNamed(const Value:Boolean);
public
{ Public declarations }
{ 属性 }
property IsModified:Boolean read FIsModified write SetIsModified; //说明文件是否被修改
property IsNamed:Boolean read FIsNamed write SetIsNamed; //说明文件是否被命名
property FileName:string read FFileName write SetFileName; //读写文件名
{ 方法 }
constructor Create(AOwner:TComponent);override;
procedure LoadFromFile(AFileName:string);
procedure SaveFile(AFileName:string);
end;
var
frmChild: TfrmChild;
implementation
{$R *.dfm}
procedure TfrmChild.SetFileName(const Value:string);
begin
FFileName:=Value;
Caption:=Value;
end;
procedure TfrmChild.SetIsModified(const Value:Boolean);
begin
FIsModified:=Value;
end;
procedure TfrmChild.SetIsNamed(const Value:Boolean);
begin
FIsNamed:=Value;
end;
constructor TfrmChild.Create (AOwner:TComponent);override;
begin
inherited;
IsModified:=False;
IsNamed:=False;
FileName:='';
FileName:='未命名';
end;
procedure TfrmChild.LoadFromFile(AFileName:string);
begin
RichEdit1.Lines.loadFile(AFileName);
IsNamed:=True;
FileName:=AFileName;
Caption:=AFileName;
IsModified:=False;
end;
procedure TfrmChild.SaveFile(AFileName:string);
begin
IsNamed:=True;
FileName:=AFileName;
RichEdit1.Lines.SaveToFile(AFileName);
IsModified:=False;
Caption:=AFileName;
end;
end.
问题如下:
Build
[Error] untChild.pas(21): Field or method identifier expected
[Error] untChild.pas(22): Field or method identifier expected
[Error] untChild.pas(23): Field or method identifier expected
[Error] untChild.pas(38): Undeclared identifier: 'FFileName'
[Error] untChild.pas(43): Undeclared identifier: 'FIsModified'
[Error] untChild.pas(47): Undeclared identifier: 'FIsNamed'
[Error] untChild.pas(49): Unknown directive: 'override'
[Error] untChild.pas(59): Undeclared identifier: 'loadFile'
[Error] untChild.pas(12): Unsatisfied forward or external declaration: 'TfrmChild.FormActivate'
[Fatal Error] untMain.pas(134): Could not compile used unit 'untChild.pas'
[解决办法]
错误都在untChild单元。
1.
private
{ Private declarations }
FIsModified, FIsNamed: Boolean;
FFileName: string;
procedure SetFileName(const value: string);
红色的是要增加的部分。
2. 把这后面的“override;”去掉:
constructor TfrmChild.Create (AOwner:TComponent);override;
3. 把loadFile改成LoadFromFile。
4. 把鼠标放在“procedure FormActivate(Sender: TObject);”所在行,然后Ctrl+Shift+C,并实现FormActivate。它响应窗体的OnActivate事件。
[解决办法]
你看StatusBar1的SimplePanel是不是False,然后Panels是不是至少有3个Panel;不是的话你改过来。
[解决办法]
看它的Panels属性,看是否至少有3项