Composant gestion automatique de commandes standard

Description

Alors voila, je sais que le titre de ma source n'est pas très clair, mais il n'est pas vraiment facile de résumer en quelques mots ce que propose mon composant.

Kesako ?


Lorsque l'on créé une application, la plupart du temps, il est nécessaire d'implémenter des fonctions "standards" telles que Fichier -> Nouveau, Fichier -> Enregistrer... Sauf que ça prend du temps parceque si on fait nouveau fichier alors qu'un autre fichier est déjà ouvert, il faut proposer l'enregistrement de ce dernier avant de créer un quelque chose de nouveau. Bref, ce genre de considérations est à mon avis une perte de temps et coder ce genre de choses une fois pour toutes serait assez sympa... du moins, c'est mon avis. Ma source contient donc un composant qui s'appèle "Easy filer". Comment il marche ? et bien il s'agit d'un composant non graphique que vous posez sur votre appli. Vous créez un menu fichier -> Nouveau, Fichier -> Enregistrer, ect. Il suffit ensuite de "relier" le composant à ces menus, directement depuis le GUIBuilder.

Jusque là, nous n'avons pas encore tapé d'instructions directement dans le code.

La seconde étape est de créer les classes et les sous classes que vous voudrez enregistrer dans le fichier, en prennant bien soin quelles soient TOUTES sérialisables. Dans le code (ha, on commence à coder), spécifiez juste à mon composant quel est l'objet qu'il va falloir enregistrer.

Ca y est ! normallement, vous avez déjà un programme qui peut enregistrer sous, faire de nouveaux fichiers, ouvrir, ... Tous les dialogues sont gérés par le composant...

Bref, normallement, le gain de temps est substentiel.

Pour aller plus loin...


Il est évidement possible de modifier moultes options utilisés par ce composant. En voici une liste :
- L'item de menu associé aux fonctions "nouveau", "ouvrir", "enregistrer", "enregistrer sous" et "fermer",
- Les boutons de toolbar correspondant à ces mêmes fonctions,
- Il est possible de faire en sorte qu'une image par défaut soit automatiquement insérée pour les menus et bouton "nouveau", "ouvrir" et "enregistrer",
- Les textes de confirmation avant l'ouverture, la création, ou la fermeture d'un fichier alors qu'un autre fichier est déjà ouvert,
- Le filtre utilisé pour les boites de dialogue ouvrir et enregistrer.

Pour ce qui est des évènements, ils sont les suivants :
- Avant et après un enregistrement,
- Avant et après la fonction "Nouveau fichier",
- Avant et après la fonction "Fermer",
- Avant et après la fonction "Enregistrer sous".

Pour chacun de ces évènements, il est possible d'annuler l'action en cours avec l'écènement avant. Par exemple, si vous récupérez l'évènement Avant-Enregistrement, vous pouvez annuler celui-ci en mettant le paramètre ContinueFileSave à false.

Enfin, il est possible de paramétrer très simplement sa barre de menu avec le nom du fichier. Par exemple, si vous voulez que votre barre de menu soit à jour en fonction du nom du fichier, vous pouvez utiliser l'évènement OnTitleBarChange.

Avant dernière note :
Lorsque vous modifiez votre objet, vous devez le signaler au composant par le biais de sa propriété UnsavedChanges. Ainsi, le titre de la fenêtre pourra être mis à jour, et le composant saura qu'il y a eu des modifications qu'il faut enregistrer.

Dernière note :
Vous pouvez appeler vous-même les fonctions nouveau, enregistrer, fermer... Le nom des méthodes est suffisament significatif, vous les trouverez simplement. Je les ai mises publiques.

Source / Exemple :


tout est dans le zip

Conclusion :


Ceci est une version beta pas encore trop testée. Elle pose cependant les bases de quelque chose qui pourrait être pas mal.
Ceci a été compilé avec le framework 2.0 beta 2. A vous de recompiler avec la version du framework de votre choix si besoin.

Codes Sources

A voir également

Vous n'êtes pas encore membre ?

inscrivez-vous, c'est gratuit et ça prend moins d'une minute !

Les membres obtiennent plus de réponses que les utilisateurs anonymes.

Le fait d'être membre vous permet d'avoir un suivi détaillé de vos demandes et codes sources.

Le fait d'être membre vous permet d'avoir des options supplémentaires.