Ich würde es mal so probieren:
Delphi-Quellcode:
procedure Tfrm_ProMonZ.DemoButtonClick(Sender: TObject; Button: TMouseButton; Shift: TShiftState; X, Y: Integer);
begin
while GetKeyState(VK_LBUTTON)<0 do
begin
//Anweisungen
Application.ProcessMessages;
end;
end;
Das GetKeyState bewirkt, dass die Schleife solange läuft, bis die Maustaste losgelassen wird. Vorteil ist allerdings, dass du nicht auf das Event MouseUp des Buttons angewiesen bist. Denn es gibt garantiert möglichkeiten, wie man das Event umgehen kann und dann hängst in einer ollen Schleife fest. So kann es nicht passieren, da die Maustaste bei jedem Durchlauf abgefragt wird.
Allerdings nur ein Versuch und noch nicht getestet.