2010-02-12 25 views
0

朋友關閉無模式的Rave報告窗口編程

我使用RR製作打印預覽,基於單一TRVSystem(設置模態爲false,並重定向onPrint功能產生每個預覽,選擇和使用TBasereport。

它運作良好,但我需要確保所有的非模態報告的窗口被關閉,以避免異常的程序關閉。

我需要找到/枚舉報告窗口,以關閉它們?

回答

0

您可以使用Screen singleton對象枚舉所有打開的窗體並檢查它們是否是給定的TForm獨立類型。如果是,請關閉這些表格:

var 
    F: TCustomForm; 
    i: Integer; 
begin 
    for i := Screen.FormCount - 1 downto 0 do begin 
    F := Screen.Forms[ i ]; 
    if F is TMySpecialFormType then F.Free(); 
    end; 
end; 
+0

F變量不是必需的。 – jachguate 2010-02-12 21:25:58

+0

@jachguate:是的,可以,有時候訪問屬性會帶來額外的CPU週期。代碼也需要錯誤處理,但我認爲這是一個解釋的例子,我認爲這是最明顯的示例代碼。 – 2010-02-12 21:54:01

+0

當我發現開放表格被命名爲'Rave ....'時,這一切都很好。 我那時要做的就是關閉那些。 – 2010-03-04 11:28:54