PDA

Ver la Versión Completa : Guardar Posición De La Forma Con Respecto A La Pantalla


gulder
12-03-2009, 12:59:42
Hola foro como andan espero que bien lo que yo quiero hacer es guardar la posición que el usuario coloca a la aplicación con respecto a la pantalla, lo pienso guardar en un archivo .ini eso lo se hacer lo que no se hacer es como al usuario mover la forma guardar esa posición y no se que propiedad colocarle al form en su propiedad Position espero que me ayan entendido mi pregunta gracias de anteano gulder-gan

dec
12-03-2009, 13:21:39
Hola,

Las propiedades que has de guardar son "Top" y "Left". Y, normalmente, no es preciso hacerlo cada vez que el usuario mueve el formulario, sino, cuando lo cierre. De este modo podrías aprovechar el evento "OnClose". Respecto de los archivos INI no diré que hay que trabajar con la clase "TIniFiles", de la unidad "IniFiles", porque, esto ya has dicho que lo sabes. ;)

Young
12-03-2009, 14:17:26
Hola, yo para eso utilizo el componente FormPlacement de las RxLib. La JVCL posee una paleta de componentes llamada Jv persistence en la cual existen varios componentes para guardar incluso propiedades de los formularios.

Espero te ayude.

-------------------------------------
Jedi Components WebInstall JCL (http://jvcl.sourceforge.net/websetup/jcl/JCLSetup.exe) - JVCL (http://jvcl.sourceforge.net/websetup/jvcl/JVCLSetup.exe)

gulder
12-03-2009, 15:20:32
Hola
Gracias a dec y Young solocionada con el siguiente codigo lo dejo de muestra saludes



unit Unit1;

interface

uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs,IniFiles;

type
TForm1 = class(TForm)
procedure FormCreate(Sender: TObject);
procedure FormClose(Sender: TObject; var Action: TCloseAction);
private
{ Private declarations }
public
{ Public declarations }
end;

var
Form1: TForm1;

dir:string;

implementation

{$R *.dfm}

procedure TForm1.FormCreate(Sender: TObject);
begin
dir := ExtractFilePath(ParamStr(0));

iniFile := TIniFile.Create(dir+'p.ini');
if FileExists(dir+'p.ini') then begin

form1.Height:= iniFile.ReadInteger('Interfaz', 'Heith_alto',0);
form1.Width:= iniFile.ReadInteger('Interfaz', 'Whith_ancho',0);
form1.Left:= iniFile.ReadInteger('Interfaz', 'Left_x',0);
form1.Top:= iniFile.ReadInteger('Interfaz', 'Top_y',0);

end else begin


iniFile.WriteInteger('Interfaz', 'Heith_alto',580);
iniFile.WriteInteger('Interfaz', 'Whith_ancho',800);
iniFile.WriteInteger('Interfaz', 'Left_x',140);
iniFile.WriteInteger('Interfaz', 'Top_y',80);

end;

end;

procedure TForm1.FormClose(Sender: TObject; var Action: TCloseAction);
begin

iniFile := TIniFile.Create(dir+'p.ini');
iniFile.WriteInteger('Interfaz', 'Heith_alto',form1.Height);
iniFile.WriteInteger('Interfaz', 'Whith_ancho',form1.Width);
iniFile.WriteInteger('Interfaz', 'Left_x',form1.Left);
iniFile.WriteInteger('Interfaz', 'Top_y',form1.Top);


end;

end.

arturom
12-03-2009, 16:32:57
Hola,
como consejo personal, deberias eliminar el fichero creado para no dejar sin recursos al sistema, usa la orden:
IniFile.Free
cuando termines de leer o escribir en el fichero ini.

Saludos