Club Delphi  
    FTP   CCD     Buscar   Trucos   Trabajo   Foros

Retroceder   Foros Club Delphi > Otros temas > Trucos
Registrarse FAQ Miembros Calendario Guía de estilo Buscar Temas de Hoy Marcar Foros Como Leídos

Los mejores trucos

Respuesta
 
Herramientas Buscar en Tema Desplegado
  #1  
Antiguo 02-07-2006
Avatar de dec
dec dec is offline
Moderador
 
Registrado: dic 2004
Ubicación: Alcobendas, Madrid, España
Posts: 13.107
Poder: 34
dec Tiene un aura espectaculardec Tiene un aura espectacular
Menú en el icono de la barra de título de una aplicación

Para hacer este truco añadir un popup a un formulario.

No olvideis añadir ShellApi, sino os dará problema el TNotifyIconData Recordar añadir al popup alguna opción para terminar la aplicación y para poder ver el popup. En WndProc se pueden añadir diferentes mensajes del ratón, entre otros, como:

Código:
WM_LBUTTONDBLCLK
WM_LBUTTONDOWN
WM_LBUTTONUP
WM_RBUTTONDBLCLK
WM_RBUTTONDOWN
WM_RBUTTONUP
Código Delphi [-]
unit Unit1;

interface

uses
  Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs,
  Menus, ShellApi;

type
  TForm1 = class(TForm)
    PopupMenu1: TPopupMenu;
    Sonia1: TMenuItem;
    procedure FormCreate(Sender: TObject);
    procedure FormDestroy(Sender: TObject);
    procedure Sonia1Click(Sender: TObject);
  private
    MessageIcon: Cardinal;
    procedure RButtonUp;

  protected
    procedure WndProc(var Msg: TMessage); override;
  public
    procedure PonerIcono(operacion: word);
  end;

var
  Form1: TForm1;

implementation

{$R *.DFM}

procedure TForm1.PonerIcono (operacion: word);
var
  IconoInfo: TNotifyIconData;
begin
  with IconoInfo do
  begin
    cbSize := SizeOf(IconoInfo); //tamaño de la estructura
    uID := 0;   //identificador del icono en la barra de tareas
    uFlags := NIF_MESSAGE or NIF_ICON or NIF_TIP;
    Wnd := Self.Handle; //handle de la ventana recibirá la notificación
    uCallbackMessage := MessageIcon;  //Mensaje que se generará
    hIcon := Application.Icon.Handle; //handle  del icono
    szTip := 'Icono en la barra de tareas con menú';  //Mensaje que mostrará el icono
  end;
  Shell_NotifyIcon(operacion, @IconoInfo);
end;

procedure TForm1.WndProc(var Msg: TMessage);
begin
  //Si se ha generado nuestro mensaje
  if Msg.Msg = MessageIcon then
    case Msg.LParam of
      WM_RBUTTONUP: RButtonUp; //Si se ha pulsado el botón derecho del ratón
    end
  else
    inherited WndProc(Msg);
end;

procedure TForm1.RButtonUp;
var
  Pt: TPoint;
begin
  GetCursorPos(Pt); //Obtemos la posición del cursor
  SetForegroundWindow(Application.Handle);
  Application.ProcessMessages;
  PopupMenu1.Popup(Pt.X, Pt.Y); //Situamos el popup en el punto donde está el cursor
end;


procedure TForm1.FormCreate(Sender: TObject);
begin
  //Ocultamos el formulario para que se deba inicializar desde
  //la barra de tareas
  Application.ShowMainForm := False;
  ShowWindow(Application.Handle, SW_HIDE);
  //Creamos el mensaje que se generará cuando se trate nuestro icono
  MessageIcon := RegisterWindowMessage('Pon Icono');
  //Ponemos el icono en la barra de tareas
  PonerIcono (NIM_ADD);
end;

procedure TForm1.FormDestroy(Sender: TObject);
begin
  //Quitamos el icono de la barra de tareas
  PonerIcono (NIM_DELETE )  ;
end;

end.
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


La franja horaria es GMT +2. Ahora son las 20:26:51.


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