• Jueves 2 de Mayo de 2024, 23:49

Autor Tema:  Re: Minimizar la aplicacion  (Leído 5073 veces)

dmantil

  • Nuevo Miembro
  • *
  • Mensajes: 9
    • Ver Perfil
Re: Minimizar la aplicacion
« en: Lunes 26 de Mayo de 2003, 14:47 »
0
Deseo minimizar mi aplicacion!
Pero no de la manera convencional,
deseo que quede en la barra del sistema, junto a la hora!
Si alguien sabe gracias!

gmantil

  • Miembro MUY activo
  • ***
  • Mensajes: 121
    • Ver Perfil
Re: Minimizar la aplicacion
« Respuesta #1 en: Miércoles 28 de Mayo de 2003, 23:34 »
0
Hola dmantil:
Intenta colocar tu programa en el menú inicio en la carpeta inicio dentro de todos los usuarios si estás en NT/2000. Miraré en Windows 9x donde se hace y te cuento.

Ruta en W2k:
Documents and SettingsAll UsersMenú InicioProgramasInicio

No estoy seguro si se debe hacer otra cosa pero pienso que no. Me cuentas si funciona.

Saludos,
gmantil

dmantil

  • Nuevo Miembro
  • *
  • Mensajes: 9
    • Ver Perfil
Re: Minimizar la aplicacion
« Respuesta #2 en: Jueves 29 de Mayo de 2003, 14:54 »
0
Ya intente lo del menu inicio pero no funciona! Cuando guardo el acceso en esta carpeta lo que hace es que lo ejecuta en cuanto inicio el computador pero igualmente lo minimiza de la misma manera....
Gracias!

Sacarin

  • Nuevo Miembro
  • *
  • Mensajes: 16
    • Ver Perfil
Re: Minimizar la aplicacion
« Respuesta #3 en: Jueves 29 de Mayo de 2003, 20:55 »
0
Puedes descargar en http://jvcl.sourceforge.net/ trae un componente llamado Trayicon que es para lo que quieres hacer .

Son la mar Okeys , con fuentes y demos . ahh ... y Mozilla Public License (MPL),.

Suerte.

dmantil

  • Nuevo Miembro
  • *
  • Mensajes: 9
    • Ver Perfil
Re: Minimizar la aplicacion
« Respuesta #4 en: Lunes 2 de Junio de 2003, 17:04 »
0
Gracias Sacarin!
Ya he bajado los archivos aunque no los he probado aún!
Gracias de nuevo!

Leonel Antonio Feliz

  • Nuevo Miembro
  • *
  • Mensajes: 15
    • Ver Perfil
Re: Minimizar la aplicacion
« Respuesta #5 en: Lunes 1 de Septiembre de 2003, 17:17 »
0
(este Truco fue sacado de Trucomania Explorer) para que vean no me estoy dando fava con codigos de otros
---------------------------------------------------
Este truco es uno de los que más me piden por email.
Nunca he querido ponerlo, pues me parece una cosa que ya está bastante tratada por cientos y cientos de
componentes freeware, y es una de estas tareas que merece encapsularlas en un componente y olvidarse de
ella...
No obstante, debido a la insistencia (mas bien pesadez) y a que tenía un retal de código enviado (tambien con
bastante insistencia por su parte) por Lucas (martin@capaz.infonegocio.com) , que me he permitido la licencia de
modificar, aqui teneis este truco que me parece la manera más sencilla de afrontar esta tarea.
 
Objetivo:
Lograr hacer que nuestra aplicación, en lugar de minimizarse, se oculte, colocando un icono en la bandeja del
sistema (si, ahí abajo, junto al reloj de Windows), y claro, que una vez hecho esto, el icono reaccione a la
pulsación del boton derecho del ratón mostrando un menú para poder, por ejemplo, restaurar nuestra aplicación.
 

Vayamos por partes (Dijo el forense):

 
-Necesitaremos un PopUpMenu en nuestra form, que será el que sea invocado cuando pulsemos sobre el icono
de la bandeja del sistema, así que vete haciendote uno y lo llamas PopUpMenu1.
-Dentro de ese menú, pondremos una opcion llamada Abrir que será la que restaure la aplicación.
-Necesitarás añadir 'ShellApi' en el uses de tu form para que entienda bien la estructura que maneja el icono.
-Para colocar el icono, necesitamos usar una estructura de tipo TNotifyIconData, así que declarate una en el
private de tu form. En el ejemplo la he llamado IconData:
 
 
   private
    IconData : TNotifyIconData;
 
 
 
-Bien, ahora necesitamos hacer algún invento que nos permita detectar cuando es minimizada la form.
Usaremos la técnica del truco:
 
[102] - Ejecutar algo ANTES de que tu aplicacion sea minimizada
 
