一各窗体上有几个编辑框和几个按钮我想通过按四各方向键来控制两个编辑框里面的数字大小,
但是方向键是控制focus的,一按如果是按钮焦点会转移,如果是edit,光标左右乱动有没有一个好的解决方法呢

解决方案 »

  1.   

    procedure TForm1.Button1Click(Sender: TObject);
     var
       value: Integer;
    begin
       value:=edit1.SelStart;
       edit1.SetFocus;
       edit1.SelStart:=value;
    end;
      

  2.   

    在keydown事件中处理:procedure TForm1.Edit1KeyDown(Sender: TObject; var Key: Word;
      Shift: TShiftState);
    begin
      if key=vk_up then edit1.Text:=inttostr(strtoint(edit1.Text)+1);
      if key=vk_down then edit1.Text:=inttostr(strtoint(edit1.Text)-1);
      //if key=vk_left   ......
      //if key=vk_right  ......
    end;
      

  3.   

    方向键不会激发buttonclick事件用edit时可以的,但是它的光标闪烁的让人受不了
      

  4.   

    但是他响应Keydown事件啊,zdcnow(磁效应) 说的可以实现你想要的
      

  5.   

    procedure TForm1.FormKeyDown(Sender: TObject; var Key: Word;
      Shift: TShiftState);
    begin
      if key=vk_up then 
        if edit1.focused then 
          edit1.Text:=inttostr(strtoint(edit1.Text)+1)
        else 
          if edit2.focused then 
            edit2.Text:=inttostr(strtoint(edit2.Text)+1)
        ......
    end;