Mémorise simplement la position et la taille de vos fenêtres

Description

Utilisation simple :
- mettre ParametreFenetre.pas dans votre projet

Dans le Show de la form
procedure TForm3.formCreate(Sender: TObject);
begin
LirePositionFenetre(Self, 'Setting');
end;

Dans le Close de la form
procedure TForm3.FormClose(Sender: TObject; var Action: TCloseAction);
begin
EcrirePositionFenetre(Self, 'Setting');
end;

Source / Exemple :


unit ParametreFenetre;
(*************************************************
Author: BuzzLeclaire, France.

E-mail:
rainconnu@free.fr

Testé avec 7.

Cet unit peut librement être utilisé ou distribué.

25.08.2008

                                                                                                      • )
interface uses Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs, StdCtrls, ExtCtrls, IniFiles; Procedure LirePositionFenetre(Fenetre: TForm; NomFichier: String); Procedure EcrirePositionFenetre(Fenetre: TForm; NomFichier: String); implementation {$R *.DFM} Uses UPath; // sur une idée de Cirec Patch par CSIDL Const CSIDL_TEMPLATES = $15; // pour ne pas déclarer uses ShlObj Procedure LirePositionFenetre(Fenetre: TForm; NomFichier: String); Var Fichier_Ini: TIniFile; Begin // Path[CISDL_TEMPLATES donne le chemin MesDoc de l'utilisateur courant // On créer ou on lit le fichier Fichier_Ini := TIniFile.Create(Path[CSIDL_TEMPLATES] + NomFichier + '.ini'); Try if Fichier_Ini.SectionExists(Fenetre.Name) then begin // On récupère les données si il y en à Fenetre.Left := Fichier_Ini.ReadInteger(Fenetre.Name, 'Left', 0); Fenetre.Top := Fichier_Ini.ReadInteger(Fenetre.Name, 'Top', 0); // si la fenêtre n'ai pas taillable Height, Width reste inchangé (sauf si on touche directement le ini Fenetre.Height := Fichier_Ini.ReadInteger(Fenetre.Name, 'Height', 0); Fenetre.Width := Fichier_Ini.ReadInteger(Fenetre.Name, 'Width', 0); end; Finally Fichier_Ini.Free; end; end; Procedure EcrirePositionFenetre(Fenetre: TForm; NomFichier: String); Var Fichier_Ini: TIniFile; WindowPlacement : TWindowPlacement; Begin WindowPlacement.length:=SizeOf(WindowPlacement); WindowPlacement.flags := 0; WindowPlacement.showCmd := 1; // récupération de l'emplacement ou se situe la fiche lorsque WindowState est en wsNormal GetWindowPlacement(Fenetre.Handle,@WindowPlacement); With Fichier_ini do Begin // Path[CISDL_TEMPLATES donne le chemin MesDoc de l'utilisateur courant // On créer ou on lit le fichier Fichier_Ini := TIniFile.Create(Path[CSIDL_TEMPLATES] + NomFichier + '.ini'); Try // On alimente la section WriteInteger(Fenetre.Name, 'Left', WindowPlacement.rcNormalPosition.Left); WriteInteger(Fenetre.Name, 'Top', WindowPlacement.rcNormalPosition.Top); WriteInteger(Fenetre.Name, 'Height', WindowPlacement.rcNormalPosition.Bottom - WindowPlacement.rcNormalPosition.Top); WriteInteger(Fenetre.Name, 'Width', WindowPlacement.rcNormalPosition.Right - WindowPlacement.rcNormalPosition.Left); Finally Fichier_Ini.Free; end; end; end; end.

Conclusion :


GetWindowPlacement

Codes Sources

A voir également

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.