2010-02-12 6 views
0

AmisFermeture modeless Rave fenêtres Rapports par programme

J'utilise RR pour produire des aperçus d'impression, sur la base d'un seul TRVSystem (réglage Modal false et rediriger la fonction OnPrint pour produire chaque aperçu, la cueillette et l'utilisation du TBasereport.

Il fonctionne bien, mais je dois veiller à ce que toutes les fenêtres du rapport modales sont fermés le programme près afin d'éviter des exceptions.

Ai-je besoin de localiser/énumérer les fenêtres de rapport afin de les fermer?

Répondre

0

Vous pouvez énumérer tous les formulaires ouverts à l'aide de l'objet Screen singleton et vérifier s'ils appartiennent à un type de déviation TForm donné. Si oui, fermez ces formulaires:

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

La variable F n'est pas nécessaire. – jachguate

+0

@jachguate: O oui cela peut être, et parfois accéder aux propriétés des effets secondaires, et coûtent des cycles CPU supplémentaires. Le code a aussi besoin d'une gestion des erreurs, mais j'ai pensé que c'est un exemple à expliquer et j'ai pensé que c'est le code le plus clair. –

+0

Tout a bien fonctionné quand j'ai découvert que les formes ouvertes étaient nommées 'Rave ....'. Tout ce que j'avais alors à faire était de fermer ceux-là. –

Questions connexes