Cần sự giúp đỡ của bạn (Tôi đang bị kẹt khi tìm kiếm). Tôi đang ở Delphi Seattle, cố gắng làm cho việc thay đổi kích thước trơn tru dưới hình thức của tôi. Trong trường hợp của tôi "thay đổi kích thước" chỉ là một sự sụp đổ nhỏ/mở rộng như thế này:Delphi: mẫu thu gọn/mở rộng mượt mà
Làm thế nào tôi có thể nhận ra điều đó không?
Tôi đã thử sử dụng một 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;
... nhưng nó trông rất đơn giản (không có khả năng tăng tốc/giảm tốc) và các công trình chậm ngay cả với khoảng cách nhỏ.
Biến cục bộ (như 'h' và' t') không liên tục giữa các cuộc gọi (sự kiện hẹn giờ ở đây) Chúng được phân bổ trên ngăn xếp và bắt giữ khi thủ tục thoát. Trên các cuộc gọi lặp đi lặp lại, bạn có thể may mắn và cùng một bộ nhớ được tái sử dụng, nhưng dựa vào điều này là sai. Độ phân giải TTimer là 10ms - 15ms, mặc dù bạn có thể đặt nó xuống 1ms. Nó cũng là thông điệp dựa trên và tin nhắn bộ đếm thời gian là một ưu tiên thấp. Để có bộ hẹn giờ chính xác hơn và hiệu quả hơn, hãy sử dụng bộ hẹn giờ đa phương tiện winapi. Cuối cùng, mã đơn giản có thể cung cấp cho vẻ đơn giản, tại sao bạn mong đợi nó để hiển thị tăng tốc/giảm tốc? –