Message de Jean-Baptiste Faure  date 2009-05-16 18:04 :
Le 16.05.2009 16:59, Didier LAMARE a écrit :


Bonjour Jean-Baptiste,

Merci pour le lien sur les nouveautés dans Base. Je l'avais déjà parcouru.

Le problème avec Lock/UnlockController est résolu, il suffit de
remplacer "ThisComponent.lockControllers" par
"ThisDataBaseDocument.lockControllers".

Par contre le deuxième problème est toujours d'actualité, et je suis à
peu prés sûr que c'est un bug. En effet j'arrive à utiliser les autres
méthodes de cet objet (getText, setEnable) et la métode isVisible me
renvoie bien son statut (False ou True), mais il reste affiché à
l'écran, alors que le  statut est False.

Est-il possible d'ouvrir un incident?

Je joins un nouveau document, plus simple. Dans le formulaire
"Formulaire1" les deux boutons réalisent la même opération, rendre
visible  ou invisible le champs d'étiquette "Cible". La différence est
dans la manière d'accéder au document, le bouton "Change Etat_1" est
la méthode utilisée en 301 avec la macro dans le formulaire, l'autre
"Change Etat_2" est le méthode utilisée avec la 310, la macro est dans
le fichier .odb.
J'espère être clair.

Je te souhaire une bonne journée.

Cordialement
Didier

Bonjour Didier,

On peut bien sûr soumettre un rapport de bug mais je crois qu'il est
utile avant de le faire de demander confirmation sur la liste prog-fr où
il y a des experts de la programmation dans OOo. Je mets donc la liste
prog en copie.
Comme je ne connais pas grand-chose aux macros et à OOo-Base je suis
bien en peine de confirmer le problème et de l'expliquer en anglais sur
IZ. Donc si un expert es macros pouvait nous en dire plus, ce serait
sympa. Je remets le fichier de test en pièce jointe.


Le codage de la macro "Main" est inutilement complexe. Mais effectivement, le basculement de Visible ne fonctionne pas.

1 - La macro étant déclenchée depuis un formulaire, ThisComponent renvoie le document formulaire. A partir de là, on récupère facilement le contrôle. 2 - le formulaire utilise un contrôle Etiquette. Je l'ai remplacé par un contrôle Texte pour voir ce qui se passe quand le contrôle est supposé invisible. 3 - Si on bascule un contrôle en invisible, il est inutile de basculer son état Enable, car on ne peut plus le modifier. 4 - OOoBasic n'optimise pas les codages : répéter les séquences xx.yy.zz est non seulement pas clair mais pas rapide. J'ai employé des variables intermédiaires.

Voilà le résultat:

Sub Main
Dim formulaireEnCours as Object, ctrlTexte As Object, vueCtrl As Object
Dim oView As Object

formulaireEnCours  = ThisComponent.DrawPage.Forms.getByName("Standard")
ctrlTexte = formulaireEnCours.getByName("Cible")
oView = ThisComponent.CurrentController
vueCtrl = oView.getControl(ctrlTexte)
vueCtrl.Visible = not vueCtrl.isVisible
MsgBox("Visible ? " &  vueCtrl.isVisible)
End Sub

A l'exécution on constate :
- le message affiche bien False, True, False, avec des appuis successifs du 
bouton.
- le contrôle reste toujours visible, mais il ne peut être modifié quand il est "supposé invisible".

Tu peux faire un rapport en fournissant un document simplifié (changer la macro Main, mettre un contrôle Zone de texte, supprimer le bouton et la macro concernant la version 3.0.1).

 Cordialement,
    Bernard


---------------------------------------------------------------------
To unsubscribe, e-mail: prog-unsubscr...@fr.openoffice.org
For additional commands, e-mail: prog-h...@fr.openoffice.org

Répondre à