I\'m not sure why the TSpeedButton has this property but when a TSpeedButton is the only button of a given groupindex, it doesn\'t stay pressed, whether or not \"AllowAllUp\
Set AllowAllUp to True.
Set GroupIndex to non 0.
To keep it all in the OnClick, try
with Speedbutton1 do begin if tag = 1 then tag := 0 else tag := 1; down := (tag = 1); end;