Carte du site
 Remerciements
 Netiquette
 Bugs
 Tables
 Requêtes
 Formulaires
 États (rapports)
 Modules
 APIs
 Chaînes
 Date/Time
 Général
 Ressources
 Téléchargeables

 Termes d'usage

États: Travailler avec des états depuis un formulaire modal

Author(s)
Terry Kreft

Travailler avec des états depuis un formulaire modal.

(Q) J'ai un formulaire duquel j'appelle plusieurs états de par la métode doCmd:
        docmd.OpenReport strReportName, acPreview
   
   Cependant, ce formulaire, permettant à l'utilisateur de choisir l'état à visionner, est ouvert en mode modal:
    docmd.OpenForm strFormname, , , , , acDialog

Le problème c'est que je ne peux sélectionner aucun menu des pré-visionnements ainsi ouverts, mais derrière le formulaire (modal). Comment faire pour amener ces pré-visionnements "en avant" et avec le focus?

(A) Utiliser la procédure OpenReport du code de Terry Kreft, ci-dessous, de la même façon que si vous utilisiez OpenReport.

'************ Code Start **********
'This code was originally written by Terry Kreft.
'It is not to be altered or distributed,
'except as part of an application.
'You are free to use it in any application,
'provided the copyright notice is left unchanged.
'Ce code fut originalement écrit par Terry Kreft.
'Il ne peut être altéré ni distribué autrement
'qu'à l'intérieur d'une autre application.
'Vous êtes libre de l'utiliser dans votre application
'en autant que cette note demeure inchangée.
'
'Code Courtesy of
'Terry Kreft

Sub OpenReport(ReportName As String, Optional View As Integer, Optional _
    FilterName As String, Optional WhereCondition As String)
Dim loFormArray() As String
Dim loform As Form
Dim intCount As Integer
Dim intX As Integer
    For Each loform In Forms
        If loform.Visible Then
            ReDim Preserve loFormArray(intCount)
            loFormArray(intCount) = loform.Name
            loform.Visible = False
            intCount = intCount + 1
        End If
    Next
    DoCmd.OpenReport ReportName, View, FilterName, WhereCondition
    Do While IsVisible(acReport, ReportName): DoEvents: Loop
    For intX = intCount - 1 To 0 Step -1
        Forms(loFormArray(intX)).Visible = True
    Next
End Sub
Function IsVisible(intObjType As Integer, strObjName As String) As Boolean
Dim intObjState As Integer
    intObjState = SysCmd(acSysCmdGetObjectState, intObjType, strObjName)
    IsVisible = intObjState And acObjStateOpen
End Function
'*********** Code End **************

© 1998-2001, Dev Ashish, All rights reserved. Optimized for Microsoft Internet Explorer