Club Delphi  
    Paypal   FTP   CCD     Buscar   Trucos   Trabajo   Foros

Retroceder   Foros Club Delphi > Otros entornos y lenguajes > C++ Builder
Registrarse FAQ Miembros Calendario Guía de estilo Buscar Temas de Hoy Marcar Foros Como Leídos

Respuesta
 
Herramientas Buscar en Tema Desplegado
  #1  
Antiguo 28-10-2014
Avatar de ecfisa
ecfisa ecfisa is offline
Moderador
 
Registrado: dic 2005
Ubicación: Tres Arroyos, Argentina
Posts: 10.508
Poder: 38
ecfisa is a splendid one to beholdecfisa is a splendid one to beholdecfisa is a splendid one to beholdecfisa is a splendid one to beholdecfisa is a splendid one to beholdecfisa is a splendid one to beholdecfisa is a splendid one to behold
Cita:
Empezado por aguml Ver Mensaje
Por cierto ecfisa, lo que me indicas no está del todo bien ya que si o si ejecutas la accion por defecto y si yo lo oculto a la icontray y luego ejecuto la accion por defecto es como si no hubiera hecho nada ya que me aparece minimizado y no es lo que deseo. Asi si va:
Es cierto, la verdad es que me interesaba destacar la forma correcta de la declaración y escribí el ejemplo sobre el mensaje sin haberlo probado. Se me escapó ese detalle...

Saludos
__________________
Daniel Didriksen

Guía de estilo - Uso de las etiquetas - La otra guía de estilo ....
Responder Con Cita
  #2  
Antiguo 28-10-2014
Avatar de escafandra
[escafandra] escafandra is offline
Miembro Premium
 
Registrado: nov 2007
Posts: 2.211
Poder: 22
escafandra Tiene un aura espectacularescafandra Tiene un aura espectacular
He hecho algún pequeño cambio en el componente y ya funciona como esperaba aguml, no hay nuevas propiedades.

Para evitar el cierre de la app y llevarla en segundo plano al Systray sólo tenemos que actuar en el formulario de la siguiente manera:

