Hai bisogno del tuo aiuto (sono bloccato nella ricerca di). Sono su Delphi Seattle, cercando di rendere più fluido il ridimensionamento del mio modulo. Nel mio caso "ridimensionamento" è solo un po 'crollo/espandere in questo modo:Delphi: liscio collasso/modulo di espansione
Come posso capire che?
Ho provato l'uso di un TTimer:
procedure TForm1.Timer1Timer(Sender: TObject);
var
h, t: integer;
begin
t := Button10.Top + Button10.Height + 10; //slide TForm from/to this point
if t > h then
begin
h := h + 1;
Form1.Height := h;
end
else
begin
Timer1.Enabled := false;
end;
end;
... ma è sembra molto semplice (senza accelerazione/decelerazione) e lavora lento anche con piccolo intervallo.
Le variabili locali (come 'h' e' t') non sono permanenti tra le chiamate (eventi del timer qui) Sono allocate nello stack e sequestrate per esistere quando la procedura termina. Durante le chiamate ripetute potresti essere fortunato e la stessa memoria viene riutilizzata, ma fare affidamento su questo è semplicemente sbagliato. La risoluzione TTimer è 10 ms - 15 ms, nonostante sia possibile impostarla su 1 ms. È anche basato sul messaggio e il messaggio del timer è a bassa priorità. Per un timer più preciso e più performante utilizzare un timer multimediale winapi. Infine, il codice semplice potrebbe dare un aspetto semplice, perché ti aspetti che mostri accelerazione/decelerazione? –