怎样让edit.text输入1到9时,自动变为01,02....????

解决方案 »

  1.   

    procedure xxx.edit1onkeydown(sender:tobject;key:word);
    begin
      if key in [ord('0')..ord('9')] then
        edit1.text:=edit1.text+'0';
    end;
      

  2.   

    if i<10 then
      begin
      num:='0'+num
      end;
      

  3.   

    //测试源码,粗略的unit Unit1;interfaceuses
      Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs,
      StdCtrls;type
      TForm1 = class(TForm)
        Edit1: TEdit;
        procedure Edit1Change(Sender: TObject);
        procedure Edit1KeyPress(Sender: TObject; var Key: Char);
      private
        { Private declarations }
      public
        { Public declarations }
      end;var
      Form1: TForm1;
      vkey : char;implementation{$R *.DFM}procedure TForm1.Edit1Change(Sender: TObject);
    var
    str: string;
    begin
      if vkey in ['0'..'9'] then
        str := '0' + vkey;  Edit1.Text := str;
    end;procedure TForm1.Edit1KeyPress(Sender: TObject; var Key: Char);
    begin
      vkey := key;
    end;end.  //end of the program
      

  4.   

    procedure TForm1.Edit1Change(Sender: TObject);
    begin
      if (Length(Edit1.Text)=1) and (Edit1.Text[1] in ['0'..'9']) then
      begin
        Edit1.Text:='0'+Edit1.Text;
        Edit1.SelStart:=2;
      end;
    end;
      

  5.   

    有一个 FROMAT 的命令,你去查一查,也许有帮助。
    fromat('%.3',[i])
    好象是这样的, 我也记不清了。
      

  6.   

    用第三方控件就可以了,如ehlib,expressbar下面的,一个edit就可以实现了
      

  7.   

    你这种要求永远不可能输入12这样的数字,因为你用的10进制!
    edit怎么知道你要输入什么?
      

  8.   

    procedure TForm1.Edit1KeyUp(Sender: TObject; var Key: Word;
      Shift: TShiftState);
    begin
      if key in [ord('0')..ord('9')] then
        begin
          edit1.Text:='0'+edit1.Text;
        end;
    end;
      

  9.   

    if i<10 then
      begin
      edit1.text:='0'+inttostr(i);
      end;
      

  10.   

    请把问题再说得清楚些,
    是不是编辑框只接受0~99的输入,而且把1改为01...?
    如果是这样,试试:
    procedure TForm1.Edit1Exit(Sender: TObject);
    begin
      if StrToInt(Edit1.Text)  in [0..9] then
        Edit1.text:='0' + edit1.text;
    end;如果是可以输入任意的数字,你要用一些变量(或自定义结构)存下用户实际按下的每一个键,在用户输入完毕时,再决定要怎么显示。
      

  11.   

    FormatFloat('00',var);
    var是一个DOUBLE型变量,
    显然用一个整形也是兼容的。
      

  12.   

    procedure TForm1.Edit1Exit(Sender: TObject);
    begin
      if StrToInt(Edit1.Text)  in [0..9] then
        Edit1.text:='0' + edit1.text;
    end;
    ===========================================
    FROM SnowFisher(钓雪) 
    ===========================================
    这种方法也可以的,而且这种改变,只能放在EXIT
    事件里触发的,否则你输哪个数字不是在0..9之间?
      

  13.   

    我用了一个苯办法,大家看看,这样可好!
    if (Length(Edit2.Text)=1) and (Edit2.Text[1] in ['0'..'9']) then
      begin    Edit2.Text:='0'+Edit2.Text;    //Edit2.SelStart:=2;
            end;
            if (Length(Edit2.Text)=2 )and(Edit2.Text[1] in ['1'])and (Edit2.Text[2] in ['0'..'2']) then
            begin        edit2.text:=edit2.text ;         end;        if not((Length(Edit2.Text)=2 )and(Edit2.Text[1] in ['1'])and (Edit2.Text[2] in ['0'..'2'])) then
            begin
            
            edit2.text:='';        end;
      

  14.   

    procedure TForm1.Edit1Change(Sender: TObject);
    begin
      if Edit1.text[1] in ['0'..'9'] then
        Edit1.text := '0' + Edit1.text
      else
      begin
        Edit1.text := '';
        Showmessage('Invalid Data...');     //warnning the current user
      end;
    end;
      

  15.   

    if not(key in ['0'..'9',#8]) then
        begin
          key:=#0;
          edit1.Text:='0'+edit1.Text;
        end;