Código PHP:
void __fastcall TForm1::FormCloseQuery(TObject *Senderbool &CanClose)
{
  
SysTrayIcon1->Visible true;
  
SysTrayIcon1->Hide true;
  
SysTrayIcon1->Minimize();
  
CanClose false;

El enlace de la actualización de TSysTrayIcon lo tienes aquí.

PD/ Ya no es necesario el uso de OnWMSysCommand

Saludos.

Última edición por escafandra fecha: 28-10-2014 a las 20:00:45. Razón: Aclaración OnWMSysCommand
Responder Con Cita
  #3  
Antiguo 28-10-2014
Avatar de aguml
aguml aguml is offline
Miembro
 
Registrado: may 2013
Posts: 885
Poder: 14
aguml Va por buen camino
me pierdo un poco porque no se donde está formclosequery y que es eso de canclose. ¿Es un evento de TForm de los que vienen por defecto? Y si hago eso y luego coloco un boton para cerrar el form ¿Pongo close() y ya está? ¿O tengo que cambiar antes el valor de canclose? ¿Y si le doy a minimizar ¿En que evento coloco el codigo para que minimice a las systray? Una cosa, ¿No hubiese sido mas sencillo crear por ejemplo la propiedad buttonbarminimize que pueda valer por ejemplo buttonclose y buttonminimize y otra propiedad que por ejemplo llamemos sysminimize de tipo bool y que donde haces en tu componente el hook a esos mensajes de la sysbar, si tenemos a true esa propiedad, dependiendo del valor de la otra propiedad usemos un boton o el otro para minimizarlo a la systray? Es una sugerencia, el maestro eres tu :-P
Responder Con Cita
  #4  
Antiguo 28-10-2014
Avatar de escafandra
[escafandra] escafandra is offline
Miembro Premium
 
Registrado: nov 2007
Posts: 2.211
Poder: 22
escafandra Tiene un aura espectacularescafandra Tiene un aura espectacular
OnCloseQuery es un evento del formulario que se activa justo antes que OnClose. Si CanClose toma el valor true el formulario se cierre, en caso contrario no.


Saludos.
Responder Con Cita
  #5  
Antiguo 28-10-2014
Avatar de escafandra
[escafandra] escafandra is offline
Miembro Premium
 
Registrado: nov 2007
Posts: 2.211
Poder: 22
escafandra Tiene un aura espectacularescafandra Tiene un aura espectacular
Cita:
Empezado por aguml Ver Mensaje
¿No hubiese sido mas sencillo crear por ejemplo la propiedad buttonbarminimize que pueda valer por ejemplo buttonclose y buttonminimize y otra propiedad que por ejemplo llamemos sysminimize de tipo bool y que donde haces en tu componente el hook a esos mensajes de la sysbar, si tenemos a true esa propiedad, dependiendo del valor de la otra propiedad usemos un boton o el otro para minimizarlo a la systray?
Si se sobrecarga el componente de propiedades y eventos que puede manejar el Form, deja de ser intuitivo y liamos al personal. El evento OnCloseQuery está diseñado para el control de la salida o no del formulario y es común usarlo. Con las propiedades que tiene TSysTrayIcon se consigue hacer casi todo lo que un desarrollador pretende de él.

Prueba la nueva versión, ya no te hace falta el uso de OnWMSysCommand, lo hace el mismo componente. Pero tu programas lo que se hará en OnMinimize o en OnRestore, que para eso implementé esos eventos del componente.


Saludos.
Responder Con Cita
  #6  
Antiguo 29-10-2014
Avatar de aguml
aguml aguml is offline
Miembro
 
Registrado: may 2013
Posts: 885
Poder: 14
aguml Va por buen camino
ok, lo pruebo y comento.
Responder Con Cita
  #7  
Antiguo 29-10-2014
Avatar de aguml
aguml aguml is offline
Miembro
 
Registrado: may 2013
Posts: 885
Poder: 14
aguml Va por buen camino
Amigo, lo he probado y no funciona exactamente como esperaba.
Te explico, lo ideal es poder elegir entre si se debe ocultar al cerrar o solo cerrarse. Eso ya está solucionado en tu componente.
El otro punto es si se debe ocultar al minimizar, o simplemente minimizarse. Eso sin el hook no soy capaz de conseguirlo. Es mas, DefaultHandler no funciona como debiera ya que lo minimiza pero no a la barra de tareas sino que lo minimiza en el lado izquierdo de la pantalla y sigues viendo la barra superior del form con los tres botones mientras que con TForm:ispatch(&Msg) se minimiza a la barra de tareas.

He modificado el proyecto que subí anteriormente para hacer pruebas y lo adjunto para que veas lo que digo. En este sigo teniendo la funcion que me dices que no hace falta para que veas que funciona e intentes hacerlo funcionar sin ella de igual manera.

Link: https://mega.co.nz/#!81cwEYrb!zkHzVP...GFkxV-DzgWuzT8

A ver si puedes verlo y me cuentas, que a lo mejor se puede sin esa funcion y soy yo el que no ve como jejeje.
Responder Con Cita
  #8  
Antiguo 31-10-2014
Avatar de escafandra
[escafandra] escafandra is offline
Miembro Premium
 
Registrado: nov 2007
Posts: 2.211
Poder: 22
escafandra Tiene un aura espectacularescafandra Tiene un aura espectacular
He visto lo que dices y he dado unas vueltas al control TSysTrayIcon tenía un bug en la última actualización. Descarga la última versión.

Debes cambiar tu código de la siguiente forma:

En Main.h añade:
Código PHP:
private:
   
bool SyStrayCanClose
En el código Main.cpp eliminas OnWMSysCommand y su declaración, además modificas lo siguiente:
Código PHP:
void __fastcall TForm1::SysTrayIcon1Restore(TObject *Sender)
{
   
SysTrayIcon1->Visible false;
   
SysTrayIcon1->Hide false;
}
//---------------------------------------------------------------------------

void __fastcall TForm1::SysTrayIcon1Minimize(TObject *Sender)
{
   
bool SysTray CheckBoxMinToSysTray->Checked && ComboBox1->ItemIndex >= 1;
   
SysTray |= !SyStrayCanClose;
   
SyStrayCanClose true;
   
SysTrayIcon1->Visible SysTray;
   
SysTrayIcon1->Hide SysTray;
   if(
SysTrayIcon1->Animate == true)
      
SysTrayIcon1->ShowBalloon("Buscando el serial","Estoy buscando el serial, por favor espere a que termine.");
   else
      
SysTrayIcon1->ShowBalloon("Sin actividad","Ahora mismo no estoy realizando ninguna busqueda.\nPermanezco aquí esperando a que me pongas a currar.");
}
//---------------------------------------------------------------------------

void __fastcall TForm1::FormCloseQuery(TObject *Senderbool &CanClose)
{
   if(
CloseApp){
      
CanClose CloseApp;
   }else{
      
CanClose = !(CheckBoxMinToSysTray->Checked && ComboBox1->ItemIndex != 1);
      
SyStrayCanClose CanClose;
      
SysTrayIcon1->Minimize();
   }

Saludos.
Responder Con Cita
Respuesta


Herramientas Buscar en Tema
Buscar en Tema:

Búsqueda Avanzada
Desplegado

Normas de Publicación
no Puedes crear nuevos temas
no Puedes responder a temas
no Puedes adjuntar archivos
no Puedes editar tus mensajes

El código vB está habilitado
Las caritas están habilitado
Código [IMG] está habilitado
Código HTML está deshabilitado
Saltar a Foro

Temas Similares
Tema Autor Foro Respuestas Último mensaje
TrayIcon con BallonHint Neeruu Varios 1 13-03-2013 13:37:25
Click en minimizar ventana y minimizar aplicacion dmassive Varios 5 16-02-2009 17:01:16
Trayicon en D7 Dado de baja Varios 4 27-12-2008 15:59:36
Trayicon mjjj Varios 2 21-09-2007 00:35:16
Problemas con TRAYICON!! marceloalegre Varios 3 07-06-2005 17:49:07


La franja horaria es GMT +2. Ahora son las 07:53:15.


Powered by vBulletin® Version 3.6.8
Copyright ©2000 - 2026, Jelsoft Enterprises Ltd.
Traducción al castellano por el equipo de moderadores del Club Delphi
Copyright 1996-2007 Club Delphi