MÉMORISE SIMPLEMENT LA POSITION ET LA TAILLE DE VOS FENÊTRES

Messages postés
2349
Date d'inscription
dimanche 5 octobre 2003
Statut
Modérateur
Dernière intervention
18 novembre 2010
- - Dernière réponse :  ratatouille53 - 3 juin 2019 à 21:45
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/47735-memorise-simplement-la-position-et-la-taille-de-vos-fenetres

bonjour il manque le fichier ParametreFenetre.dmf
impossibe de tester !!
RURUInc
Messages postés
42
Date d'inscription
jeudi 21 février 2008
Statut
Membre
Dernière intervention
21 octobre 2008
-
Bonjour,

LODA je n'arrive pas à matérialiser ce que tu demandes.

Peux-tu où pouvez vous m'aider ?

Rappel de la demande de LODA :
- ....., je mettrais le nom du fichier ini en "dur" (ie: une var global) et je passerais en paramètre le nom de la section. Ce qui te permettrais de sauver plusieurs fenêtres sans te baser sur le nom. (Je crée mes fenêtre dynamiquement, ........ Après, tu peux toujours passer le nom en paramétrés... ou faire deux signatures de méthodes.

C'est faire les 2 signatures en même temps qui me pose problème.
RURUInc
Messages postés
42
Date d'inscription
jeudi 21 février 2008
Statut
Membre
Dernière intervention
21 octobre 2008
-
Tout a fait cirec, je ne remettais pas du tout en doute ton travail.
Effectivement comme un gros nigo j'avais copier coller direct et j'ai laissé se {$R *.dfm} mdr.

Merci.

Je continue pour la partie choix du nom des forms
cirec
Messages postés
3809
Date d'inscription
vendredi 23 juillet 2004
Statut
Modérateur
Dernière intervention
1 septembre 2019
32 -
oui il y a effectivement un problème ...
mais ce n'est en aucun cas dû à l'utilisation de mon code :p
ça ressemble plus à une erreur de ta part qu'autre chose ...

ParametreFenetre.DFM est un fichier inexistant et pour cause ParametreFenetre.PAS n'est pas une TForm !!!

Retire l'instruction {$R *.dfm} de l'unité "ParametreFenetre.PAS" et tout fonctionnera normalement
RURUInc
Messages postés
42
Date d'inscription
jeudi 21 février 2008
Statut
Membre
Dernière intervention
21 octobre 2008
-
J'ai fais quelque modif
1) Var Fichier_ini non public
2) Path du fichier avec le system de CIREC

Mais j'ai un probleme à la compilation il me fais bien mon exe qui marche bien. Mais j'ai quand même se message
ParametreFenetre.dfm : file no found
Bon je comprends le message, mais depuis que j'ai ajouté les UPath.pas et le .inc de cirec j'ai plus de fichier dfm. (je suis sur que vous connaissez ce genre de chose)
RURUInc
Messages postés
42
Date d'inscription
jeudi 21 février 2008
Statut
Membre
Dernière intervention
21 octobre 2008
-
Salut LODA :
- Je vais regarder l'utilitaire et je vais tentez de mis inspirez, c'est qu'on oubli trop peux NOTRE EXCELLENT WINDOWS VISTA.
- Je vais ajouter cette fonctionnalité Nom en dur ou choix du nom de la fenêtre.
- Si ta fenêtre est détruite mets la procédure d'écriture dans le ondestroy ?
- ok pour les dcu

- pour l'histoire de mes composants l'utilisateur n'a nul besoin d'entrée un l'intérieur, tout ce gere à la souris. Je suis entrain de faire un logiciel Planning (je sais qu'il y en à des tas, mais comme le mien AUCUN lolol) je fignole et j'arrive à l'impression maintenant.

Merci de tes commentaires.
RURUInc
Messages postés
42
Date d'inscription
jeudi 21 février 2008
Statut
Membre
Dernière intervention
21 octobre 2008
-
C'est claire sans la remarque de Cirec je n'aurai pas remarqué se bug. Le passage des paramètres par GetWindowPlacement fonction trés bien.

