若干个EDIT接收0--9数字按钮输入。这些EDIT初始值都是0.000,问:当其中一个EDIT获得焦点时,里面的值变蓝(值是0.000),点击按钮输入数字后值改变(假设输入的是456),如何再当这个EDIT获得焦点时点击按钮输入数值(456变蓝),在重新输入数呢?

解决方案 »

  1.   

    edit是如何获得焦点的?按tab键?
      

  2.   

    这段代码可以把你的按扭事件整和在一起
    Key0...Key9为按扭的name
    procedure ButtonKeyDown(sender:Tobject);
    begin
        if sender=Key0 then
          begin
            edit_LCD.Text:=edit_LCD.Text+'1';
          end;
        if sender=Key1 then
          begin
            edit_LCD.Text:=edit_LCD.Text+'1';
          end;
        if sender=Key2 then
          begin
           edit_LCD.Text:=edit_LCD.Text+'2';
          end;
        if sender=Key3 then
          begin
           edit_LCD.Text:=edit_LCD.Text+'3';
          end;
        if sender=Key4 then
          begin
           edit_LCD.Text:=edit_LCD.Text+'4';
          end;
        if sender=Key5 then
          begin
           edit_LCD.Text:=edit_LCD.Text+'5';
          end;
        if sender=Key6 then
          begin
           edit_LCD.Text:=edit_LCD.Text+'6';
          end;
        if sender=Key7 then
          begin
           edit_LCD.Text:=edit_LCD.Text+'7';
          end;
        if sender=Key8 then
          begin
           edit_LCD.Text:=edit_LCD.Text+'8';
          end;
        if sender=Key9 then
          begin
           edit_LCD.Text:=edit_LCD.Text+'9';
          end;
     End;
      

  3.   

    上面的有点问题
    procedure ButtonKeyDown(sender:Tobject);
    begin
        if sender=Key0 then
          begin
            edit_LCD.Text:=edit_LCD.Text+'0';
          end;
        if sender=Key1 then
          begin
            edit_LCD.Text:=edit_LCD.Text+'1';
          end;
        if sender=Key2 then
          begin
           edit_LCD.Text:=edit_LCD.Text+'2';
          end;
        if sender=Key3 then
          begin
           edit_LCD.Text:=edit_LCD.Text+'3';
          end;
        if sender=Key4 then
          begin
           edit_LCD.Text:=edit_LCD.Text+'4';
          end;
        if sender=Key5 then
          begin
           edit_LCD.Text:=edit_LCD.Text+'5';
          end;
        if sender=Key6 then
          begin
           edit_LCD.Text:=edit_LCD.Text+'6';
          end;
        if sender=Key7 then
          begin
           edit_LCD.Text:=edit_LCD.Text+'7';
          end;
        if sender=Key8 then
          begin
           edit_LCD.Text:=edit_LCD.Text+'8';
          end;
        if sender=Key9 then
          begin
           edit_LCD.Text:=edit_LCD.Text+'9';
          end;
     End;
      

  4.   

    想知道这个
    是这个意思吗?procedure TForm1.Button1Click(Sender: TObject);
    begin
      edit2.SetFocus;
      edit2.SelStart:=0;
      edit2.SelLength:=length(edit1.Text);
    end;
      

  5.   

    是这种效果吗?
    edit2.SetFocus;
    edit2.SelStart:=0;
    edit2.SelLength:=length(edit2.Text);
      

  6.   

    我的界面是3个EDIT,0--9九个按钮控制EDIT的输入。UP,DOWN2个按钮控制EDIT上下移动(右EDIT1移动到EDIT2,不是EDIT1本身上下移动)。代码如下: private
        CurrentTag : integer;
        EditBoxCount : integer;
        chooseindex:integer;
        i:integer;
    procedure TForm1.FormShow(Sender: TObject);//判断EDIT个数
    var
      i : integer;
    begin
      for i := 0  to self.ComponentCount-1  do
      begin
        if(self.Components[i] is TEdit) then
        begin
          Inc(EditBoxCount);
          (self.Components[i] as TEdit).Tag := EditBoxCount;
          if(i = 0) then
            (self.Components[i] as TEdit).SetFocus;
        end;
      end;end;
    procedure TForm1.button1click(sender:Tobject);//向上移动
    var
      i:integer;
    begin
      if(CurrentTag > 1) then
        Dec(CurrentTag);
      for i := 0  to self.ComponentCount-1  do
      begin
        if(self.Components[i] is TEdit) then
        begin
          if( (self.Components[i] as TEdit).Tag = CurrentTag ) then
          begin
            (self.Components[i] as TEdit).SetFocus;
            chooseindex:=currenttag;
            break;
          end;
        end;
      end;
    end;
    procedure TForm1.Button2Click(Sender: TObject);//向下移动
    var
     i:integer;
    begin
       if(CurrentTag < EditBoxCount) then
        Inc(CurrentTag);
      for i := 1  to self.ComponentCount-1  do
      begin
        if(self.Components[i] is TEdit) then
        begin
          if( (self.Components[i] as TEdit).Tag = CurrentTag ) then
          begin
            (self.Components[i] as TEdit).SetFocus;
            chooseindex:=currenttag;
            break;
          end;
        end;
      end;
    end;
    procedure TForm1.ButtonClick(Sender: TObject);//0---9按钮ONCLICK事件
    var
    x,y: integer;
    begin
     case chooseindex of
      1:begin
          if edit1.Text='0.000' then
           edit1.Text:=Tbutton(sender).Caption
           else
          begin
           x:=pos('.',edit1.Text);
           y:=length(edit1.Text)-3;
           if (x<>0) and (x=y) then
             else
           edit1.Text:=edit1.Text+Tbutton(sender).Caption;
          end;
        end;
      2:begin
         if edit2.Text='0.000' then
           edit2.Text:=Tbutton(sender).Caption
           else
          begin
           x:=pos('.',edit2.Text);
           y:=length(edit2.Text)-3;
           if  (x<>0) and (x=y) then
             else
           edit2.Text:=edit2.Text+Tbutton(sender).Caption;
          end;
        end;
      3:begin
         if edit3.Text='0.000' then
           edit3.Text:=Tbutton(sender).Caption
           else
          begin
           x:=pos('.',edit3.Text);
           y:=length(edit3.Text)-3;
           if  (x<>0) and (x=y) then
             else
           edit3.Text:=edit3.Text+Tbutton(sender).Caption;
          end;
        end;
      end;end;
    procedure TForm1.FormCreate(Sender: TObject);//初始化
    begin
      CurrentTag := 1;
      EditBoxCount := 0;
      chooseindex:=1;
      i:=0;
    end;
      

  7.   

    现在我做的效果是EDIT如果输入数值以后再输入是接着以前输入的,(比如以前是785,再获得焦点输入就是在785后继续输入了,我想的是重新输入)。
      

  8.   


    这样改
    procedure TForm1.button1click(sender:Tobject);//向上移动 
    var 
      i:integer; 
    begin 
      if(CurrentTag > 1) then 
        Dec(CurrentTag); 
      for i := 0  to self.ComponentCount-1  do 
      begin 
        if(self.Components[i] is TEdit) then 
        begin 
          if( (self.Components[i] as TEdit).Tag = CurrentTag ) then 
          begin 
            (self.Components[i] as TEdit).SetFocus;
            (self.Components[i] as TEdit).SelStart:=0; 
            (self.Components[i] as TEdit).SelLength:=length((self.Components[i] as TEdit).Text); 
     
            chooseindex:=currenttag; 
            break; 
          end; 
        end; 
      end; 
    end; 
      

  9.   

    TEdit OnEnter 事件Text := '0.000';
      

  10.   

    TEdit 有个 OnEnter 事件,就是获得焦点的事件,可以在这个事件里把 Edit 的值重新设回默认的 '0.000'。还有一个办法就是设置一个变量,在 OnEnter 或者 OnExit (失去焦点) 的时候改变,在输入的时候先判断这个变量。
      

  11.   

    楼主代码有点乱,不好意思,我随便写了几句,应该能表达清楚。procedure TForm1.BtnChangeInputClick(Sender: TObject);
    begin
      if InputEdit = Edit1 then
        InputEdit := Edit2
      else if InputEdit = Edit2 then
        InputEdit := Edit3
      else
        InputEdit := Edit1;
      InputEdit.SetFocus;
    end;procedure TForm1.BtnNumericalClick(Sender: TObject);
    begin
      with InputEdit do
        if (Text = '0.000') or InputChanged then
          Text := TButton(Sender).Caption
        else
          Text := Text + TButton(Sender).Caption;  InputChanged := False;
    end;procedure TForm1.Edit1Exit(Sender: TObject);
    begin
      InputChanged := True;
    end;procedure TForm1.FormCreate(Sender: TObject);
    begin
      Edit1.Text := '0.000';
      Edit2.Text := '0.000';
      Edit3.Text := '0.000';
      InputEdit := Edit1;
    end;
      

  12.   

    发给我看看吧
    [email protected]