按方向键时,TStringGrid控件中向某个方向移动一个单元格,如何实现。原来默认情况下,当某一单元格编辑完后,按左右键,光标还在原单元格闪烁,并不移动。请各位不吝赐教,尽快帮忙解决,谢谢

解决方案 »

  1.   

    //左右键已经有功能了,就是前后移动键盘光标,这个功能是不是没必要?~~procedure TForm1.StringGrid1KeyDown(Sender: TObject; var Key: Word;
      Shift: TShiftState);
    begin
      if TStringGrid(Sender).EditorMode then
        case Key of
          VK_LEFT: TStringGrid(Sender).Col :=
            Max(TStringGrid(Sender).Col - 1, TStringGrid(Sender).FixedRows - 1);
          VK_RIGHT: TStringGrid(Sender).Col :=
            Min(TStringGrid(Sender).Col + 1, TStringGrid(Sender).RowCount - 1);
        end;
    end;
      

  2.   

    procedure CMDialogKey(var msg: TCMDialogKey); message CM_DIALOGKEY;   //可以通过它控制tab等快捷键
    procedure TFrmJPReg.CMDialogKey(var msg: TCMDialogKey);
    begin
       if (ActiveControl = cbokm) or
          (ActiveControl = EdtSum) or
          (ActiveControl = EdtJE) or
          (ActiveControl = cboDir) then
       begin
          if (msg.CharCode = VK_TAB) or (msg.CharCode = 13)  then
          begin
          // setzt den Fokus zur點k auf das StringGrid         StringGrid1.SetFocus;
             StringGrid1.Perform(VK_TAB, msg.CharCode, msg.KeyData);
             msg.Result := 1;    //WM_KEYDOWN
             exit;
          end;
       end;
       inherited;
    end;
      

  3.   

    KeyDown
    case Key of
    VK_LEFT
    ... ...