Ich muss leider noch einmal nerven. Irgendwas stimmt hier leider noch nicht.
Es hat irgendwas mit der markierten Zeile zu tun
Delphi-Quellcode:
if Control.Height >= iMaxHeight then
begin
iNegative := -1;
iTmp := iMinHeight + iMaxHeight; // DIESE ZEILE
end
else // if Control.Height <= iMinHeight then
begin
iNegative := 1;
iTmp := iMinHeight
end;
while (D < 3000) do
begin
Control.Height := iTmp + (Round(iMaxHeight * Easing(D, 3000)) * iNegative);
Application.ProcessMessages;
D := GetTickCount - C;
end;
Das ist bei mir jetzt eine Prozedur. Control ist ein TWinControl. Wenn ich dort als Control ein Formular TForm (aktuell 350 Height) übergebe mit Minimum 220 (iMinHeight) und Maximum 350 (iMaxHeight), dann wird das Formular erst einmal komplett lang gezogen (Min + Max). Bei anderen Controls funktioniert das ohne Probleme und ohne dieses initiale Langziehen.
Meine Grundfrage wäre also... wie sieht das da unten umgekehrt aus?
Delphi-Quellcode:
while (D < Duration) do
begin
Button1.Left := POS_START + Round(POS_END * CalculateEasingCurve(D, DURATION));
Application.ProcessMessages;
D := GetTickCount - C;
end;