Enterを押す方法

解決


いんく  2006-05-31 04:12:01  No: 21939

理由を説明すると長いので省略しますが、
メッセージを出してOKをプログラムで押したいのですが、
Enterってどうコードを書けばいいでしょうか?
お願いします。

showmessage('msgmsg');
ここでEnter(OK)を押す。


Ru  2006-05-31 05:13:20  No: 21940

MessageDlg関数じゃダメなのでしょうか?


えーと  2006-05-31 05:39:06  No: 21941

フォーカスが移ることを考慮しなくてもいいなら、こんな感じ。

procedure TForm1.Button1Click(Sender: TObject);
begin
  Timer1.Enabled := true;
  ShowMessage('test');
end;

procedure TForm1.FormCreate(Sender: TObject);
begin
  Timer1.Enabled := false;
  Timer1.Interval := 3000;
end;

procedure TForm1.Timer1Timer(Sender: TObject);
begin
  Timer1.Enabled := false;
  keybd_event(VK_RETURN, 0, 0, 0);
  keybd_event(VK_RETURN, 0, KEYEVENTF_KEYUP, 0);
end;


えーと  2006-05-31 05:42:34  No: 21942

procedure TForm1.Button1Click(Sender: TObject);
begin
  Timer1.Enabled := true;
  ShowMessage('test');
  Timer1.Enabled := false; // ここ
end;

としておくと、ユーザが押した場合もOKですね。


ん?  2006-05-31 18:27:05  No: 21943

どこで拾ってきたのか、自分で作ったのか、忘れましたが、
2年前日付のユニットからみつけだしたコードの一部抜粋。

動作していますし、特別怪しいコードもなさそう・・・。
一応、ダイアログが最前面でなくても大丈夫です。

type
  TForm1=class(TForm)
    Button1: TButton;
    procedure Button1Click(Sender: TObject);
  public
    procedure HogeHoge(Sender: TObject);
  end;

procedure TForm1.Button1Click(Sender: TObject);
var
  dlg: TForm;
  timer: TTimer;
begin
  //ダイアログ準備
  dlg := CreateMessageDialog('適当なメッセージ', mtCustom, [mbOK]);
  try
    //dlg.Caption := 適当なCaption;
    dlg.Position := poScreenCenter;
    //自動で閉じるタイマー準備
    //オーナーがダイアログなので、破棄はおまかせにする
    timer := TTimer.Create(dlg);
    timer.Interval := 5000; //5秒
    //イベント割り当て
    timer.OnTimer := HogeHoge;
    //メッセージダイアログのアドレスを強引に数値化
    timer.Tag := Integer(Pointer(dlg));
    //タイマー開始
    timer.Enabled := True;
    //ダイアログ表示
    dlg.ShowModal;
  finally
    //破棄
    dlg.Free;
  end;
end;

procedure TForm1.HogeHoge(Sender: TObject);
begin
  if (Sender is TTimer) and (TTimer(Sender).Tag > 0) then begin
    TForm(Pointer(TTimer(Sender).Tag)).ModalResult := mrOK;
  end;
end;


いんく  2006-05-31 19:07:34  No: 21944

えーと  さん
大変ありがとうございました。
できました!勉強になります。


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

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






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