Macros/General/001/fr

Comment ouvrir un document dans son application par défaut ?
On gére des Url et on souhaite ouvrir les objets correspondants (documents, dossier, page Web, etc.) dans leur application par défaut (LibreOffice, lecteur PDF, explorateur, navigateur, etc.).

Depuis un formulaire
Les contrôles Bouton disposent d'une propriété Action que l'on peut définir à Ouvrir la page web. Si l'interface de l'application utilise un formulaire on peut :
 * inclure un tel bouton,
 * définir sa propriété Action à Ouvrir la page web,
 * et "récupérer" l'Url à ouvrir dans un autre contrôle, une zone de texte par exemple comme ci-dessous :



Dans ce formulaire le contrôle zone de texte affichant l'Url est nommé txtUrl. Il suffit d'associer à l'événement Accepter l'action du bouton une procédure du type :


 * L'événement LibOEvent, passé lors de l'exécution, permet de "remonter" à l'élément parent (le formulaire) et ainsi d'accéder à la propriété Text du contrôle zone de texte txtUrl.
 * La fonction convertToUrl convertit le texte au format Url
 * Le résultat est assigné comme cible (TargetURL) à l'action Ouvrir la page web du bouton.

Hors formulaire
Si l'ouverture du document n'est pas déclenchée par un bouton, on peut utiliser le service SystemShellExecute qui attend trois paramètres :
 * Command : la commande à exécuter (l'Url par exemple)
 * Parameter : paramètre(s) facultatif(s) utilisé(s) par la commande
 * Flags : "drapeau" permettant de contrôler l'exécution de la commande, notamment pour éviter d'afficher un message d'erreur dans certains cas.

Exemple d'ouverture d'une page Web : 

Exemple de mise en œuvre de la gestion d'erreur :

Utiliser le "drapeau" NO_SYSTEM_ERROR_MESSAGE empêche le système d'afficher son propre message :
 * Avec le paramètre DEFAULTS Windows, par exemple, afficherait Windows ne trouve pas 'classeur.ods'...
 * Avec le paramètre NO_SYSTEM_ERROR_MESSAGE ce message est inhibé et il est possible de créer sa propre routine de gestion d'erreur.

Notes :


 * [[Media:FR.MACROS General 001 OuvrirFichierDansApplication.odb|Télécharger une base exemple]]
 * [[Media:FR.MACROS General 001 OuvrirFichierDansApplication.ods|Télécharger un classeur exemple]]