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
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
vBulletin v3.6.8, Derechos ©2000-2024, Jelsoft Enterprises Ltd.