It seems the form's cursor is not updated until you release
the mouse button. To verify this use
in the FormMouseDown event handler and you'll hear the
'dong' immediately after pressing the mouse button, but
the cursor will only change after you release the button.
This is due to mouse capturing.
The easiest way to change the mouse cursor immediately is
in the FormMouseDown event handler. But this has a side
effect: the cursor will change for all controls on your form
(maybe not desirable).
A better way might be to use
Mouse->Capture = NULL;
Cursor = crDrag;
It works, but I'm not sure of what side effects this might
cause. Hopefully none :)
> This program has only one line. I want to change the cursor when mousedown.
> But it always change after the mouse up. How can I do it?
> void __fastcall TForm1::FormMouseDown(TObject *Sender, TMouseButton Button,
> TShiftState Shift, int X, int Y)