Remerciements
--------------------------------------------------------------------------------------------------------
Un grand merci à Jacques Chaillot et tous ceux que j'oublie pour toutes les infos qu'ils ont posté de ci de là et qui m'ont permis de constituer ce HowTo.
Merci aussi à Côme pour son forum qui constitue une bonne initiative même si pour l'instant il n'y a pas encore foule
![Wink ;-)](./images/smilies/icon_wink.gif)
Remarque : ce document étant régulièrement remis à jour grâce à vos infos, merci de ne pas hésiter à le commenter abondamment, et notamment si vous trouvez des erreurs ou avez des commentaires à faire. Toute remarque constructive est bonne à prendre.
--------------------------------------------------------------------------------------------------------
Préambule
--------------------------------------------------------------------------------------------------------
Encore un document TRES LARGEMENT en construction !
![Very Happy :D](./images/smilies/icon_biggrin.gif)
Le but est de récapituler ici tous les pré requis et astuces qui transformeront au mieux une simple appli Paradox à l'interface +/- grossière en un véritable petit logiciel laissant le moins possible apparaître l'existence d'un runtime et ayant un comportement le plus similaire possible à un logiciel commercial classique.
--------------------------------------------------------------------------------------------------------
Les points quasi indispensables
--------------------------------------------------------------------------------------------------------
Utilisation du runtime Paradox
Le runtime va vous permettre de distribuer/commercialiser votre logiciel sans devoir acheter une licence Paradox à chaque copie donnée/vendue.
Vous devriez le trouver ici ou là, mais Corel l'a enlevé pour l'instant
![Sad :-(](./images/smilies/icon_sad.gif)
Création d'un installeur personnalisé unique (appli+runtime)
Si votre but est de distribuer/commercialiser un "logiciel" à des non informaticiens, et non pas un développement Paradox à des pros des SGBD-R, rien n'est plus perturbant et néfaste en terme d'image que de devoir faire installer un runtime, puis faire réaliser tout un tas d'opérations à la main pour installer l'application (copie de fichiers, création de raccourcis, installation de polices, etc.).
L'utilisation d'un installeur personnalisé unique est alors indispensable.
Il devra au minimum :
- Avoir des textes et visuels personnalisables
- Contrôler la version de l'OS avant de lancer l'installation
- Permettre l'affichage avec validation obligatoire d'un accord de licence
- Tester la présence d'un runtime de même version déjà installé
- Permettre la sélection du répertoire d'installation
- Permettre de créer un groupe dans le menu Démarrer
- Permettre de créer des raccourcis dans Démarrer, sur le bureau et dans la barre de lancement rapide
- Pouvoir utiliser des icônes personnalisés pour les raccourcis
- Pouvoir personnaliser l'icône du désinstalleur dans "Ajout/suppr de programmes"
- Pouvoir renseignement des URL du désinstalleur dans "Ajout/suppr de programmes"
- Gérer une désinstallation unique ou sélective de l'application et du runtime
Et éventuellement en fonction de votre logiciel, aussi :
- Permettre le recueil d'informations personnelles
- Etre capable de créer des fichiers .ini
- Permettre l'installation de polices de caractères
- Permettre l'affichage d'un fichier LisezMoi
- Pouvoir être créé dans différentes langues ou en version multilingues
Sur ce point, un HowTo très complet existe déjà ici
![Wink ;-)](./images/smilies/icon_wink.gif)
Utilisation d'une fenêtre principale maximisée pour l'application
Comme les menus personnalisés sont attachés aux fiches et non pas au runtime en tant que tel (sans fiche affichée vous ne pourriez pas avoir de menu personnalisés), autant partir sur le principe d'une fiche principale qui sera toujours présente et se chargera (entre autre) de gérer les menus.
Par ailleurs, pour une question d'esthétique, autant que cette fiche soit une fenêtre, et qu'elle soit maximisée. En effet, le cas inverse serait assez bizarre visuellement : le runtime en tant que tel serait visible alors même que sur son bureau il ne se passerait rien (puisqu'il n'est pas programmable), et notre fenêtre ou boîte de dialogue principale (affichée en permanence) se trouverait bizarrement toujours là, au milieu du runtime sans prendre tout l'espace.
Du coup, autant que la fiche soit maximisée d'emblée (ce qui exclu de choisir une boîte de dialogue comme fiche principale).
Code : Tout sélectionner
Exemple de code à venir...
Ca n'est pas obligatoire, mais il n'y a rien à faire : pour faire pro, il faut en passer par des menus, et si possible respectant un minimum de conventions pour ne pas perturber les utilisateurs.
En effet, beaucoup de tentatives d'interfaces sans menus ou avec des menus non conventionnels se soldent par une forte difficulté d'appréhension des utilisateurs.
Dès lors :
- Créez un menu personnalisé
- Utilisés si possible un menu Fichier, puis Edition, Affichage et ensuite ce que vous voulez
- Utilisez les raccourcis claviers ("&" dans les libellés, pour des "_" à l'affichage)
- Utilisez "..." si une boîte de dialogue arrive derrière et rien si l'action est immédiate
- Faites valider ou invalider vos menus en fonction du contexte par un système de mise à jour à chaque menuAction
Code : Tout sélectionner
Exemple de code à venir...
Dans 99% des cas, les barres d'outils par défaut du runtime n'auront rien à faire sur votre logiciel, alors cachez les dès l'Init de votre fiche principale.
Code : Tout sélectionner
Exemple de code à venir...
Idem avec la barre d'état sur 2 lignes. Dans 99% des cas, une seule ligne suffira pour votre logiciel, la seconde prenant de la place et n'affichant généralement que des informations techniques propre à Paradox qui n'ont pas à l'être.
Dès l'Init, passez là à une ligne de haut.
Code : Tout sélectionner
Exemple de code à venir...
Toujours dans l'Init, changez l'icône par défaut du runtime pour un icône personnalisé de votre logiciel, à la fois pour le runtime lui même, et pour votre fiche principale.
Code : Tout sélectionner
Exemple de code à venir...
Là encore, il s'agit de ne pas laisser apparaître inutilement l'existence du runtime et de son bureau vide.
Comme dans le cadre de l'utilisation de votre logiciel il n'y a aucune raison de minimiser ou de réduire la taille de votre fiche/fenêtre principale, désactiver les actions derrières les clics sur les icônes "Minimiser" et "Restaurer" de la fenêtre principale.
Code : Tout sélectionner
Exemple de code à venir...
Que l'ont veuille quitter le logiciel est une chose, mais cette volonté ne doit pas aboutir à la seule fermeture de la fiche principale, sans entraîner avec celle du runtime. Votre logiciel doit s'ouvrir et se fermer d'une seule action et on ne doit pas sentir l'existence séparée du runtime et de votre fiche principale.
Il faut donc intercepter toute action conduisant à la fermeture de la fiche pour imposer de quitter aussi le runtime.
Code : Tout sélectionner
Exemple de code à venir...
Nombre de raccourcis de Paradox (et donc du runtime), peuvent avoir des effets indésirables (comme F9 pour autoriser l'édition d'un champ, ou F1 qui par défaut lancerait l'aide du runtime, etc.)
Il faut donc désactiver les actions par défaut, et éventuellement faire réaliser des actions de remplacement, comme lancer l'aide de votre logiciel si on appuie sur F1 (et non pas celle du runtime).
Code : Tout sélectionner
Exemple de code à venir...
Dans nombre de situation, Paradox ou son runtime affiche des messages ou des états dans la barre du même nom.
Or la très grande majorité d'entre eux ont une vocation plutôt technique et sont indésirables dans le cadre d'un logiciel à l'interface soignée.
Il faut donc empêcher leur affichage.
Code : Tout sélectionner
Exemple de code à venir...
L'interface de Windows est de plus en plus personnalisable (et ça ne devrait pas s'arranger dans l'avenir
![Wink ;-)](./images/smilies/icon_wink.gif)
Par défaut, les dernières versions de Paradox créent bien les objets avec des couleurs de surface système. Mais non seulement ça n'a pas toujours été le cas, mais en plus ces couleurs ne vous sont pas proposées dans la liste des couleurs dans nombre de situation si bien que si vous avez le malheur de modifier une couleur, vous ne pourrez pas directement revenir à la couleur système d'origine. Il faudra d'abord créer une couleur personnalisée pour pouvoir ensuite l'attribuer.
Code : Tout sélectionner
Exemple de code à venir...
--------------------------------------------------------------------------------------------------------
Les points facultatifs
--------------------------------------------------------------------------------------------------------
Gestion dynamique des libellés de l'interface pour un logiciel multilingue
Si vous créez un logiciel qui doit être multilingue, il est important de ne pas créer une fiche et un état par langue, mais bien de gérer la personnalisation des libellés à l'ouverture.
Dès lors, cette possibilité de personnaliser les libellés à chaque ouverture d'une fiche ou d'un état vous permet même de créer la possibilité de basculer à tout moment (via un simple choix de menu) votre logiciel d'une langue à l'autre (les menus étant eux aussi mis à jour instantanément).
Attention : l'affichage des champs logiques, voir de certains contenus des données peuvent aussi avoir à être traduit dynamiquement. Il faut y penser dès le départ pour ne pas avoir de mauvaises surprises ensuite...
![Wink :wink:](./images/smilies/icon_wink.gif)
Code : Tout sélectionner
Exemple de code à venir...