我一个StringGrid,只有2列
想要
1、初始光标停在第一列第一行(非固定行)
2、按回车,如果光标在第一列,则跳到同行的第二列
   如果在第二列,那么跳到下一行的第一列
3、想要第二列只能输入数字和小数点谢谢

解决方案 »

  1.   

    1,2
    procedure TForm1.StringGrid1KeyDown(Sender: TObject; var Key: Word;
      Shift: TShiftState);
    begin
      if (Key = VK_RETURN) then
        if (StringGrid1.Row < StringGrid1.RowCount -1) then
        begin
          if  (StringGrid1.Col = 0) then
            StringGrid1.Row := StringGrid1.Row + 1
          else
          begin
            StringGrid1.Row := StringGrid1.Row + 1;
            StringGrid1.Col := 0;
          end;
        end;
    end;3
    procedure TForm1.StringGrid1KeyPress(Sender: TObject; var Key: Char);
    begin
      if (StringGrid1.Col = 1) and not(Key in['0'..'9', '.', #8]) then
        Key := #0;
    end;
      

  2.   

    1.
    procedure TForm1.FormActivate(Sender: TObject);
    begin
      StringGrid1.Col := 0;
      StringGrid1.Row := 1;
    end;
    2.
    procedure TForm1.StringGrid1KeyDown(Sender: TObject; var Key: Word;
      Shift: TShiftState);
    begin
      if (Key = VK_RETURN) then
        if (StringGrid1.Row < StringGrid1.RowCount -1) then
        begin
          if  (StringGrid1.Col = 0) then
            StringGrid1.Col := StringGrid1.Col + 1
          else
          begin
            StringGrid1.Row := StringGrid1.Row + 1;
            StringGrid1.Col := 0;
          end;
        end;
    end;
      

  3.   

    设置
       StringGrid.Row   行数
       StringGrid.Col   列数
    即可
      

  4.   

    procedure TForm1.StringGrid1KeyDown(Sender: TObject; var Key: Word;
      Shift: TShiftState);
    begin
      {2.~~}
      if key=13 then
      if (StringGrid1.Col=1) and(StringGrid1.Row<StringGrid1.RowCount) then
      begin
        StringGrid1.Row:=StringGrid1.Row+1;
        StringGrid1.Col:=0;
      end else
      if  (StringGrid1.Col=0) then
        StringGrid1.Col:=1;
    end;procedure TForm1.FormCreate(Sender: TObject);
    begin
      {1.~~}
      StringGrid1.Row:=0;
      StringGrid1.Col:=0;
    end;procedure TForm1.StringGrid1KeyPress(Sender: TObject; var Key: Char);
    begin
     {3.~~}
      if StringGrid1.Col=1 then
      if not (key in ['0'..'9']) and (key<>'.') and (key<>#13) then
        key:=#0;
    end;
      

  5.   

    StringGrid1.Options->goAlwaysShowEditor设置为True
      

  6.   

    StringGrid1.SetFocus;
    StringGrid1.Options->goAlwaysShowEditor设置为True
    procedure TForm1.StringGrid1KeyDown(Sender: TObject; var Key: Word;
      Shift: TShiftState);
    begin
      if key=13 then
      if (StringGrid1.Col=1) and(StringGrid1.Row<StringGrid1.RowCount) then
      begin
        StringGrid1.Row:=StringGrid1.Row+1;
        StringGrid1.Col:=0;
      end else
      if  (StringGrid1.Col=0) then
        StringGrid1.Col:=1;
    end;procedure TForm1.FormCreate(Sender: TObject);
    begin
      StringGrid1.Row:=0;
      StringGrid1.Col:=0;
    end;procedure TForm1.StringGrid1KeyPress(Sender: TObject; var Key: Char);
    begin
      if StringGrid1.Col=1 then
      if not (key in ['0'..'9']) and (key<>'.') and (key<>#13) then
        key:=#0;
    end;