Fecha actual Mié Jun 26, 2024 11:46 am

Todos los horarios son UTC + 1 hora [ DST ]




Nuevo tema Responder al tema  [ 11 mensajes ] 
Autor Mensaje
NotaPublicado: Lun Sep 25, 2006 2:38 pm 

Registrado: Jue Jul 20, 2006 8:36 pm
Mensajes: 143
Ubicación: Bilbao
Hola Bruno:

He cargado el ejemplo y va bien, pero hay una cosa que no sale bien cuando cambio un parametro.
El Ejemplo esta hecho con el Form:window en wsNormal....
Si cambio el form:window a modo wsMinimized , al hacer dobleclick en la barra systray ,se come parte de pantalla de abajo del form, no se porque y el icono no aparece

lo que quiero hacer es que mi aplicacion arranque inicialmente en icono en la barra systray y si hago un doble click entonces que se abra el menu, pero no lo consigo hacer, sugerencias de lo que hago mal?

_________________
(C) Josu Udaondo...el fiera de clipper 5
Bilbao 2006


Arriba
 Perfil  
Responder citando  
 Asunto:
NotaPublicado: Dom Oct 01, 2006 6:21 pm 

Registrado: Dom Feb 12, 2006 3:28 pm
Mensajes: 54
Ironman,

si el icono no te aparece deduzco que es porque el archivo .Ico no es compatible. A mí me funciona perfectamente con iconos de 32x32 en color, pero sí he notado que a la hora de visualizar el icono puede tener algunas diferencias respecto al icono original.

Si minimizas la aplicación desde el formulario no creo que sea lo que buscas. Para ocultar la aplicación desde el inicio, usa form1:hide, funciona perfectamente aunque yo he tenido problemas cuando he querido hacerlo depender de una variable lógica que automatize el inicio del programa.


Arriba
 Perfil  
Responder citando  
 Asunto:
NotaPublicado: Lun Oct 02, 2006 10:05 am 
Site Admin
Avatar de Usuario

Registrado: Jue Oct 06, 2005 10:49 pm
Mensajes: 655
Ubicación: España - Salamanca
¿Podéis poner un ejemplo concreto?

_________________
Un saludo,
Bruno Cantero
www.c3compiler.com


Arriba
 Perfil  
Responder citando  
NotaPublicado: Mar Oct 03, 2006 3:30 pm 

Registrado: Dom Feb 12, 2006 3:28 pm
Mensajes: 54
Bruno e Ironmansp,

aquí os dejo el ejemplo que no funciona. Lo estoy implementando en otra aplicación y esta es la parte que falla.

Un saludo,
eb4bgr.


Adjuntos:
PRUEBA TTrayIcon.zip [229.68 KiB]
284 veces
Arriba
 Perfil  
Responder citando  
 Asunto:
NotaPublicado: Mar Oct 03, 2006 4:45 pm 
Site Admin
Avatar de Usuario

Registrado: Jue Oct 06, 2005 10:49 pm
Mensajes: 655
Ubicación: España - Salamanca
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

_________________
Un saludo,
Bruno Cantero
www.c3compiler.com


Arriba
 Perfil  
Responder citando  
 Asunto: ejemplo
NotaPublicado: Mar Oct 03, 2006 7:20 pm 

Registrado: Jue Jul 20, 2006 8:36 pm
Mensajes: 143
Ubicación: Bilbao
El ejemplo es el que viene en el compilador en la ultima revision de agosto 2006. Si en el form1, cambias wstate de wsnormal a wsminimized, se come parte del formulario al restaurar...
añado dos jpg, uno es con wsnormal y el otro es con wsminimized


Adjuntos:
con wsnormal.JPG [68.5 KiB]
280 veces
con wsnminimized.JPG [66.77 KiB]
268 veces

_________________
(C) Josu Udaondo...el fiera de clipper 5
Bilbao 2006
Arriba
 Perfil  
Responder citando  
 Asunto:
NotaPublicado: Mar Oct 03, 2006 7:25 pm 
Site Admin
Avatar de Usuario

Registrado: Jue Oct 06, 2005 10:49 pm
Mensajes: 655
Ubicación: España - Salamanca
Josu,

Eso que te pasa no es por el TTrayIcon, lo hace también sin él, lo voy a mirar.

_________________
Un saludo,
Bruno Cantero
www.c3compiler.com


Arriba
 Perfil  
Responder citando  
NotaPublicado: Mar Oct 03, 2006 7:44 pm 

