Ver Mensaje Individual
  #9  
Antiguo 02-07-2008
Avatar de escafandra
[escafandra] escafandra is offline
Miembro Premium
 
Registrado: nov 2007
Posts: 2.197
Reputación: 20
escafandra Tiene un aura espectacularescafandra Tiene un aura espectacular
Bueno, apuntar una aclaración. Lo que tu quieres hacer requiere haber registrado previamente, de alguna forma, el tipo de archivo. luego, usar los parémetros de la línea de comandos, como apunta coso,

En Builder C++ sería algo así:

Código:
// Siendo LoadFile la función que abre el fichero
if(ParamCount()>0){
     LoadFile(ParamStr(1)); // Abre la cadena del primer parámetro pasado 
}
El Evento OnActivate puede resultar peligroso si se ejecuta por segunda ves desde que se abrió la aplicación. Para evitar que se te vuelva a abrir el archivo deberás detectar que sólo es una vez.

Usa una variable static de la función que al cambiar de valor te indica que ya no es la primera ejecución.

En algun caso puedes tener conflictos con ventanas que no se han creado y cuyo código no puede ejecutarse hasta que se existan visualmente. En este caso un truco es usar un TTimmer que se desactiva sólo (sólo ocurrirá una vez).

Mira este código. Cada vez que clickes en Form1 se ejecutará el evento OnActivate otra vez... Es un ejemplo que demuestra que no es un evento seguro a no ser que firtremos la primera vez que se ejecuta.

Código:
void __fastcall TForm1::FormActivate(TObject *Sender)
{
      static int n=0;
      Label1->Caption = IntToStr(n);
      n++;
      Form2->Show();
}
Con este otro puedes ver como un Timer puede ser la solución
Código:
void __fastcall TForm1::TimerCreateTimer(TObject *Sender)
{
   TimerCreate->Enabled = false;
   AfterCreate(); // Función que seguro se ejectua tras crear visualmente la ventana
}
Saludos.
Responder Con Cita