断承加上重载。没有用过你所说的Raize控件,但我想它跟TEdit类是一样的吧,重载它的WM_GETTEXT消息即可。给个TEdit类的列子你参考一下。unit Unit1;interfaceuses Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms, Dialogs, StdCtrls;type TEdit = class(StdCtrls.TEdit) public Display: Boolean; procedure WMGetText(var Message: TMessage); message WM_GETTEXT; end;type TForm1 = class(TForm) Button1: TButton; Button2: TButton; Edit1: TEdit; procedure Button1Click(Sender: TObject); procedure Button2Click(Sender: TObject); private { Private declarations } public { Public declarations } end;var Form1: TForm1;implementation{$R *.dfm}{ TEdit }procedure TEdit.WMGetText(var Message: TMessage);begin if Display then inherited; Display := false;end;procedure TForm1.Button1Click(Sender: TObject);var GetText: array[0..255] of Char;begin {向我们的Edit发送消息看是否能取得Edit中的值} SendMessage(Edit1.Handle, WM_GETTEXT, 255, Integer(@GetText)); ShowMessage(string(GetText)); ShowMessage(Edit1.Text); //测试能否直接取得text值end;procedure TForm1.Button2Click(Sender: TObject);var GetText: array[0..255] of Char;begin { 由以上button2的过程测试,可以知道,现在我们自己也无法得到Text值了 为了处理上面的问题,所以我们给我们的Edit加入了一个新参数Display 下面的方法就可以取得Edit中的值了} Edit1.Display := True; SendMessage(Edit1.Handle, WM_GETTEXT, 255, Integer(@GetText)); //通过发送消息取值 ShowMessage(string(GetText)); Edit1.Display := True; ShowMessage(Edit1.Text); //测试能否直接取得text值end;end.需要注意的是,每次在要调edit的text值时,必须在前面加一句给Display属性赋值为true。不然就自己也得不到text的值了。