Brauchen Sie Ihre Hilfe (Ich bin auf der Suche nach). Ich bin in Delphi Seattle und versuche, den unteren Rand meines Formulars zu verkleinern. In meinem Fall „Größe ändern“ ist nur ein wenig Zusammenbruch/erweitern wie folgt aus:Delphi: glatte Einsturz/erweitern Formular
Wie kann ich das realisieren?
Ich benutze eine TTimer habe versucht:
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;
... aber es ist sieht sehr einfach (keine Beschleunigung/Abbremsung) und arbeitet langsam auch bei kleinen Intervall.
Lokale Variablen (wie 'h' und' t') sind zwischen den Aufrufen nicht persistent (Timer-Ereignisse hier) Sie werden auf dem Stack zugewiesen und belegen, wenn die Prozedur beendet wird. Bei wiederholten Anrufen können Sie Glück haben und die gleiche Erinnerung wird wiederverwendet, aber darauf zu vertrauen ist einfach falsch. TTimer Auflösung ist 10ms - 15ms, obwohl Sie es auf 1ms festlegen können. Es ist ebenfalls nachrichtenbasiert und die Timer-Nachricht ist eine niedrig-priorisierte. Verwenden Sie für einen genaueren und leistungsfähigeren Timer einen WinAPI-Multimedia-Timer. Schließlich könnte einfacher Code ein einfaches Aussehen ergeben, warum erwarten Sie, dass er Beschleunigung/Verlangsamung zeigt? –