如题

解决方案 »

  1.   

    楼上两位也太损了,呵呵继承TEdit,重载CreateParams,修改Param即可。
    procedure TEdit_Ex.CreateParams(var Params: TCreateParams);begin  inherited;  if self.FTextOnRight then Params.Style:=Params.Style or ES_RIGHT;end;
      

  2.   

    TO:del_c_sharp(头大中......) 
    在DELPHI中我还真没写过重载,TEdit_Ex就代表了继承TEdit?
    另外我想EDIT中的光标一开始就定位到最右边。怎么实现?
      

  3.   

    是的继承一下,就好了。
    你用的是bcb?
    我这台电脑没有装,要不然我帮你写个delphi中就像上面的那中写法就可以了
      

  4.   

    TO:del_c_sharp(头大中......) 
    关键我只想把EDIT2改成这种从右向左。EDIT1我还想是从左到右。你这样是不是把EDIT1和EDIT2全改了?
      

  5.   

    当然不是,你要继承tedit生成一个新类tedit_ex
    edit1 还是tedit
    edit2 是 tedit_ex
      

  6.   

    那tedit_ex继承tedit在上面的声明中怎么写?
      

  7.   

    用程序写也很简单啊:
    你每次在 Edit 的 Onchange 事中只要是键盘的 press 事件 那么你就执行
    一次程序,然后用对 Edit 获取焦点 Edit.setfocus 这样就可以实现从右到
    左的功能了。
      

  8.   

    呵呵,你的20分真难挣:unit Unit1;interfaceuses
      Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
      Dialogs, StdCtrls;type
      tedit_ex=class(tedit)
      protected
      procedure createparams(var Params: TCreateParams);override;
      end;
      TForm1 = class(TForm)
        Button1: TButton;    procedure Button1Click(Sender: TObject);
      private
      edit2:tedit_ex;
        { Private declarations }
      public
        { Public declarations }
      end;var
      Form1: TForm1;implementation{$R *.dfm}procedure TForm1.Button1Click(Sender: TObject);begin
      with tedit_ex.Create(application) do
      begin
        parent:=self;
        left:=100;
        top:=100;
        visible:=true;
      end;
    end;{ tedit_ex }procedure tedit_ex.createparams(var Params: TCreateParams);
    begin
      inherited;
     Params.Style:=Params.Style or ES_RIGHT;
    end;end.
    测试通过
      

  9.   

    给你一个控件,我自己用的
    unit UEdit;interfaceuses
      Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs,
      StdCtrls;type
      TUEdit = class(TEdit)
      private
        { Private declarations }
      protected
        { Protected declarations }
      public
        { Public declarations }
        procedure CreateParams(var Params: TCreateParams); Override;
      published
        { Published declarations }
      end;procedure Register;implementationprocedure TUEdit.CreateParams(var Params: TCreateParams);
    begin
      inherited CreateParams(Params);
      Params.Style := Params.Style or ES_MULTILINE or ES_RIGHT;
    end;procedure Register;
    begin
      RegisterComponents('Standard', [TUEdit]);
    end;end.
      

  10.   

    我也在学习oldcamel33(驼子) 的方法,我相信他的方法错不了
      

  11.   

    我不想动态创建EDIT,我想用手动拖一个EDIT到FORM上,在写些代码让他具有从右向左输入的特性,以下怎么不行?
    unit Unit1;interfaceuses
      Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
      Dialogs, StdCtrls;type  TForm1 = class(TForm)
        Edit1: TEdit;
        Button1: TButton;
        procedure createparams(var Params: TCreateParams);
      private
        { Private declarations }
      public
        { Public declarations }
      end;var
      Form1: TForm1;implementation{$R *.dfm}
    procedure TForm1.Edit1.createparams(var Params: TCreateParams);
    begin
      inherited;
     Params.Style:=Params.Style or ES_RIGHT;
    end;
    end.
      

  12.   

    当然不行了。你的代码根本不符合逻辑。如果你想发放到控件面板上unit UEdit;interfaceuses
      Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs,
      StdCtrls;type
      TUEdit = class(TEdit)
      private
        { Private declarations }
      protected
        { Protected declarations }
      public
        { Public declarations }
        procedure CreateParams(var Params: TCreateParams); Override;
      published
        { Published declarations }
      end;procedure Register;implementationprocedure TUEdit.CreateParams(var Params: TCreateParams);
    begin
      inherited CreateParams(Params);
      Params.Style := Params.Style or ES_MULTILINE or ES_RIGHT;
    end;procedure Register;
    begin
      RegisterComponents('Standard', [TUEdit]);
    end;end.把这段代码存为xxx.pas选择component--->install component
    into new packetunit file name -->xxx.paspackage name --->xxxok!install最后你会发现一个新控件在Standard版