Alejandro,
He visto el ejemplo y te puedo decir tres cosas:
1- Has descubierto un error (que acabo de arreglar
) en la propiedad
CmdLine de la clase
TApplication, si le pasas como parámetros cadenas que empiecen por el caracter
/ los ignora, por eso no te funciona el parámetro
/h que usas en el ejemplo.
2- Usas como icono un archivo ICO, al hacer esto obligas a arrancar la aplicación desde el mismo directorio donde esté el archivo ICO, si lo haces desde otro directorio, aunque le indiques toda la ruta no te cargará el icono ya que no lo encontrará, te recomiendo que lo uses como recurso, irá incrustado en el ejecutable y siempre te saldrá el icono.
3- Cometes un error grave, calculas la variable lshow en función del parámetro en el evento
OnShow del formulario. Me explico, si cambias la condición para que en vez de buscar le parámetro
/h busque
h, por ejemplo, a aplicación arrancará oculta, pero al hacer click en el icono se intentará mostrar el diálogo, se lanzará de nuevo el evento
OnShow, se asignará de nuevo la variable
lshow a
.F. (porque lo asignas tú de nuevo) y no se mostrará el diálogo. Tienes que asignar la variable en el evento
OnCreate, algo así:
Código:
/*
* Evento OnCreate.
*/
METHOD Form1OnCreate( oSender ) CLASS TForm1
public ccmd := application:CmdLine
public lshow := .T.
startc3()
if len(ccmd) > 0
if xat(ccmd[1], "/h", 0) > 0
lshow := .F.
endif
endif
return
/*
* Evento OnShow.
*/
METHOD Form1OnShow( oSender ) CLASS TForm1
if lshow <> .t.
form1:hide()
endif
return