DBGrid内でEnterで移動させたい


ひな  2007-12-19 23:56:24  No: 28994

DBGridでEnterを押した時にTabと同じような動作をさせたいのですが、
どうしても制御がでいません。

ご指導をよろしくお願いします。


Ru  2007-12-20 01:01:38  No: 28995

なんか不細工だなぁ・・・
他に良い方法あると思います。
TDBGrid.Options の dgEditing = True の場合は DBGrid1KeyPressイベントの記述もいるみたいです。
(TDBGridのTAB移動だからレコード移動で良いんですよね?)

procedure TForm1.DBGrid1KeyDown(Sender: TObject; var Key: Word;
  Shift: TShiftState);
begin

  if (Key = VK_RETURN) then
  begin
    Key := VK_TAB;
  end;

  if (Key = VK_RETURN) and (Shift = [ssShift]) then
  begin
    Key := VK_TAB + VK_SHIFT;
  end;

end;

procedure TForm1.DBGrid1KeyPress(Sender: TObject;
  var Key: Char);
begin

  if (Key = Char(VK_RETURN)) then
  begin
    Key := Char(VK_TAB);
  end;

  if (Key = Char(VK_RETURN)) then
  begin
    Key := Char(VK_TAB + VK_SHIFT);
  end;

end;


Ru  2007-12-20 01:04:31  No: 28996

上記ソースは
TDBGridのReadOnlyプロパティがTrueの場合はレコード移動。
TDBGridのReadOnlyプロパティがFalseの場合はフィールド移動する模様。
  ※最終フィールドに行くと次のレコードへ

使えそうにないなら無視でお願いします。


KHE00221  URL  2007-12-20 01:35:50  No: 28997

DBGridEx1KeyPress 中で [RET] to [TAB] 変換を行なうと編集中に改行で入力終了できなくなりますので編集は変換しないようにしないといけません

が DBGrid では InplaceEditor を見ることが出来ませんので DBGridEx を使用します

DBGridEx は以前投稿した物を見てください

procedure TForm3.DBGridEx1KeyDown(Sender: TObject; var Key: Word;
  Shift: TShiftState);
begin
    if Key=13 then Key := 9;
end;

procedure TForm3.DBGridEx1KeyPress(Sender: TObject; var Key: Char);
begin
    if Assigned(DBGridEx1.InplaceEditor) = True then
    begin
      if DBGridEx1.InplaceEditor.Visible = False then
      begin
        if Key=Char(13) then Key := Char(9);
      end;
    end
    else
    begin
      if Key=Char(13) then Key := Char(9);
    end;
end;


※返信する前に利用規約をご確認ください。

※Google reCAPTCHA認証からCloudflare Turnstile認証へ変更しました。






  このエントリーをはてなブックマークに追加