आप MainForm प्रत्येक एमडीआई बच्चे यह बनाता है के लिए एक OnClose
या OnDestroy
ईवेंट हैंडलर आवंटित हो सकता है। प्रत्येक बार जब एक एमडीआई ग्राहक बंद/नष्ट हो जाता है, तो हैंडलर जांच सकता है कि क्या कोई और एमडीआई बाल रूप अभी भी खुला है, और यदि नहीं तो उसे जो भी करने की ज़रूरत है, वह करें।
procedure TMainForm.ChildClosed(Sender: TObject; var Action: TCloseAction);
begin
Action := caFree;
// the child being closed is still in the MDIChild list as it has not been freed yet...
if MDIChildCount = 1 then
begin
// do work
end;
end;
या:
const
APPWM_CHECK_MDI_CHILDREN = WM_APP + 1;
procedure TMainForm.ChildDestroyed(Sender: TObject);
begin
PostMessage(Handle, APPWM_CHECK_MDI_CHILDREN, 0, 0);
end;
procedure TMainForm.WndProc(var Message: TMessage);
begin
if Message.Msg = APPWM_CHECK_MDI_CHILDREN then
begin
if MDIChildCount = 0 then
begin
// do work
end;
Exit;
end;
inherited;
end;
स्रोत
2013-09-04 00:14:35
+1 अच्छा! मुझसे बेहतर। ;-) – NGLN
@NGLN - धन्यवाद! यद्यपि आप यह जानना चाहते हैं कि कोई बच्चा यह कब करता है और ... :) –
एनजीएलएन, सर्टाक अकायस और रेमी लेबेउ। आपके उत्तरों के लिए धन्यवाद, सभी उत्कृष्ट। तुम बहुत अच्छे हो। इस के लिए मेरी स्थिति, सबसे अच्छा कोड Sertac Akyuz था। मेरी समस्या अधिक सरल और हल हो गई है। एनजीएलएन और रेमी, मैंने भविष्य में स्थितियों के लिए अपना कोड सहेजा। धन्यवाद। – Delphiman