Registrado: Jue Jul 20, 2006 8:36 pm
Mensajes: 143
Ubicación: Bilbao
En teoria, creo que esto deberia arrancar la aplicacion minimizada con el icono en la barra systray, pero no me sale


/* * Evento OnCreate. */
METHOD Form1OnCreate( oSender ) CLASS TForm1
Form1:IconoSysTray:Visible := .T.
Form1:IconoSysTray:Icon:Name := IDI_APPLICATION
Form1:IconoSysTray:Hint := TApplication():exename
TApplication():OnMinimize := { | oSender | MiOnMinimize(oSender) }
TApplication():OnRestore := { | oSender | MiOnRestore(oSender) }
TApplication():Hide()
return

Procedure MiOnMinimize( oSender )
OutPutDebug2("Paso por OnDeactivate() de TApplication")
Form1:IconoSysTray:Visible:= .T.
TApplication():Hide()
return

Procedure MiOnRestore(oSender)
OutPutDebug2("Paso por OnRestore() de TApplication")
Form1:IconoSysTray:Visible:= .F.
TApplication():Restore()
TApplication():Run()
return

_________________
(C) Josu Udaondo...el fiera de clipper 5
Bilbao 2006


Arriba
 Perfil  
Responder citando  
 Asunto:
NotaPublicado: Mar Oct 03, 2006 10:13 pm 

Registrado: Dom Feb 12, 2006 3:28 pm
Mensajes: 54
Bruno,

lo sé, siempre he preferido usar OnCreate a OnShow para definir variables, el ejemplo quedó así porque la última prueba la hize en OnShow.

Un saludo,
eb4bgr.


Arriba
 Perfil  
Responder citando  
 Asunto:
NotaPublicado: Mié Oct 04, 2006 9:57 am 
Site Admin
Avatar de Usuario

Registrado: Jue Oct 06, 2005 10:49 pm
Mensajes: 655
Ubicación: España - Salamanca
Alejandro,

No es cuestión de preferencias, es simplemente que OnCreate se lanza una vez y OnShow cada vez que se va a mostrar el formulario, por eso al intentar mostrarse lo ocultas por el código que has metido en OnShow y nunca se llega a ver.

_________________
Un saludo,
Bruno Cantero
www.c3compiler.com


Arriba
 Perfil  
Responder citando  
NotaPublicado: Mié Oct 04, 2006 9:22 pm 

Registrado: Jue Jul 20, 2006 8:36 pm
Mensajes: 143
Ubicación: Bilbao
Ya lo he resuelto...
Resulta que el create se lanza una vez, y aqui oculto la aplicacion , pero el show se lanza tambien una vez con la aplicacion en modo Hide, y lo que hace es pasar el formulario a pantalla. la unica forma de resolverlo es poner una variable y volver a minimizar la aplicacion en el show solo si es la rimera vez que se pasa...el codigo me queda asi, por si alguien lo quiere usar:

METHOD Form1OnShow( oSender ) CLASS TForm1
...
If Primeravez
Form1:IconoSysTray:Visible := .T.
TApplication():Minimize()
Else
Form1:IconoSysTray:Visible := .F.
Endif
Return

METHOD Form1OnCreate( oSender ) CLASS TForm1
Public Primeravez
Form1:IconoSysTray:Icon:Name := IDI_APPLICATION
Form1:IconoSysTray:Hint := TApplication():exename
TApplication():OnMinimize := { | oSender | MiOnMinimize(oSender) }
TApplication():OnRestore := { | oSender | MiOnRestore(oSender) }
Form1:IconoSysTray:Visible:= .T.
TApplication():Hide()
Primeravez := .T.
return

Procedure MiOnMinimize( oSender )
Form1:IconoSysTray:Visible:= .T.
TApplication():Hide()
return

Procedure MiOnRestore(oSender)
Form1:IconoSysTray:Visible:= .F.
TApplication():Restore()
TApplication():Run()
return

METHOD IconoSysTrayOnDblClick( oSender ) CLASS TForm1
Form1:IconoSystray:Visible := .F.
TApplication():Restore()
return

_________________
(C) Josu Udaondo...el fiera de clipper 5
Bilbao 2006


Arriba
 Perfil  
Responder citando  
Mostrar mensajes previos:  Ordenar por  
Nuevo tema Responder al tema  [ 11 mensajes ] 

Todos los horarios son UTC + 1 hora [ DST ]


No puede abrir nuevos temas en este Foro
No puede responder a temas en este Foro
No puede editar sus mensajes en este Foro
No puede borrar sus mensajes en este Foro
No puede enviar adjuntos en este Foro

Buscar:
Saltar a:  
cron