Delphi 2007 では、マウス移動イベントで、マウス カーソルを次のように変更しようとしました。
procedure TFr_Board_Display.PaintBox_Proxy_BoardMouseMove(Sender: TObject;
Shift: TShiftState; X, Y: Integer);
begin
if left_mouse_button_down then begin
if some_condition then begin
Cursor := crDrag;
end
else begin
Cursor := crNoDrop;
end;
end
else begin
if some_other_condition then begin
Cursor := crHandPoint;
end
else begin
Cursor := crDefault;
end;
end;
end;
例えば。ただし、マウスの左ボタンを押したままマウスを動かしても、カーソルが crDrag にも crNoDrop にも変化しません。コードは実行されますが (例: Cursor := crDrag;)、カーソルは変化しません。マウスの左ボタンを押したままマウスを動かすと、カーソルは問題なく変化します。
(私は最初、いくつかのドラッグ アンド ドロップ イベントとプロパティを使用しようとしましたが、すべてが思い通りに動作するようにはなりませんでした。)
編集:望ましい動作を明確にし、コードをフォーマットしました。
編集: Gamecat さん、ありがとうございます。マウスの左ボタンを押したときにカーソルを変更し、マウスを動かしている間は、カーソルが crDrag と crNoDrop の間を行き来する必要があります。