回 帖 发 新 帖 刷新版面

主题:继承TEdit类,如何创建该类的实例后加到窗体上

如题

我新建了一应用程序,为实现 文本框 文字的 右对齐,新建一类继承TEDIT.


Type
  TCalc=class(TEdit)
  protected
    procedure CreateParams(var Params:TCreateParams);override;
end;

procedure TCalc.CreateParams(var Params:TCreateParams);
begin
      inherited CreateParams(Params);
     {Params.Style:=Params.Style and not WS_BORDER;}
      Params.Style:=Params.Style{or ES_MULTILINE }or WS_CLIPCHILDREN;
      Params.Style:=Params.Style or ES_RIGHT;
end;

在按钮中创建该类的实例

var 
   te:Tcalc;
begin
   te:=Tcalc.create(form1);
   te.CreateParams(form1);
   te.name:='text';
   te.text:='hello,test';
   te.left:=20;
   te.top:=20;
   te.width:=100;
   te.height:=100;
   te.show;
可是单击按钮,窗体上 没有出现  文本框啊.

大家教教..

回复列表 (共2个回复)

沙发

加个te.parent := self;试试

板凳

另外根据http://www.pconline.com.cn/pcjob/process/other/borland/0603/762961_2.html

规则7:永远不要在Tform1类中使用Form1(Never Use Form1 in Tform1)
    你应该避免在类的方法中使用一个特定的对象名称,换句话说,你不应该在TForm1类的方法中直接使用Form1.如果你确实需要使用当前的对象,你可以使用Self关键字。请牢记:大多数时候你都没有必要直接使用当前对象的方法和数据。
    如果你不遵循这条规则,当你为一个窗体类创建多个实例的时候,你会陷入麻烦当中。

建议楼主使用self,而不是form1

我来回复

您尚未登录,请登录后再回复。点此登录或注册