今回はDelphi/400で「処理中」のマウスカーソルの表示制御についてご紹介いたします。
データベースに対して更新処理やデータ取得を実行する場合、データ件数などに応じて、
アプリケーション側にレスポンスが戻るまでに時間がかかることがあります。
その際に、処理中であることをユーザーへ伝えるために、
待ちウィンドウを表示するなどの工夫を行うことができます。
簡易な方法の1つに、マウスカーソルの表示制御があります。
例えば処理中には、通常の矢印カーソルではなく、処理中カーソルに変更しておくことで、
ユーザーに処理待ちを伝えることができます。
画面上のマウスカーソルはScreen.Cursorを操作することで、簡単に制御できます。
//(例)
procedure TForm1.Button1Click(Sender: TObject);
begin
Screen.Cursor := crHourGlass; // 処理カーソルに変更
// 処理ロジック開始
// ~~~~~
// 処理ロジック完了
Screen.Cursor := crDefault; // 通常カーソルに戻す
end;
これだけのコードで、処理中だけマウスカーソルを変更することができます。
処理完了時にカーソルを元のカーソルに戻すことを忘れると、
ずっと処理中に見えてしまうため、注意が必要です。
また処理の中でWindowsのメッセージダイアログ等を表示する場合には、
Windows側の制御でマウスカーソルが変更されてしまうことがあります。
その場合は、次のように一度マウスカーソルを初期化してから
あらためてカーソルを変更する必要があります。
MessageDlg('メッセージ', mtInformation, mbOKCancel, 0);
Screen.Cursor := crDefault; // 一度カーソルを初期化
Screen.Cursor := crHourGlass; // カーソル変更
簡単なコーディングで処理中の制御を行えるので、是非ご活用ください。