Merci.
cs_cantador
Messages postés
4716
Date d'inscription
dimanche 26 février 2006
Statut
Modérateur
Dernière intervention
27 mars 2018
9 -
@RURUInc :
la proposition d'API par cirec me semble plus adaptée.
RURUInc
Messages postés
42
Date d'inscription
jeudi 21 février 2008
Statut
Membre
Dernière intervention
21 octobre 2008
-
Mise à part notre différence :
Toi d'enregistre TOUT les composants d'une forme.
Si dans ma forme je créer dynamiquement des composants, cela peut devenir rapidement ingérable !! en plus si ses composants dynamiques doivent être détruit, là cela devient le gros bordel.

Pour le fichier ini il y aura largement de quoi enregistrer 1000 fenêtres étant donné que j'ai que 4 variable par clé. Et j'ai rarement vu des softs qui ont ce nombre de fenetre!!!

Pour le coter bug, il est facile d'utiliser la base de registre si tu préfère ou même un fichier xxxxxx.ini.txt
Mais au moins le Ini ou ini.txt tu peux l'ouvrir et taper en dur, si besoin.

Par rapport au titre de ma proposition :
[MÉMORISE SIMPLEMENT LA POSITION ET LA TAILLE DE VOS FENÊTRES]
Je crois que cela fonction non ?
je pense pas avoir écris
[enregistrement de tous les composants d'une fiche]

Pour Terminé :
J'aime proposé des astuces qui sont compréhensible pour tous et pas des propositions TOUT english où il te faut 3 jours pour un débutant pour comprendre tel ou tel fonction. C'est mon cas... lol

Finalement, j'ai avancé au fur et à mesure de vos remarques qui restaient dans l'esprit du titre.

Je te remercie beaucoup de tes commentaires.
Francky23012301
Messages postés
411
Date d'inscription
samedi 6 août 2005
Statut
Membre
Dernière intervention
11 février 2016
1 -
Désolé mais je ne suis pas d'accord avec toi pour différentes raisons

1)Un fichier Ini est limité à 64 Ko ce qui va te poser probleme.

2)Ton code est long alors que le mien est court : Donc tu te risques à plus de problemes, plus de beug.

3)Mon code est plus optimisé et je suis sur qu'en définitif l'utilisation des flux est plus rapide que l'écriture/lecture dans un fichier Ini.

4)La méthode que j'ai cité ne te limite pas uniquement à quelques propriétés : les couleurs, la visibilité, le alphablend ect ect sont pris en compte.

Enfin à toi de voir mais pour moi utiliser un fichier Ini pour enregistrer les parametres d'un composant, n'est pas la méthode la plus efficace
cs_cantador
Messages postés
4716
Date d'inscription
dimanche 26 février 2006
Statut
Modérateur
Dernière intervention
27 mars 2018
9 -
L'utilisation de GetWindowPlacement était obligatoire car sinon lorsqu'on agrandit la fenêtre avec le 'Agrandir' cela ne fonctionais plus lol.

Voilà enfin la bonne explication de ce source..
RURUInc
Messages postés
42
Date d'inscription
jeudi 21 février 2008
Statut
Membre
Dernière intervention
21 octobre 2008
-
... (suite)
L'idée principal, c'était de garder uniquement la position de mes fenêtre car dans mon source que je suis entrain de faire, j'en avais pas mal.
Et puis encore une fois j'ai une formprincipal avec au minimum 200 PAnel au maximum 1500.
Je vais également ajouter l'enregistrement des colonnes (taille etc..) d'un DBGrid, car j'en est également besoin.

L'utilisation de GetWindowPlacement était obligatoire car sinon lorsqu'on agrandit la fenêtre avec le 'Agrandir' cela ne fonctionais plus lol.

Et puis grace à vos commentaires j'avance.
RURUInc
Messages postés
42
Date d'inscription
jeudi 21 février 2008
Statut
Membre
Dernière intervention
21 octobre 2008
-
Bonjour tout le monde.
Franky si ta form comporte 1500 composant je te raconte pas la lenteur à un moment ? non ?
Moi personnelement j'ai ma formprincipal qui peut comporter 1300 Panel.
Bref.

J'ai Amélioré mon progr pour faire appel au WindowsPlacement beaucoup plus précis si les fiche ne sont pas wsnormal.

Qu'en pensee vous ?
Francky23012301
Messages postés
411
Date d'inscription
samedi 6 août 2005
Statut
Membre
Dernière intervention
11 février 2016
1 -
Pas de blem Julio : il pensait bien faire, c'est plus maladroit qu'autre chose .... ca arrive à tout le monde.

