// Getestet mit D4 unter XP
// Wenn man im Ereignis "MouseDown" das Kursor-Bild ändern will, z.B.:
procedure TForm1.Panel1MouseDown(Sender: TObject; Button: TMouseButton;
Shift: TShiftState; X, Y: Integer);
begin
Panel1.Cursor := crHandPoint;
end;
procedure TForm1.Panel1MouseUp(Sender: TObject; Button: TMouseButton;
Shift: TShiftState; X, Y: Integer);
begin
Panel1.Cursor := crDefault;
end;
// so schlägt das
normalerweise fehl
(Grund: Mouse-Capture). Das
kann
// man umgehen:
procedure TForm1.Panel1MouseDown(Sender: TObject; Button: TMouseButton;
Shift: TShiftState; X, Y: Integer);
begin
Panel1.Cursor := crHandPoint;
ReleaseCapture;
Application.processmessages;
SetCapture(Panel1.handle);
end;
procedure TForm1.Panel1MouseUp(Sender: TObject; Button: TMouseButton;
Shift: TShiftState; X, Y: Integer);
begin
Panel1.Cursor := crDefault;
end;
// Das gelingt z.B. bei "TImage" nicht
(fehlendes
Handle).
// Mit einem ganz kleinen Trick funktioniert es aber doch:
procedure TForm1.Image1MouseDown(Sender: TObject; Button: TMouseButton;
Shift: TShiftState; X, Y: Integer);
begin
Image1.Cursor := crHandPoint;
ReleaseCapture;
Application.processmessages;
SetCapture(Image1.Parent.handle);
end;
procedure TForm1.Image1MouseUp(Sender: TObject; Button: TMouseButton;
Shift: TShiftState; X, Y: Integer);
begin
Image1.Cursor := crDefault;
end;
|