Hi Fabio,
Unfortunately it doesn't work that way.
The first way is to call the form manually using the button's onClick event by disabling the automatic opening of the form in the button properties.
procedure frmSommario_Button1_OnClick (Sender: TObject; var Cancel: boolean);
var vi: integer;
begin
fmrRingraziamenti.Show;
for vi := 1 to 100 do
begin
fmrRingraziamenti.lbFabio.top := fmrRingraziamenti.lbFabio.top -1;
application.processmessages;
sleep(10);
end;
end;
The second method is more difficult to implement. In the mode of automatically opening the form in the OnShow event, trigger your effects on a timer with a delay of 200-500 ms. in order for the form to be displayed first and with a delay the effects. Which is the same as in the first method, but more complicated.
P.S. And don't forget to use "formname".doublebuffered := true; // enable doublebuffering Pay attention to Derek's example.