Si on veut enregistrer les caractéristiques d'une form, voila une procédure plus simple et plus générale :

Procedure Save_FormParam(AFile:String;AForm:TForm);
Var
FS:TFileStream;
Begin
FS:=TFileStream.Create(AFile,fmCreate);
Try
FS.WriteComponent(AForm);
Finally
FS.Free;
End;
End;

{>>Procédure pour ouvrir un Mix dans un fichier Mix}
Procedure Open_FormParam(AFile:String;AForm:TForm);
Var
FS:TFileStream;
Begin
//On crée FS
FS:=TFileStream.Create(AFile,fmOpenRead);
Try
FS.ReadComponent(AForm);
AForm.Refresh;
Finally
FS.Free;
End;
End;
nethacker
Messages postés
293
Date d'inscription
mardi 2 mai 2006
Statut
Membre
Dernière intervention
12 octobre 2011
-
Très utile ! pour des gestionnaires de fenêtres !
JulioDelphi
Messages postés
2349
Date d'inscription
dimanche 5 octobre 2003
Statut
Modérateur
Dernière intervention
18 novembre 2010
12 -
Oui, bon ça vole pas très haut, je ne dis pas que la durée de vie de la source sera longue non plus, mais là, si nos commentaires peuvent l'aider un minimum, ça sera ça de pris pour lui :]
Francky23012301
Messages postés
411
Date d'inscription
samedi 6 août 2005
Statut
Membre
Dernière intervention
11 février 2016
1 -
Sans vouloir faire mon enquiquineur, quel est l'intéret de ce source ? Tu ne fais qu'enregistrer dans un fichier ini la valeur d'un integer (Form.Width par exemple).

Ce que tu fais avec une form on pourrait le faire avec un Label, un Edit, un Treeview enfin avec tout les composants qui puissent exister.

Meme si ca part d'un bon sentiment de ta part, a mon gout ca pollue plus qu'autre chose (désolé je veux pas etre dur mais bon). Meme en snippet ton source est trop limite pour etre publiable.
RURUInc
Messages postés
42
Date d'inscription
jeudi 21 février 2008
Statut
Membre
Dernière intervention
21 octobre 2008
-
Merci j'ai corrigé.
JulioDelphi
Messages postés
2349
Date d'inscription
dimanche 5 octobre 2003
Statut
Modérateur
Dernière intervention
18 novembre 2010
12 -
Les TRY sont trop haut :/

.create
try
...
except
.free
RURUInc
Messages postés
42
Date d'inscription
jeudi 21 février 2008
Statut
Membre
Dernière intervention
21 octobre 2008
-
Julio Delphi :
J'ai ajouté ta remarque

Windob :
Je m'étais planté de version. Merci

Cirec :
Je vais regardé les Get et Set de windows, que je connais pas.
J'ai vidé les fichiers.
J'ai renommé le projet.
Merci
cirec
Messages postés
3809
Date d'inscription
vendredi 23 juillet 2004
Statut
Modérateur
Dernière intervention
1 septembre 2019
32 -
Salut,

effectivement beaucoup trop "simpliste" ...

regarde du coté de Get/SetWindowPlacement ... avec cette API tu tu récupèreras la taille et la positions mais aussi d'autres éléments comme l'état (Maximized, Minimized, Normal) ...

Et fais un peut de ménage dans ton Zip les fichiers *.ddp, *. dcu et le Desktop.ini peuvent êtres supprimés sans soucis ... et dans ton cas tu peux aussi supprimer le *.cfg et le *.dof qui ne sont pas utile à ce projet ;)

et profites en pour renommer tes composants et tes fiches "Form" et donne un nom à ton projet ...
cs_windob
Messages postés
225
Date d'inscription
dimanche 19 octobre 2003
Statut
Membre
Dernière intervention
25 août 2008
-
En plus, le code affiché doit-etre une version obsolete ou alors non terminée puisque tes méthodes sont censées prendre comme 2e argument, une String de nom du fichier ini.

Ici, tu définis encore le nom de fichier en dur dans lec ode.
JulioDelphi
Messages postés
2349
Date d'inscription
dimanche 5 octobre 2003
Statut
Modérateur
Dernière intervention
18 novembre 2010
12 -
Salut,
Un peu trop "simplement" !
Essaie avec des TRY/EXCEPT/FINALLY et utilise le mot clé WITH pour Fenetre et Fichier_ini.