La Red de Conocimientos Pedagógicos - Currículum vitae - minimización de Delphi

minimización de Delphi

Cuando hagas clic en minimizar, oculta la ventana directamente y usa el siguiente código para implementarla:

procedimiento WMSysCommand(var Mensaje: TWMSysCommand);message WM_SYSCOMMAND;//Respuesta al WM_SYSCOMMAND mensaje, cuando el mínimo Ocultar al cambiar

procedimiento TYMessageMainForm.WMSysCommand(var Message: TWMSysCommand);

begin

if (Message.CmdType and $FFF0 = SC_MINIMIZE) o ( Message.CmdType y $FFF0 = SC_CLOSE) luego

comenzar //Tratar la minimización como ocultación

YMessageMainForm.Hide;

ShowWindow(Application. Handle, SW_HIDE);

end else Inherited;//Llamar al procesamiento de la clase superior

end;

Coloque un gráfico en la barra del sistema y deje haga clic con el mouse o haga doble clic, haga clic derecho para implementar ciertas funciones, use el siguiente código para lograrlo:

{$WARN SYMBOL_DEPRECated OFF}

unit TrayIcon;

interfaz

usa

SysUtils, Windows, mensajes, clases, gráficos, controles, ShellAPI, formularios, menús;

const WM_TOOLTRAYICON = WM_USER+ 1;

WM_RESETTOOLTIP = WM_USER+2;

tipo

TTrayIcon = clase(TComponent)

privado

{ Variables de campo }

IconData: TNOTIFYICONDATA;

fIcon : TIcon;

fToolTip : String;

fWindowHandle : HWND;

fActive: booleano;

fShowDesigning: booleano;

{ Eventos }

fOnClick: TNotifyEvent;

fOnDblClick : TNotifyEvent;

fOnRightClick : TMouseEvent;

fPopupMenu : TPopupMenu;

función AddIcon : booleano;

función ModifyIcon : booleano;

función DeleteIcon: booleano;

procedimiento SetActive(Valor: booleano);

procedimiento SetShowDesigning(Valor: booleano);

procedimiento

ure SetIcon(Valor: TIcon);

procedimiento SetToolTip(Valor: Cadena);

procedimiento WndProc(var msg: TMessage);

procedimiento FillDataStructure;

procedimiento DoRightClick( Remitente: TObject );

protegido

público

