Application.Terminate
công trình tốt. Tuy nhiên, hãy nhớ rằng việc kết thúc bị trễ, tất cả những điều đó là gửi một tin nhắn WM_QUIT
tới hàng đợi tin nhắn của chuỗi cuộc gọi, vì vậy ứng dụng sẽ không thực sự chấm dứt cho đến khi Application.Run()
được gọi để bắt đầu xử lý hàng đợi tin nhắn của chuỗi chính. Do đó, bạn có thể thấy màn hình chờ nhấp nháy MainForm trong giây lát trước khi ứng dụng thực sự bị chấm dứt. Nếu bạn muốn tránh điều đó, bạn có thể đặt Application.ShowMainForm
tài sản để sai, ví dụ:
procedure TMainForm.FormCreate(Sender: TObject);
begin
if (some condition) then
begin
Application.ShowMainForm := False;
Application.Terminate;
end;
end;
Tuy nhiên, như những người khác đã nói, một thiết kế tốt hơn là để làm việc kiểm tra trong file DPR của dự án để thay thế và thậm chí không tạo các MainForm ở tất cả nếu cần thiết, ví dụ:
Application.Initialize;
if not (some condition) then
begin
Application.CreateForm(TMainForm, MainForm);
Application.Run;
end;
Nguồn
2013-07-30 18:28:36
'Application.Terminate' chắc chắn hoạt động. Nhưng tốt hơn là viết mã của bạn trong tệp .DPR và không phải trong trình xử lý sự kiện 'OnCreate' của biểu mẫu chính của bạn ... –
Kiểm tra các điều kiện trước khi bạn tạo biểu mẫu. Nếu bạn cần khá, bạn có thể bỏ qua mã .dpr tạo các biểu mẫu và gọi 'Application.Run'. Ví dụ, bạn có thể gọi 'exit' trong phần thân của tệp .dpr. –
@AndreasRejbrand - đây là những gì tôi đang làm :) Những gì tôi muốn hỏi là làm thế nào để chấm dứt nó bên trong sự kiện OnCreate. – RBA