Unit CWinapp
……
type
  TWinApp = class(TApplication)
  private  public
    Function MsgBox(Text,Caption:string): Integer;
  end;implementationFunction TWinApp.MsgBox(Text,Caption:string): Integer;
begin
  Result:=messagebox(PChar(Text),PChar(Caption));   //为什么这里可以呢?
end;在Unit 1 中引用 CWinapp
什么不能直接使用 MsgBox 呢?
procedure TForm1.Button1Click(Sender: TObject);
var
  Winapp:TWinApp;
begin
  Winapp:=TWinApp.Create(self);
  Winapp.MsgBox('Delphi IS GOODS Boy!','Capiton');  //可以
  MsgBox('Delphi IS GOODS Boy!','Capiton');         //不可以
end;

解决方案 »

  1.   

    像pascal语言
    又是begian又是end的
    不喜欢{}多好
      

  2.   

    MsgBox('Delphi IS GOODS Boy!','Capiton');         //不可以
    =============================================================
    msgbox不是系统函数,不能直接使用啊,要加对象名的,可以用with语句
      

  3.   

    with winapp do
        MsgBox('Delphi IS GOODS Boy!','Capiton1');         //不可以
      

  4.   

    因为你的Function MsgBox(Text,Caption:string): Integer;之是类TWinApp的一个对象,要引用类的对象,就要对类初化。你的MsgBox又不是一个全局变量。所以不能直接用。
      

  5.   

    type TWinApp = class(TApplication) ...
    "房子"↑搭好了、只有"主人"↓才能住呀! 呵呵~~~
    var Winapp:TWinApp;
      

  6.   

    如果你这样定义:
    var
      bt:TButton;
    begin
      bt:TButton.Create(self);
      bt.Caption:='aaa';    //可以
      Caption:='aaa';        //当然不可以了
    end;
      

  7.   

    Result:=messagebox(PChar(Text),PChar(Caption));   //为什么这里可以呢?messagebox 不是 TApplication 的方法函数吗?为什么可以直接使用,还有啊
    Application是在哪里定义的?
    messagebox 是系统函数吗?