Ver Mensaje Individual
  #1  
Antiguo 06-12-2007
Avatar de Greco
Greco Greco is offline
Miembro
 
Registrado: jul 2007
Ubicación: Chile
Posts: 97
Reputación: 19
Greco Va por buen camino
problema al registrar ubicacion de ventana...

Hola como estan,

Al programa que estoy haciendo lo quiero dar la posibilidad de recordar la posicion de la ventana principal para que cuando se vuelva a abrir /esta lo haga en la posicion que tenia cuando se cerro el programa anteriormente, para ellos estoy guardando la propiedad Form1.Left y Form1.Top.

Para guardar hago lo siguiente en el evento OnClose del form principal:
Código Delphi [-]
procedure TForm1.FormClose(Sender: TObject; var Action: TCloseAction);
var
  Reg: TRegistry;
begin
  //Guardamos en el registro de windows la ubicacion de la ventana
  Reg := TRegistry.Create;
  try
    Reg.RootKey := HKEY_CURRENT_USER;
    if Reg.OpenKey('\Software\abcde\', True) then
    begin
      Reg.WriteInteger('Left',Form1.Left);
      Reg.WriteInteger('Top',Form1.Top);
      Reg.CloseKey;
    end;
  finally
    Reg.Free;
    inherited;
  end;
end;

y para rescatar esos datos lo hago en el evento OnCreate:
Código Delphi [-]
procedure TForm1.FormCreate(Sender: TObject);
var
  Reg: TRegistry;
begin
  //Leemos del registro de windows la ubicacion de la ventana
  Reg := TRegistry.Create;
  try
    Reg.RootKey := HKEY_CURRENT_USER;
    if Reg.OpenKey('\Software\abcde\', True) then
    begin
      Form1.Left:=Reg.ReadInteger('Left');
      Form1.Top:=Reg.ReadInteger('Top');
      Reg.CloseKey;
    end;
  finally
    Reg.Free;
    inherited;
  end;
end;

Como fui probando de a poco, primero agregando el codigo que guarda los datos en el registro, probar, etc entonces cuando corría la aplicación me funcionaba bien por que los datos de posicion (left y top) ya estaban en el registro entonces solo se iba modificando, el problema ocurre cuando quiero correr la aplicacion por primera vez (por ejemplo en otro pc), al ejecutar el programa éste lee en el registro la posicion LEFT y TOP del Form1 pero como esta informacion aun no se crea me manda un error (FAILED TO GET DATA FOR 'LEFT') ya que no encuentra dichos datos.
Mi pregunta es, cual es la forma de tener algunos valores por defecto en caso de que la aplicacion se ejecute por primera vez, para las veces siguientes ya no ocurriría el problema por que el programa al cerrarse guarda la posicion actual.

Pense que podía ser algo parecido a como se hace con los .INI que se le especifica una valor en caso de que no haya nada pero no me funciona, talvez se hace de otra manera.

Espero algun comentario.

Saludos
__________________
Greco - Principiante
Responder Con Cita