Comment memoriser la position d'un composant creer dynamiquement

Signaler
Messages postés
6
Date d'inscription
vendredi 5 juin 2009
Statut
Membre
Dernière intervention
16 février 2014
-
Messages postés
265
Date d'inscription
lundi 27 octobre 2003
Statut
Membre
Dernière intervention
19 juillet 2021
-
Bonjour,
et avant tout une très bonne année 2014 à tous,

Je travaille sur un projet permettant de créer des formulaires de saisie. Créer , déplacer les composants je sais faire. par contre un fois créer, j'ai besoin de mémoriser leurs positions sur la fiche pourquoi pas dans un fichier .txt par exemple pour pouvoir ensuite recharger ce formulaire formulaire et retrouver mes composants comme je les avaient laissés.

il me semble qu'il y avait un exemple sur le forum, mais je ne le retrouve pas.

Quelqu'un aurait'il une idée ?
je continue à chercher...
Merci
Bonne soirée

7 réponses

Messages postés
675
Date d'inscription
jeudi 17 avril 2008
Statut
Membre
Dernière intervention
19 février 2019
14
Salut
Voici 2 procédures (à adapter en fonction des options à sauvegarder) :

procedure TForm1.sauve1;
var t:TstringList;
begin
t := Tstringlist.create;
t.Add(inttostr(Panel1.left));
t.Add(inttostr(Panel1.top));
t.SaveToFile('xx.txt');
t.free;
end;


procedure TForm1.charge1;
var t:TstringList;
begin
t := Tstringlist.create;
t.LoadFromFile('xx.txt');
Panel1.Left := strtoint(t[0]);
Panel1.top := strtoint(t[1]);
t.free;
end;
Messages postés
420
Date d'inscription
samedi 17 mai 2003
Statut
Membre
Dernière intervention
6 mai 2019
16
Salut,

Et pourquoi pas un fichier "*.ini" ?
Messages postés
420
Date d'inscription
samedi 17 mai 2003
Statut
Membre
Dernière intervention
6 mai 2019
16
Hello.
Possibilité également d'enregistrer chaque composant dans un fichier qui lui est propre, puis de lire ce fichier pour le créer à chaque ouverture du Form, avec les instructions "WriteComponentResFile" et "ReadComponentResFile" qui utilisent les flux (TStream).
Mais si c'est pour sauvegarder uniquement la position, et qu'il y a beaucoup de composants créés, ça n'est sans doute pas la meilleure méthode.
Cependant, les flux restent intéressants à exploiter s'il y a beaucoup de composants à créer...
Salut

Il est très facile de connaitre la position d'objet dynamiquement créé

Exemple pour un objet image

Left:= TImage(FindComponent('image1')).Left;
Top:= TImage(FindComponent('image1')).Top;
Salut

Une petite question, les composants de ton formulaires tu les crées dynamiquement a chaque lancement de ton application ou ils sont codés ?
Messages postés
6
Date d'inscription
vendredi 5 juin 2009
Statut
Membre
Dernière intervention
16 février 2014

ils sont ajoutés dynamiquement
Messages postés
6
Date d'inscription
vendredi 5 juin 2009
Statut
Membre
Dernière intervention
16 février 2014

Bonsoir à tous,

Merci pour toutes vos réponses, j' ai effectivement créer un fichier pour stocker l'emplacement des composant. comme certains le suggère.
Mais la sauvegarde doit se faire une fois tous les composants en place. il me faut donc parcourir tous les composant de la fiche. je vais essayer un truc , mais si vous avez des idées je suis preneur

Encore merci
Messages postés
265
Date d'inscription
lundi 27 octobre 2003
Statut
Membre
Dernière intervention
19 juillet 2021
13
Salut,
Il y a pas mal de possibilités ini, txt, xml, rtti...
j'aurai une préférence pour les rtti et xml.
J'avais fais un bout de code pour exemple qui les utilisés, enregistrement dans exe ou un truc comme ca, mais il y a pas mal d'exemple sur ce sujet...
Mais pour pouvoir t'aider il nous faudrait le code pour savoir quel chemin tu as pris et les problématiques rencontrées, car tu restes très vague sur ce que tu as fais...
@+