1 membre
Connectés : ( personne )
- La Charte du Forum - Forum - Questions générale
Sujet n° 440 |
Afficher formulaire caché |
le 16/12/2010 : 17:54 par dumas_blr
|
Bonjour,
Je vous contacte suite à de nombreuses recherches infructueuses. Je n'arrive pas à réafficher un formulaire que j'ai caché auparavant Le principe est d'afficher un aperçu avant impression d'un état lorsque des fenêtres modales ont été ouvertes.
voici le principe de l'algorithme
Ouverture du formulaire principal (mode ACmodal) ... sur bouton_imprimer_etat_clic Ouverture du formulaire d'impression des état(mode ACmodal) ... sur bouton_afficher_apercu_clic OpenReport(nom_de_l_etat)
Code :Public Sub OpenReport(ReportName As String, _ Optional View As Integer, _ Optional FilterName As String, _ Optional WhereCondition As String, _ Optional Callform As Form, _ Optional OpenArgs As String) On Error Resume Next 'For No data Dim loFormArray() As String Dim loform As Form Dim intCount As Integer Dim intX As Integer Application.CommandBars("Menu").Visible = False 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, , OpenArgs DoCmd.Maximize SendKeys ("z") Reports(ReportName).Tag = "Preview" 'For Log files Do While CurrentProject.AllReports(ReportName).IsLoaded = True DoEvents Loop For intX = intCount - 1 To 0 Step -1 Forms(loFormArray(intX)).Visible = True Next Application.CommandBars("Menu").Visible = True If Callform.Name <> "" Then DoCmd.SelectObject acForm, Callform.Name End If If Err = 2501 Then Err.Clear 'Erreur définie par l'application ou par l'objet End Sub
Le problème est que lorsque je souhaite réafficher le formulaire (forms.visible), il refuse de s'afficher.
Nota : Je fais scette manipulation car je souhaite pouvoir afficher l'aperçu avant impression d'un état alors que j'ai plusieurs |
|
|
Réponse n° 1 -------- le 16/12/2010 : 18:27 par 3Stone
Administrateur
|
Bonjour,
Un formulaire modal est destiné à se trouver à l'avant plan, on ne peut donc pas ouvrir un état devant un tel formulaire.
Il y a alors deux solutions, soit on cache le formulaire avant d'ouvrir l'état, soit on le ferme.
Cordialement, Pierre(3stone)
PS: Il n'est pas souhaitable de coller du code de bonne raison. Si c'est souhaiter, coller le code, le sélectionner et cliquer sur le bouton "<>" de l'éditeur. |
|
|
Réponse n° 2 -------- le 17/12/2010 : 16:55 par dumas_blr
visiteur |
Bonjour Pierre,
Cest exactement ce que je cherchais à faire.
Je sais cacher tous mes formulaires, mais je n'arrive à ne les réafficher en empilant.
Or, en les ouvrant dans un ordre donné (opération docmd.openform), on empile bien les fenêtre dans un ordre d'affichage bien précis. Par contre, le fait de les cacher (utilisation de la propriété .visible = false), fait perdre toute mémorisation du contexte, puisqu'à priori, il n'y aurait donc pas de contexte pour une fenêtre modale.
Est-ce à dire que les opération de cachage/décachage de formulaire ne peuvent être gérées que pour une seule fenêtre modale et pas plus ?
Ma question peut ne pas paraitre pertinente, mais il se trouve que je développe une application pour des personnes (d'un certain age) qui ne connaissent absolument rien à l'informatique, et qui m'ont chargé de leur éviter toute possibilité de fausse manoeuvre. Ce qui m'a fait écarter à priori la navigation par onglet propre à Access2007.
Y a-t-il d'autre possibilité pour interdire à un utilisateur de sortir du chemin tracé autrement que par l'utilisation de fenêtres modale ?
PS : merci pour les conseils d'affichage. Je viens de découvir le forum, et donc n'ai pas pu étudier plus précisément l'ergonomie, d'autant plus que ce message était posté à l'origine sur le livre d'or
Merci de ne pas trop s'en formaliser, mais l'egonomie pour poster de nouveaux messages sur ce forum ne me parait pas trop évidente |
|
|
Réponse n° 3 -------- le 17/12/2010 : 17:11 par dumas_blr
visiteur |
Suite de ma réponse... et au mémo que j'ai pu voir concernant les switch modal.
Est-ce qu'une solution ne serait pas de "démodaliser" chaque formulaire au moment de le cacher, puis de faire les opérations suivantes dans l'ordre daffichage des formulaires : - décacher le formulaire (propriété .visible = true) - "remodaliser" le formulaire ?
Merci d'avance pour votre avis éclairé |
|
|
Réponse n° 4 -------- le 17/12/2010 : 21:30 par 3Stone
Administrateur
|
Bonjour,
Citation :Je sais cacher tous mes formulaires, mais je n'arrive à ne les réafficher en empilant.
Tu veux dire que tu ouvres tous les formulaires, pour ensuite jouer avec la propriété visible=false/true ??
Si oui, c'est une abération Il ne manquerait plus que tu les rendent tous indépendant... Si une telle base serait amenée à être placée en réseau, cela serait une catastrophe totale en termes de performance... Citation :Ma question peut ne pas paraitre pertinente, mais il se trouve que je développe une application pour des personnes (d'un certain age) qui ne connaissent absolument rien à l'informatique, et qui m'ont chargé de leur éviter toute possibilité de fausse manoeuvre. Ce qui m'a fait écarter à priori la navigation par onglet propre à Access2007.
Une base bien réalisée et possédant une bonne ergonomie est le meilleur garant. Citation :Y a-t-il d'autre possibilité pour interdire à un utilisateur de sortir du chemin tracé autrement que par l'utilisation de fenêtres modale ? On peut ouvrir une fenêtre modale, voir indépendante... le reste se réalise par le contrôle des saisies, etc.
Cordialement, Pierre(3stone) |
|
|
Réponse n° 5 -------- le 17/12/2010 : 22:49 par dumas_blr
visiteur |
Citation :Tu veux dire que tu ouvres tous les formulaires, pour ensuite jouer avec la propriété visible=false/true ??
Non, bien sur ! Mais il s'agit juste d'un enchainement classique menu général (1)-> fiche de consultation (2)-> formulaire d'impression d'états(3). ou menu général(1) -> fiche de saisie(4) -> formulaire d'impression d'états(3).
Ce que je veux absolument, c'est que les utilisateurs, s'ils veulent passer de 2 à ne puissent pas faire autrement que de suivre l'enchainement 1-2-3-2-1 ou 1-2-1-4 |
|
|
Réponse n° 6 -------- le 17/12/2010 : 23:14 par 3Stone
Administrateur
|
Je ne connais pas ton appli, ni la finalité... Mais si je comprends ce que tu souhaites, pourquoi ne pas placer les boutons qui vont bien sur les différents formulaires et de n'activer que ceux qui correspondent au pas suivant ou l'abandon avec retour au menu ?
Cordialement, Pierre(3stone) |
|
|
Réponse n° 7 -------- le 17/12/2010 : 23:19 par dumas_blr
visiteur |
Parce que cela n'empèchera pas un utilisateur de passer d'eun onglet à un autre alors que seul le dernier formulaire doit être actif |
|
|
Réponse n° 8 -------- le 17/12/2010 : 23:47 par 3Stone
Administrateur
|
Oublie cette c*nnerie d'onglets... et décroche les formulaires. Si tu connais Access 2003, configure ton soft de la même façon, sans les onglets.
Pour "nettoyer" la place, tu peux aussi ouvrir en premier lieu un formulaire en maximize! Et sans rien, pas de bouton, pas de bordure, rien! Puis, tu ouvre ton menu général.
Cordialement, Pierre(3stone) |
|
|
sujet actif
sujet clos
Important!
Nouveau message -
Rectifier message
Clôturer sujet
Remonter
|