ya que nos viene de cine.
Se trata de capturar un mensaje, así que, ponemos la declaración correspondiente en el private de la form:
 
 
  private
    IconData : TNotifyIconData;
    procedure WMSysCommand(var Msg: TWMSysCommand); message WM_SYSCOMMAND;
 
 
 
y su correspondiente procedure en la parte implementation:
 
 
 
procedure TForm1.WMSysCommand(var Msg: TWMSysCommand);
begin
  if (Msg.CmdType = SC_MINIMIZE) then begin
    with IconData do
    begin
      cbSize := sizeof(IconData);
      Wnd := Handle;
      uID := 100;
      uFlags := NIF_MESSAGE + NIF_ICON + NIF_TIP;
      uCallbackMessage := WM_USER + 1;
      {Usamos de icono el mismo de la aplicacion}
      {We use the same icon as the application}
      hIcon := Application.Icon.Handle;
      {Como Hint del icono, el nombre de la aplicacion}
      {The name of te app for the hint of the icon}
      StrPCopy(szTip, Application.Title);
    end;
    {Ponemos el icono al lado del reloj}
    {Place the icon next to the clock}
    Shell_NotifyIcon(NIM_ADD, @IconData);
    {Ocultamos la Form...}
    {Hide the form...}
    Hide;
  end else DefaultHandler(Msg);
end;
 
 
 
Como ves, lo que hago dentro de la procedure del mensaje es rellenar la estructura del icono, para lo cual, uso el
icono y el nombre de la aplicacion, y luego lo coloco en la bandeja del sistema con la llamada al Api :
 
 
 Shell_NotifyIcon(NIM_ADD, @IconData);
 
 
 
-Hasta aqui hemos logrado que en lugar de minimizarse, nuestra aplicación se oculte y coloque su icono en la
bandeja del sistema. Ahora bien, necesitamos otro invento que nos permita atender dicho icono. Lo haremos
capturando otro mensaje: el WM_USER+1 que es el que le hemos dicho al icono que nos mande cuando el
usuario lo pinche.
Así que vamos allá, declaración en la private de la form:
 
 
procedure Espabila(var Msg : TMessage); message WM_USER+1;
 
 
y procedure correspondiente en la implementation:
 
 
procedure TForm1.Espabila(var Msg : TMessage);
{Aqui se recibe la pulsacion sobre el icono}
{Here we recieve the click on the icon}
var
  p : TPoint;
begin
  if Msg.lParam = WM_RBUTTONDOWN then begin
    SetForegroundWindow(Handle);
    GetCursorPos(p);
    PopupMenu1.Popup(p.x, p.y);
    PostMessage(Handle, WM_NULL, 0, 0);
  end;
end;
 
 
Como ves, en este mensaje lo que hacemos es dibujar el PopUpMenu1.
 
-Ahora vamos con la opcion Abrir del PopUpMenu1:
 
 
procedure TForm1.Abrir1Click(Sender: TObject);
begin
  {Mostramos de nuevo la form}
  {We show the form again}
  Form1.Show;
  ShowWindow(Application.Handle, SW_HIDE);
  {Y nos cargamos el icono de la system tray}
  {Destroy the systray icon}
  Shell_NotifyIcon(NIM_DELETE, @IconData);
  IconData.Wnd:=0;
end;
 
 
En ella, lo que hacemos es, aparte de mostrar la form de nuevo, cargarnos el icono.
-Como siempre, al final deshacemos lo hecho antes de salir... así que en el evento OnDestroy de la form
pondremos la siguiente linea:
 
 
procedure TForm1.FormDestroy(Sender: TObject);
begin
  {Quitamos el icono (en el caso de haberlo puesto antes...)}
  {Take off the icon (in case of had placed it before.....)}
  if IconData.Wnd <> 0 then Shell_NotifyIcon(NIM_DELETE, @IconData);
end;
 
 
El if distinto de cero tiene como misión el detectar si el icono fué o no puesto en la bandeja del sistema, para
lograr así quitarlo sólo en el caso de haberlo colocado antes.

(este Truco fue sacado de Trucomania Explorer) para que vean no me estoy dando fava con codigos de otros

barbara

  • Nuevo Miembro
  • *
  • Mensajes: 1
    • Ver Perfil
Minimizar la aplicacion
« Respuesta #6 en: Jueves 23 de Octubre de 2003, 14:34 »
0
Tengo problemas con los componentes jvcl, no logro instalarlos con delphi 6 y wind 95..
Algun comentario?????

BlackTigerX

  • Miembro activo
  • **
  • Mensajes: 92
    • Ver Perfil
Re: Minimizar la aplicacion
« Respuesta #7 en: Lunes 15 de Diciembre de 2003, 21:03 »
0
cambia de OS  :lol:
para programar, deperdido Windows 2000, W95 ya casi no tiene soporte
BlackTigerX