COMPO TCYINIFORM, SAUVER LA POSITION/TAILLE DES FORMS.

cs_MAURICIO Messages postés 2106 Date d'inscription mardi 10 décembre 2002 Statut Modérateur Dernière intervention 15 décembre 2014 - 5 mai 2005 à 17:05
cs_lucien Messages postés 82 Date d'inscription vendredi 27 décembre 2002 Statut Membre Dernière intervention 3 juin 2007 - 3 avril 2009 à 07:48
Cette discussion concerne un article du site. Pour la consulter dans son contexte d'origine, cliquez sur le lien ci-dessous.

https://codes-sources.commentcamarche.net/source/31225-compo-tcyiniform-sauver-la-position-taille-des-forms

cs_lucien Messages postés 82 Date d'inscription vendredi 27 décembre 2002 Statut Membre Dernière intervention 3 juin 2007
3 avril 2009 à 07:48
Merci
cs_MAURICIO Messages postés 2106 Date d'inscription mardi 10 décembre 2002 Statut Modérateur Dernière intervention 15 décembre 2014 5
31 mai 2005 à 13:30
Voilà, j' ai réussit à faire le autoSave !!!
C' est gràce à mon dernier compo (tcyDBLabel) qui utilise la procédure Notification pour savoir si on a éliminé le DataSource.
cs_lucien Messages postés 82 Date d'inscription vendredi 27 décembre 2002 Statut Membre Dernière intervention 3 juin 2007
6 mai 2005 à 17:31
Merci pour ces précisions de spécialiste
Laissons murir l'imagination, elle fournira des réponses...Cela m'est souvent arrivé !
L'aide des copains aussi, bien sûr !! :)
Amicalement,
Lucien
cs_MAURICIO Messages postés 2106 Date d'inscription mardi 10 décembre 2002 Statut Modérateur Dernière intervention 15 décembre 2014 5
6 mai 2005 à 17:20
J' ai analysé la compo de phidels.com et il gère le WindowState. Mais dans ce cas, faudrait trouver le moyen de récupérer la taille+position quand la Form n' est pas dans cet etat. Ma fonction est basée sur le Owner et non pas sur un TForm.
En ce qui concerne sa gestion du AutoSave, il fait ce que je me refuse de faire: il change la propcédure OnClose de la Form pour choper l' event en sortant :(
cs_MAURICIO Messages postés 2106 Date d'inscription mardi 10 décembre 2002 Statut Modérateur Dernière intervention 15 décembre 2014 5
6 mai 2005 à 12:20
Merci à toi Lucien pour ce link et pour tes encouragements. Faut dire que les compos ça faisait 2 il y a même pas 2 mois.
D' ailleurs, je tiens à signaler que le site de phidels fait parti de mes favoris :)

Le compo semble identique au miens. J' y jetterai un oeil cet apres midi. Je viens de faire un update da ma source selon les suggestions de DelphiProg.
A+
cs_lucien Messages postés 82 Date d'inscription vendredi 27 décembre 2002 Statut Membre Dernière intervention 3 juin 2007
6 mai 2005 à 11:16
Regarde à cette adresse...il y a peut-être une idée ,
je me sers souvent de ce compo et il me convient.

http://www.phidels.com/php/index.php3?page=../php/mescompo/gpf.htm&id=226

Merci de toutes tes interventions, Mauricio, j'y apprends des tas de choses.

Lucien
cs_MAURICIO Messages postés 2106 Date d'inscription mardi 10 décembre 2002 Statut Modérateur Dernière intervention 15 décembre 2014 5
6 mai 2005 à 10:57
Salut DelphiProg, je voudrai te répondre:
Oui, tu as raison, l' utilisation de ReadInteger() est evidente. Désolé, je vais corriger cela...
Pour le changement de l' extension, n' oublie pas qu' un executable/dll fini toujours par .exe/.dll Mais je vais utiliser quand même ChangeFileExt, désolé encore une fois :(

Alors pour FAutoLoad à True, tu n' as pas dû comprendre:
la propriété AutoLoad est à True par défaut mais peut être changée en Design Time par le programmeur.
Toutefois, ce que je n' arrive pas à faire c' est implémenter la AutoSave (voir mon 1er commentaire) ...
cs_Delphiprog Messages postés 4297 Date d'inscription samedi 19 janvier 2002 Statut Membre Dernière intervention 9 janvier 2013 32
5 mai 2005 à 23:42
Florenth : les fonctions WriteComponentRes/ReadComponentRes, WriteComponentResFile/ReadComponentResFile enregistrent les propriété publiées des composants et seulement celles-là.
cs_Delphiprog Messages postés 4297 Date d'inscription samedi 19 janvier 2002 Statut Membre Dernière intervention 9 janvier 2013 32
5 mai 2005 à 23:27
Cette fois, je ne vois pas pour quelle raison tu utilises des lectures/écritures sous forme de chaines dans le fichier ini. Cela oblige à de multiples conversions sans lesquelles le code serait considérablement allégé.

Je trouve aussi assez mignon la façon de changer l'extension d'un nom de fichier :
Copy(ParamStr(0), 1, Length(ParamStr(0)) - 3) + 'ini'
Commse si toutes les extensions ne comportaient que trois caractères.
La fonction ChangeFileExt fait cela très bien, quelque soit le nombre de caractères inclus dans l'extension.

Enfin, le méthode Loaded est appeleée juste après Create. Or, comme tu affectes FAutoLoad à True, forcément le code dans la méthode Loaded sera toujours exécuté.
Au lieu de cela, pourquoi n'appelles-tu pas directement la méthode LoadIniForm directement à la fin du constructeur ?

Tu voulais un avis ? Je crois que tu es servi.
Amicalement,
Delphiprog.
cs_MAURICIO Messages postés 2106 Date d'inscription mardi 10 décembre 2002 Statut Modérateur Dernière intervention 15 décembre 2014 5
5 mai 2005 à 18:50
Salut florenth !
Oui je conaissais, ce compo permet automatiquement (il suffit de le mettre sur une form et d' utiliser la propriété LoadAuto et SaveAuto que je n' ai pas encore fait) de charger la position et la taille de la form selon laquelle elle fut definie par l' utilisateur avant sa fermeture. Donc, les autres propriétés ne m' interessent pas vu qu' elles ne sont pas modifiables par l' utilisateur.
Il permet d' ailleurs de definir quel type de propriété on désire charger.
A+
Il existe aussi des procedures implementées dans TStream (WriteComponentRes et ReadComponentRes) qui font la même chose mais en stockant plus de propriétés.

Jette-y un coup d'oeil.

Flo