3

私のアプリケーションの 1 つのフォームでは、フォームにフレームを追加してデータのセットを追加します。フレームごとに、Enter キーを押すことで、ある編集 (Dev Express Editors) コントロールから次のコントロールに移動できるようにしたいと考えています。これまで、コントロールの KeyPress イベントと KeyUp イベントで 4 つの異なるメソッドを試してきました。

  1. SelectNext(TcxCurrencyEdit(Sender), True, True); // also base types attempted

  2. SelectNext(Sender as TWinControl, True, True);

  3. Perform(WM_NEXTDLGCTL, 0, 0);

  4. f := TForm(self.Parent); // f is TForm or my form c := f.FindNextControl(f.ActiveControl, true, true, false); // c is TWinControl or TcxCurrencyEdit if assigned(c) then c.SetFocus;

これらの方法はどれも Delphi 5 では機能しません。これを機能させる方法を教えてもらえますか? ありがとう。

4

4 に答える 4

4

これはDelphi3、5、および6で機能します。

フォームのKeyPreviewプロパティをTrueに設定します。

procedure TForm1.FormKeyPress(Sender: TObject; var Key: Char);
begin
  If (Key = #13) then
  Begin
    SelectNext(ActiveControl as TWinControl, True, True);
    Key := #0; 
  End;
end;
于 2009-10-29T10:39:46.223 に答える
3

CM_DIALOGKEYユーザーがEnterキーを押してから、キーを起動したときにメッセージをキャッチする古いプロジェクトを1つ見つけましVK_TABた。これは、さまざまなコントロールで機能します。

interface
... 
  procedure CMDialogKey(var Message: TCMDialogKey);message CM_DIALOGKEY;

implementation
...

procedure TSomeForm.CMDialogKey(var Message : TCMDialogKey);
begin
  case Message.CharCode of
    VK_RETURN : Perform(CM_DialogKey, VK_TAB, 0);
    ...
  else
    inherited;
  end;
end;
于 2009-10-28T23:00:23.870 に答える
1

フォームに TButton を配置して小さくし、他のコントロールの下に隠すことができます。Default プロパティを true に設定し (Enter キーを取得するようにします)、以下を OnClick イベントに配置します。

SelectNext(ActiveControl, true, true);
于 2009-10-29T06:57:57.780 に答える