Ce sujet est résolu.
1 | |||||||||
Auteur | Messages | ||||||||
---|---|---|---|---|---|---|---|---|---|
valaquarus | #1 Posté le 30/5/2022 à 20:01:30 | ||||||||
-- Unus Ex Altera --![]() | Bonsoir, je butte sur les explications concernant settings.read, je ne vois pas très bien comment paramétrer cette commande. J'ai fais un simple Settings.Write(Me) qui a bien fait son job. Voici le fichier de configuration obtenu au moment de l'ouverture de la Form :
mais si je fais un simple Settings.Read(Me) ça ne récupère pas la géométrie enregistrée avec Write. Est ce que j'utilise mal la commande? Pourquoi y a t il un facteur supplémentaire dans read par rapport à write : Settings.Read? Philippe Système d'exploitation : KDE neon 6.0 ~ Version Gambas : 3.19.3 | ||||||||
spheris | #2 Posté le 31/5/2022 à 20:04:02 | ||||||||
![]() | Je ne connaissais pas cette commande read, il semble qu'elle gère plusieurs données en même temps. La méthode classique que j'utilise est : Pour écrire dans le fichier settings:
et pour lire le fichier settings:
| ||||||||
valaquarus | #3 Posté le 31/5/2022 à 21:46:37 | ||||||||
-- Unus Ex Altera --![]() | Je ne connaissais pas non plus mais en lisant la doc je suis tombé dessus. Write récupère la géométrie de la Form et la sauve dans le fichier de configuration et la contrepartie serait de lire avec le read mais là où ça se complique c'est qu'il n'y a pas le même nombre de paramètres dans les deux commandes et aucune explication sur ceux du read. Pour le reste je fais comme toi , de la même façon. Philippe Système d'exploitation : KDE neon 6.0 ~ Version Gambas : 3.19.3 | ||||||||
linuxos | #4 Posté le 1/6/2022 à 00:57:56 | ||||||||
Un peu de sel, de poivre et la crevette sera... ![]() | Bonsoir, Voici ce que j'utilise et qui fonctionne correctement pour ma part:
Olivier Lorsqu'on s'occupe d'informatique, il faut faire comme les canards... Paraître calme en surface et pédaler comme un forcené par en dessous. | ||||||||
valaquarus | #5 Posté le 1/6/2022 à 11:34:46 | ||||||||
-- Unus Ex Altera --![]() | Bonjour Linuxos, je ne comprend pas tu ouvres en lisant et tu fermes en écrivant. J'ai essayé mais chez moi ça ne fonctionne pas! Philippe P.S. : ce n'est pas logique ces deux commandes sont faites pour récupérer les info de taille et position de la form, une pour les écrire l'autre pour les lire. L'écriture fonctionne la lecture non. Système d'exploitation : KDE neon 6.0 ~ Version Gambas : 3.19.3 | ||||||||
spheris | #6 Posté le 1/6/2022 à 17:03:57 | ||||||||
![]() | Ce n'est pas très compliqué. En fait cela ne fonctionne pas car je pense que tu fais un read avant un write. Ne mets rien dans form_open. Ensuite dans un clic de bouton mets setting.write. Va ensuite scrutter le fichier settings. Tu auras ce qui a été sauvegardé. Ainsi tu pourras l'ouvrir avec un read la prochaine fois. | ||||||||
valaquarus | #7 Posté le 1/6/2022 à 18:27:57 | ||||||||
-- Unus Ex Altera --![]() | Merci spheris, je pensais avoir fais dans le bon sens mais je vais tester ton "truc" et voir ce qui en ressort. Mais je fais bien un write avant un read. Philippe P.S.: j'ai fais une modification d'un fichier test dans la forge, téléchargeable ici : http://89.234.156.109/code-189-tabstrip.html Système d'exploitation : KDE neon 6.0 ~ Version Gambas : 3.19.3 | ||||||||
linuxos | #8 Posté le 1/6/2022 à 20:01:57 | ||||||||
Un peu de sel, de poivre et la crevette sera... ![]() | Bonjour, En effet quelque chose a changé, du moins dans les dernieres version de Gambas 3 Dev. Voici ce qui fonctionne maintenant (enfin pour moi)
Olivier Lorsqu'on s'occupe d'informatique, il faut faire comme les canards... Paraître calme en surface et pédaler comme un forcené par en dessous. | ||||||||
valaquarus | #9 Posté le 1/6/2022 à 21:00:06 | ||||||||
-- Unus Ex Altera --![]() | Bonsoir Linuxos, je n'ai pas de version de dev mais la 3.17.2 toute "bête". le Settings.Save force l'enregistrement immédiat sur le disque (visible si on ouvre le fichier de configuration), sans lui l'enregistrement est différé à la fermeture du programme. Mon propos était d'enregistrer (physiquement ou non, par un write) les dimensions du formulaire, à l'ouverture de celui-ci, pour les récupérer plus tard (par un read). Le write fonctionne bien puisque je récupère bien la géométrie du formulaire, c'est visible dans le fichier conf par la ligne :
Je ne peux pas utiliser ce que tu proposes puisque tu lis le fichier de configuration à l'ouverture alors que je n'ai rien dessus (la première fois) et tu l'enregistres à la clôture, je ne peux donc pas récupérer la géométrie du formulaire pour la rappeler quand je veux (par cette méthode). Ici, j'ai trois onglets d'un tabstrip dont un (le premier) doit absolument revenir à ces dimensions de départ. Philippe Système d'exploitation : KDE neon 6.0 ~ Version Gambas : 3.19.3 | ||||||||
spheris | #10 Posté le 2/6/2022 à 06:35:28 | ||||||||
![]() | valaquarus,Je ne peux pas utiliser ce que tu proposes puisque tu lis le fichier de configuration à l'ouverture alors que je n'ai rien dessus (la première fois) Et si tu testais l'existence du fichier settings. S"il n'existe pas tu en crées un par défaut... , le read lit la géométrie du formulaire agrandi peux etre que ton souci se situe dansle dernier 0 de la geometrie. As tu essayé de mettre 1 ou 2 et de faire un read pour voir ce que cela donne ? pour les récupérer plus tard (par un read) un reload les relis tout de suite | ||||||||
valaquarus | #11 Posté le 2/6/2022 à 10:04:45 | ||||||||
-- Unus Ex Altera --![]() | Bonjour à tous, spheris, j'ai repris ta proposition de créer un bouton, dans un des onglets de mon tabstrip.
A l'ouverture du formulaire :
Quand on clique sur le bouton on lit bien ce qui a été enregistré dans le fichier de configuration par un Settings.Read (oui, c'est bien Read et non Write, ce qui explique la proposition de Linuxos) au moment de l'ouverture du formulaire même si le fichier n'est pas matérialisé sur le disque. Après une modification quelconque de la géométrie si on clique à nouveau sur le dit bouton on récupère la dernière géométrie (après un resize quelconque par exemple). On ne peut, par contre, pas utiliser Settings.Read dans l'évènement TabStrip_Click cela ne récupère même pas la dernière géométrie du formulaire :
En résumé : Le write sert à quoi, si on ne peut pas récupérer ces info, à volonté? le read doit être lié à l'évènement Form_State() qui est récent. Ce qui expliquerait le fonctionnement constaté dans mon exemple. Pour ce que je voulais faire, au départ, la technique basique :
Philippe P.S. : À moins que quelqu'un ne se décide à modifier la documentation, les explications de Settings.Read resterons hermétiques. Système d'exploitation : KDE neon 6.0 ~ Version Gambas : 3.19.3 | ||||||||
jeanyvon | #12 Posté le 2/6/2022 à 12:15:17 | ||||||||
Gambas? Ma! Et gusto![]() | Philippe Salut, Je n'arrive pas à m'y mettre ![]() ![]() Vieillir? On peut retarder mais pas y échapper! | ||||||||
valaquarus | #13 Posté le 2/6/2022 à 12:45:57 | ||||||||
-- Unus Ex Altera --![]() | Salut JeanYvon, lances toi à l'eau, tu ne crains rien du tout, elle est bonne! Philippe Système d'exploitation : KDE neon 6.0 ~ Version Gambas : 3.19.3 | ||||||||
valaquarus | #14 Posté le 2/6/2022 à 22:38:11 | ||||||||
-- Unus Ex Altera --![]() | Bonsoir à tous, juste un commentaire supplémentaire qui va dans le sens du lien avec l'évènement Form_State(). J'ai ajouté ceci :
Et bien même si ce n'est pas trop propre cela fonctionne sauf lors d'un resize sur un des deux autres onglets, ce qui est logique puisque Form_State ne gère pas resize, pour contrer ça il faut cliquer sur le bouton que j'ai placé sur le 2eme onglet et qui ne contient comme commande que le Settings.read(Me). Je rappelle qu'en entrée, j'ai seulement ceci :
Philippe Système d'exploitation : KDE neon 6.0 ~ Version Gambas : 3.19.3 | ||||||||
1 |