为什么呢?我是新手,没有分,抱歉,
unit Unit1;interfaceuses
  Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
  Dialogs, StdCtrls;type
  TForm1 = class(TForm)
    Button1: TButton;
    procedure Button1Click(Sender: TObject);
  private
    { Private declarations }
  public
    { Public declarations }
  end;
  TnewEdit1 = class(Tedit)
  property nickName:string read fnickName write setNickName;
  procedure ShowNickName ;
  private
    { Private declarations }
  fnickName:string;
  procedure setNickName(const value:string);
  public
    { Public declarations }
  end;
var
  Form1: TForm1;implementation{$R *.dfm}
procedure Tnewedit1.setNickName;
begin
showmessage(nickName);
end;
procedure TForm1.Button1Click(Sender: TObject);
begin
Tnewedit1.setNickName;
end;
end.

解决方案 »

  1.   

    你的类这样写根本就没法骗译
    第一个是setNickName方法应该放在属性定义前面才行吧
    第二个你的setNickName方法并未对FNickName负值
    所以这时你showmessage FNickName应该是相当于showmessage('');
    第三个setNickName不是类方法没理由可以TNewEdit1.setNickName这样子用法的,procedure Tnewedit1.setNickName(const value:string);
    begin
      FNickName:= value;
    showmessage(nickName);
    end;
    procedure TForm1.Button1Click(Sender: TObject);
    var
      newEdit:TNewEdit1;
    begin
      newEdit := TNewEdit.create(nil);
      newEdit.setNickName;
      newEdit1.free;
    end;
      

  2.   

    unit Unit1;interfaceuses
      Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
      Dialogs, StdCtrls;type
      TForm1 = class(TForm)
        Button1: TButton;
        procedure Button1Click(Sender: TObject);
      private
        { Private declarations }
      public
        { Public declarations }
      end;  TnewEdit1 = class(Tedit)
      private
        { Private declarations }
        fnickName:string;
        procedure setNickName(const value:string);
      public
        { Public declarations }
        procedure ShowNickName ;
        property nickName:string read fnickName write setNickName;
      end;
    var
      Form1: TForm1;implementation{$R *.dfm}
    procedure Tnewedit1.setNickName(const value:string);
    begin
      fnickName := Value;  
    end;procedure Tnewedit1.ShowNickName;
    begin
      ShowMessage('nickName is ' + nickName);
    end;procedure TForm1.Button1Click(Sender: TObject);
    var
      newEdit1: TnewEdit1;   
    begin
      newEdit1 := TnewEdit1.Create(Self);
      newEdit1.nickName := 'Neo';
      newEdit1.ShowNickName;
      newEdit1.Free;
    end;
    end.