Migaro. 技術Tips

                       

ミガロ. 製品の技術情報
IBMiの活用に役立つ情報を掲載!


【Delphi】処理中のマウスカーソル表示制御

 
今回は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; // カーソル変更

 
簡単なコーディングで処理中の制御を行えるので、是非ご活用ください。

 

 

(ミガロ.情報マガジン「MIGARO News!!」Vol.166 2014年9月号より)