Delphi中的Edit1中如何让从右往左显示和输入
并且如何屏蔽非数字键

解决方案 »

  1.   

    如果你说的是右对齐输入并显示的话,那就需要重载edit,就是自己再作一个,如果你要是向古人那样从右往左看的话,那我就没辙了。是前者吗?
      

  2.   

    先把代码给你贴出来吧,这是我的方法,自己创建一个组件安装,不会的话再问吧。另外我觉得delphi的edit好像不可以直接从右到左显示,再看看其他人的回答吧。呵呵。
    unit RightEdit1;
    interfaceuses
      Windows,SysUtils, Classes, Controls, StdCtrls;
    type
      TRightEdit1 = class(TEdit)
      private
        { Private declarations }
      protected
        { Protected declarations }
      public
        { Public declarations }
        procedure CreateParams(var Params: TCreateParams); override;
      published
        { Published declarations }
      end;procedure Register;implementationprocedure TRightEdit1.CreateParams(var Params: TCreateParams);
    begin
      inherited CreateParams(Params);
      Params.Style:=Params.Style or ES_RIGHT or ES_NUMBER ;
    end;procedure Register;
    begin
      RegisterComponents('Samples', [TRightEdit1]);
    end;
    end.
      

  3.   


    procedure TForm1.Button1Click(Sender: TObject);
    begin
    SetWindowLong(Edit1.Handle, GWL_STYLE, GetWindowLong(Edit1.Handle, GWL_STYLE) or ES_RIGHT);
    end;procedure TForm1.Edit1KeyPress(Sender: TObject; var Key: Char);
    begin
      if not(key  in['0'..'9']) then key:=#0; //其它控制字符自己过滤
    end;
      

  4.   

    Delphi中的Edit1中如何让从右往左显示和输入
    找到Eidt1的BiDiMode属性 设置为 bdRightToLeft就可以了,还有其他两个选项也可以试试
     并且如何屏蔽非数字键
    楼上的代码
    if not(key  in['0'..'9']) then key:=#0; 最好改成
    if not(key  in['0'..'9',#8]) then key:=#0;//#8是退格
    要不然就不能用退格键了
      

  5.   

    if not(key  in['0'..'9',#8]) then key:=#0;//#8是退格 这种方法有漏洞,如果我是复制粘贴过去,你的事件根本不会激发!
      

  6.   

    修改BiDiMode属性,需要操作系統的支持,例如中東的操作系統,要不改了沒用
      

  7.   

    TEdit控件只是对windows的Edit控件的简单封装,貌似要自己写一个控件了。
      

  8.   

    protected
        procedure CreateParams(var Params: TCreateParams); override;
    procedure TForm1.CreateParams(var Params: TCreateParams);
    begin
      inherited;
      params.ExStyle:=Params.ExStyle+WS_EX_RIGHT;
    end;2楼的正确
      

  9.   

    code=Delphi(Pascal)]
    procedure TForm1.Edit1KeyPress(Sender: TObject; var Key: Char);
    begin
      if not(key  in['0'..'9',#8]) then 
      key:=#0;
    end;[
    [/code] 
      

  10.   

    procedure TFORM.FormCreate(Sender: TObject);
    var
      chargerstyle:integer;
    begin
      chargerstyle:=GetWindowLong(re.Handle,GWL_STYLE);
      chargerstyle:=chargerstyle and(not ES_LEFT)and(not ES_CENTER)or ES_RIGHT;
      SetWindowLong(re.Handle,GWL_STYLE,chargerstyle);
    end;procedure TFORM.reKeyPress(Sender: TObject; var Key: Char);
    begin
      if not(key  in['0'..'9',#8]) then  begin
        key:=#0;
      end;
    end;procedure TFORM.reChange(Sender: TObject);
    begin
      re.SelStart:=0;
    end;
      

  11.   

    我咋不厚道 了,我本来是接贴的,结果点错了,又多花了我100分,哎,zhaoxiaohao我给你传了一个消息,你看到的话就给我回一声吧