démo de sauvegarde d'une fiche (position et taille) et son contenu (composants
et toutes leurs propriétés) tout comme Delphi avec le *.dfm
afin de les restituer au prochain lancement de l'application. Cool! non?
Le tout automatiquement et en toute transparence.
*
*
à n'utiliser qu'en fin de dev sans quoi vous risquez de ne pas voir
vos changement (Design)
ce code est libre d'utilisation tant que son auteur est cité
il est toute fois livré sans aucune garantie que ce soit
Démarrer l'application charger une image
charger un fichier texte changer la fonte et la taille
faire une recherche
puis redimensionner la fiche.
Fermer l'application puis redémarrer la ... enjoy ;-)
ps: Testé ok D7 à Tokyo 10.2
Mise à jour:
- Ajout d'une version "speciale" Delphi 7
Modifié le 29 nov. 2017 à 05:33
j'ai fait une modification du code non négligeable mais vu l’enthousiasme ambiant je me demande si ça vous intéresse ?
la modification porte sur la possibilité de recharger la sauvegarde à tous moments ainsi que la possibilité de faire des sauvegardes ponctuelles et de les recharger au moment voulu (ex. sauvegarde du travail, texte en cours)
Cette modification semble évidente et simple dans sa mise en oeuvre mais ce n'est pas le cas ... si vous la tester vous risquez à 99% une violation d'accès et un plantage de l'application.
Donc si la solution vous intéresse faites le moi savoir et je posterai la mise à jour avec plaisir.
PS: juste pour information, j'ai développé deux autres méthodes dans la même lignée ...
1 qui permet de sauvegarder un composant ou plus au choix dans un fichier ini
2 qui fait la même chose que l'original mais la sauvegarde est intégrée à l'exécutable (remplacement du dfm d'origine)
Faites-moi savoir si quelque chose vous intéresse ... ou pas ^^
Bon coding à tous,
Cordialement,
@+
13 nov. 2017 à 20:05
non il faut absolument détruire tous les composants parce que si le fichier de sauvegarde est corrompu il a peut être quand même eut le temps de charger les premiers composants avant de planter et dans ce cas il faut les détruire ...
il est très important de détruire tous les composants ainsi que d'effacer le nom de la fiche avant de recharger le dfm quel qu'il soit.
donc si il y a une exception on supprime à nouveau tous les composants comme ça pas mauvaises surprises du style "un composant nommé XXX existe déjà !" ^^. ;)
14 nov. 2017 à 09:52
Ce que j'aime bien avec toi, c'est que j'apprends toujours des trucs; même pour la plus banale des opérations. ^ ^
Merci. Je vais essayer d'être aussi précautionneux que toi dorénavant.
Modifié le 13 nov. 2017 à 10:29
ça fait plaisir ;)
1°) c'est Delphi (le compilateur) qui stock le dfm dans les ressources de l'application (ce n'est pas de mon fait) je ne fais qu'utiliser ce qui existe déjà. ;)
2°) ces 3 lignes ne s'exécutent que si un problème survient lors du chargement du dfm de sauvegarde. Si la sauvegarde est corrompue sans ces 3 lignes le programme risque de planter.
Alors je sais que je ne mets pas beaucoup de commentaires mais juste avant ces 3 lignes il y avait ceci : ^^
3°) le code est en fait très simple, il ne fait qu'utiliser des méthodes mises à disposition par Delphi depuis le début. D'ailleurs d'après les conditions de dépôt de code du site je devrais le supprimer pour la raison cité juste avant. Mais vu ce qu'il apporte et que je n'ai rien trouvé d'équivalent je le laisse ;)
Quand on ne comprend pas au premier abord on a tendance à chercher la complication c'est naturel c'est votre cerveau qui vous trompe ^^ il vous dit :"non non ça ne peut pas être aussi simple" ^^ mais si :p
Voilà j'espère que c'est un peu plus claire maintenant sinon je suis là ;)
Amicalement,
@+
13 nov. 2017 à 16:52
J'ai capté !
J'ai été troublé parce que je me demandais pourquoi tu détruisais les composants de la fiche, PUIS tu chargeais le dfm. Ca me semblait contradictoire. ^ ^
En fait, dans ta procedure TForm.AfterConstruction, tu détruis 2 fois les composants de la fiche en cas d'exception.
Pour résumer, seul le LoadFormFromRessources(Self) est utile dans le except de la procedure TForm.AfterConstruction.
Amitiés à tous.
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.