Chỉ cần một sự kết hợp của những gì người khác đang nói.
Bạn nên chính thức hóa cách xác thực và lấy dữ liệu từ hộp thoại phương thức. Sử dụng cùng một kỹ thuật lặp đi lặp lại giúp mọi thứ dễ dàng hơn để duy trì và đọc.
Một ví dụ:
Type TFormModal = Class(TForm)
procedure OnOkClick(Sender : TObject);
function ValidateInterface : boolean;
public
procedure SetInterface(input data here);
procedure GetInterface(output data here);
end;
procedure TFormModal.OnOkClick(Sender : TObject);
begin
if ValidateInterface
then modalResult := mrOk
else modalResult := mrNone;
end;
từ hình thức chính của bạn:
procedure MainForm.OnShowMyModalFormClick(sender : TObject);
var
myModal : TFormModal;
begin
...
myModal := TFormModal.Create(nil);
try
myModal.SetInterface(...);
if (myModal.ShowModal = mrOk) then myModal.GetInterface(...);
finally
myModal.Free;
end;
...
end;
Nguồn
2011-10-19 14:47:28
Chúc mừng bạn đã đạt đến đỉnh [tất cả thời gian người dùng Delphi] (http://stackoverflow.com/tags/delphi/topusers). – NGLN
Bất cứ ai biết tại sao Câu trả lời này có 2 downvotes? Nó dường như là câu trả lời duy nhất giải quyết "chậm trễ đóng cho đến khi tôi nói nó có thể đóng" một phần của câu hỏi. –
@DavidHeffernan, câu trả lời của tôi có :). Và bạn có upvote của tôi! –