constructor create(aOwner: TComponent override;

destructor destruir; anular;

publicado

propiedad Activa: lectura booleana fActive escritura SetActive;

propiedad ShowDesigning: lectura booleana fShowDesigning escritura SetShowDesigning;

Icono de propiedad: TIcon lee fIcon escribe SetIcon;

propiedad ToolTip: cadena lee fTooltip escribe SetToolTip;

propiedad OnClick: TNotifyEvent lee FOnClick escribe FOnClick;

propiedad OnDblClick : TNotifyEvent lee FOnDblClick escribe FOnDblClick;

propiedad OnRightClick : TMouseEvent lee FOnRightClick escribe FonRightClick;

propiedad PopupMenu : TPopupMenu lee fPopupMenu escribe fPopupMenu;

fin;

procedimiento Registro;

implementación

{$R TrayIcon.res}

procedimiento TTrayIcon.SetActive(Valor: booleano);

comenzar

si valor <> fActive entonces comenzar

fActive := Valor;

si no (csdesigning en ComponentState ) luego comienza

si Valor entonces comienza

AddIcon;

finaliza si no comienza

DeleteIcon;

finaliza ;

fin;

fin;

fin;

procedimiento TTrayIcon.SetShowDesigning(Valor: booleano);

comenzar

si csdesigning en ComponentState entonces comenzar

si valor <> fShowDesigning entonces comenzar

fShowDesigning := Valor;

si Valor entonces comenzar

AgregarIcon;

finalizar más comenzar

EliminarIcon;

finalizar;

finalizar;

fin;

fin;

procedimiento TTrayIcon.SetIcon(Valor: Ticon);

comenzar

si Valor < > fIcon luego

comenzar

fIcon.Assign(valor);

ModificarIcon;

finalizar;

end;

procedure TTrayIcon.SetToolTip(Value : string);

begin

// Esta rutina SIEMPRE restablece el valor del campo y recarga el

// icono. Esto es para que la información sobre herramientas se pueda dejar en blanco cuando el componente // se carga por primera vez. Si esto se cambia, el icono estará en blanco en

// la bandeja cuando no se especifica información sobre herramientas.

si longitud (Valor) > 62 entonces

Valor := copiar(Valor,1,62);

fToolTip := valor;

ModifyIcon;

end;

constructor TTrayIcon.create(aOwner: Tcomponent);

begin

heredado create(aOwner);

FWindowHandle := AllocateHWnd( WndProc );

FIcon := TIcon.Create;

end;

destructor TTrayIcon.destroy;

comenzar

if (not (csDesigning in ComponentState) y fActive)

o ((csDesigning in ComponentState) y fShowDesigning) luego

DeleteIcon;

FIcon.Free;

DeAllocateHWnd( FWindowHandle );

heredado destruir;

fin;

procedimiento TTrayIcon.FillDataStructure;

comenzar

con IconData comenzar

cbSize := sizeof(TNOTIFYICONDATA);

wnd := FWindowHandle;

uID := 0; // no se pasa con el mensaje, así que hágalo 0

uFlags : = NIF_MESSAGE + NIF_ICON + NIF_TIP;

hIcon := fIcon.Handle;

StrPCopy(szTip,fToolTip);

uCallbackMessage := WM_TOOLTRAYICON;

fin;

fin;

función TTrayIcon.AddIcon: booleano;

comienzo

FillDataStructure;

resultado := Shell_NotifyIcon(NIM_ADD,@IconData);

// Por alguna razón, si no hay información sobre herramientas configurada, entonces el icono

// no t mostrar. Esto soluciona eso.

if fToolTip = '' entonces

PostMessage( fWindowHandle, WM_RESETTOOLTIP,0,0 );

end;

función TTrayIcon.ModifyIcon: booleano;

comenzar

FillDataStructure;

si fActive entonces

resultado:= Shell_NotifyIcon( NIM_MODIFY,@IconData)

else

resultado:= Verdadero;

fin;

procedimiento TTrayIcon.DoRightClick( Remitente: TObject ) ;

var MouseCo: Tpoint;

comenzar

GetCursorPos(MouseCo);

si está asignado (fPopupMenu), luego comenzar

SetForegroundWindow( Application.Handle );

Application.ProcessMessages;

fPopupmenu.Popup( Mouseco.X, Mouseco.Y );

fin ;

si está asignado (FOnRightClick), entonces

comienza

FOnRightClick(self,mbRight,[],MouseCo.x,MouseC

o.y);

fin;

fin;

función TTrayIcon.DeleteIcon: booleano;

comenzar

resultado := Shell_NotifyIcon(NIM_DELETE,@IconData);

fin;

procedimiento TTrayIcon.WndProc(var msg: TMessage);

comenzar

con msg do

si (msg = WM_RESETTOOLTIP) entonces

SetToolTip( fToolTip )

de lo contrario si (msg = WM_TOOLTRAYICON) entonces comience

caso lParam de

WM_LBUTTONDBLCLK: si está asignado (FOnDblClick), entonces FOnDblClick(self);

WM_LBUTTONUP: si está asignado (FOnDblClick), entonces FOnClick(self);

WM_RBUTTONUP : DoRightClick(self);

end;

end

else // Maneja todos los mensajes con el controlador predeterminado

Resultado := DefWindowProc(FWindowHandle, Msg, wParam, lParam);

fin;

registro del procedimiento;

comenzar

RegisterComponents('Win95', [TTrayIcon]);

end;

end.