Utilizamos cookies propias y de terceros. [Más información sobre las cookies].
Política de cookies
Proyecto AjpdSoft

· Inicio
· Buscar
· Contactar
· Cookies
· Descargas
· Foros
· Historia
· Nosotros
· Temas
· Top 10
· Trucos
· Tutoriales
· Wiki
Proyecto AjpdSoft: Foros

AjpdSoft :: Ver tema - Crear ventana similar a la del aviso de Outlook
Foros de discusión Buscar Perfil FAQ Iniciar sesión
Information Crear ventana similar a la del aviso de Outlook

Publicar nuevo tema Responder al tema
Foros de discusión » Borland Delphi, Codegear Delphi .Net   
Ver tema anterior :: Ver tema siguiente
AutorMensaje
varios
Magnífico usuario


Registrado: Oct 10, 2006
Mensajes: 2092

Asunto: Crear ventana similar a la del aviso de Outlook Responder citando

Tengo una aplicación realizada en Borland Delphi 6, quisiera saber si es posible crear una ventana que se parezca en la forma de salir y cerrarse a la del Office Outlook 2003 y 2007, que aparece con efecto de transparencia, si pasas el ratón por encima no desaparece y si mueves el cursor del ratón fuera de la ventana de aviso desaparece.

También quiero que aparezca en la misma zona la del Office Outlook ¿es posible en Delphi 6?
MensajePublicado:
Jue May 14, 2009 9:14 am
Top of PageVer perfil de usuario
varios
Magnífico usuario


Registrado: Oct 10, 2006
Mensajes: 2092

Asunto: Re: Crear ventana similar a la del aviso de Outlook Responder citando



Anuncios



varios escribió:
Tengo una aplicación realizada en Borland Delphi 6, quisiera saber si es posible crear una ventana que se parezca en la forma de salir y cerrarse a la del Office Outlook 2003 y 2007, que aparece con efecto de transparencia, si pasas el ratón por encima no desaparece y si mueves el cursor del ratón fuera de la ventana de aviso desaparece.

También quiero que aparezca en la misma zona la del Office Outlook ¿es posible en Delphi 6?


Me refiero, por si no ha quedado claro, a esa ventana de notificación de nuevo email que muestra el Outlook que va con el Office, que aparece unos segundos y desaparece si no se pone el cursor del ratón sobre ella.
MensajePublicado:
Jue May 14, 2009 9:23 am
Top of PageVer perfil de usuario
alonsojpd
Administrador/Moderador


Registrado: Sep 16, 2003
Mensajes: 2687

Asunto: Re: Crear ventana similar a la del aviso de Outlook Responder citando



Anuncios



varios escribió:
varios escribió:
Tengo una aplicación realizada en Borland Delphi 6, quisiera saber si es posible crear una ventana que se parezca en la forma de salir y cerrarse a la del Office Outlook 2003 y 2007, que aparece con efecto de transparencia, si pasas el ratón por encima no desaparece y si mueves el cursor del ratón fuera de la ventana de aviso desaparece.

También quiero que aparezca en la misma zona la del Office Outlook ¿es posible en Delphi 6?


Me refiero, por si no ha quedado claro, a esa ventana de notificación de nuevo email que muestra el Outlook que va con el Office, que aparece unos segundos y desaparece si no se pone el cursor del ratón sobre ella.


Tal vez te sirva algo así:

Código:

unit UnidadVentanaNotificacion;

interface

uses
  Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
  Dialogs, ExtCtrls, AgBlend, Buttons, StdCtrls;

type
  TformNotificacionI = class(TForm)
    AgBlend1: TAgBlend;
    tmTransparenciaInicial: TTimer;
    bVer: TSpeedButton;
    tmCerrar: TTimer;
    tmTransparenciaCerrar: TTimer;
    tmActividad: TTimer;
    tmTransparenciaIncrementar: TTimer;
    lUsuario: TLabel;
    lDescripcion: TMemo;
    lAsunto: TLabel;
    lNumero: TLabel;
    bInfoUsuario: TSpeedButton;
    lPrioridad: TLabel;
    procedure FormCreate(Sender: TObject);
    procedure tmTransparenciaInicialTimer(Sender: TObject);
    procedure lDescripcionMouseMove(Sender: TObject; Shift: TShiftState; X,
      Y: Integer);
    procedure FormMouseMove(Sender: TObject; Shift: TShiftState; X,
      Y: Integer);
    procedure tmCerrarTimer(Sender: TObject);
    procedure tmTransparenciaCerrarTimer(Sender: TObject);
    procedure tmActividadTimer(Sender: TObject);
    procedure lPrioridadMouseMove(Sender: TObject; Shift: TShiftState; X,
      Y: Integer);
    procedure bVerMouseMove(Sender: TObject; Shift: TShiftState; X,
      Y: Integer);
    procedure tmTransparenciaIncrementarTimer(Sender: TObject);
    procedure bVerClick(Sender: TObject);
    procedure FormClose(Sender: TObject; var Action: TCloseAction);
    procedure FormShow(Sender: TObject);
    procedure lAsuntoMouseMove(Sender: TObject; Shift: TShiftState; X,
      Y: Integer);
    procedure bInfoUsuarioClick(Sender: TObject);
    procedure lUsuarioMouseMove(Sender: TObject; Shift: TShiftState; X,
      Y: Integer);
  private
    { Private declarations }
    hayActividad : boolean;
  public
    { Public declarations }
  end;

var
  formNotificacionI: TformNotificacionI;

implementation

uses UnidadProcedimientos, UnidadModuloDatos, UnidadGIncidencia,
  UnidadInformacionUsuario, UnidadMenuPrincipal;

{$R *.dfm}

procedure TformNotificacionI.FormCreate(Sender: TObject);
begin
{  vtnotificacionMostrada := true;
  hayActividad := false;
  formNotificacionI.Left := Screen.Width - formNotificacionI.Width - 5;
  formNotificacionI.Top := Screen.Height - formNotificacionI.Height - 5;
  AgBlend1.Opacity := 0;
  AgBlend1.BlendType := Alpha;
  AgBlend1.Refresh;

  tmTransparenciaInicial.Enabled := true;}
end;

procedure TformNotificacionI.tmTransparenciaInicialTimer(Sender: TObject);
begin
  if AgBlend1.Opacity = 255 then
  begin
    tmTransparenciaInicial.Enabled := false;
    tmCerrar.Enabled := true;
    tmActividad.Enabled := true;
  end;
  AgBlend1.Opacity := AgBlend1.Opacity + 5;
  AgBlend1.Refresh;
end;

procedure TformNotificacionI.lDescripcionMouseMove(Sender: TObject; Shift: TShiftState;
  X, Y: Integer);
begin
  hayActividad := true;
  lDescripcion.Cursor := crHandPoint;
  lDescripcion.Font.Style := [fsunderline];
end;

procedure TformNotificacionI.FormMouseMove(Sender: TObject; Shift: TShiftState; X,
  Y: Integer);
begin
  hayActividad := true;
  lDescripcion.Cursor := crDefault;
  lDescripcion.Font.Style := [];
  lAsunto.Cursor := crHandPoint;
  lAsunto.Font.Style := [fsbold];
  lAsunto.Cursor := crHandPoint;
  lUsuario.Font.Style := [fsbold];
end;

procedure TformNotificacionI.tmCerrarTimer(Sender: TObject);
begin
  if not hayActividad then
    tmTransparenciaCerrar.Enabled := true;
end;

procedure TformNotificacionI.tmTransparenciaCerrarTimer(Sender: TObject);
begin
  if hayActividad then
  begin
    tmTransparenciaCerrar.Enabled := false;
    tmTransparenciaIncrementar.Enabled := true;
  end
  else
  begin
    if AgBlend1.Opacity = 0 then
      close;
    AgBlend1.Opacity := AgBlend1.Opacity - 5;
    AgBlend1.Refresh;
  end;
end;

procedure TformNotificacionI.tmActividadTimer(Sender: TObject);
var
  posicionRaton : TPoint;
begin
  GetCursorPos (posicionRaton);
  if (posicionRaton.Y > Top + formNotificacionI.Height) or
     (posicionRaton.Y < Top) or
     (posicionRaton.X > Left + formNotificacionI.Width) or
     (posicionRaton.X < Left) then
    hayActividad := false
  else
    hayActividad := true;
end;

procedure TformNotificacionI.lPrioridadMouseMove(Sender: TObject;
  Shift: TShiftState; X, Y: Integer);
begin
  hayActividad := true;
end;

procedure TformNotificacionI.bVerMouseMove(Sender: TObject;
  Shift: TShiftState; X, Y: Integer);
begin
  hayActividad := true;
end;

procedure TformNotificacionI.tmTransparenciaIncrementarTimer(
  Sender: TObject);
begin
  if AgBlend1.Opacity = 255 then
  begin
    tmTransparenciaIncrementar.Enabled := false;
    tmCerrar.Enabled := true;
    tmActividad.Enabled := true;
  end;
  AgBlend1.Opacity := AgBlend1.Opacity + 5;
  AgBlend1.Refresh;
end;

procedure TformNotificacionI.bVerClick(Sender: TObject);
begin
  vtNotificacionMostrada := true;
  if permisosMenuUsuario (vtCodigoUsuario, vtNumIncidencia, vtPermisoModificacion, true) then
  begin
    vtAccion := 'modificar';
    vtCodigo := tag;
    application.createform(TformGIncidencia, formGIncidencia);
    formGIncidencia.ShowModal;
  end;
end;

procedure TformNotificacionI.FormClose(Sender: TObject;
  var Action: TCloseAction);
begin
  vtNotificacionMostrada := false;
  if vtAvisoIncidenciasUnaVez then
    incidenciaAvisada(Tag);
  formmenuprincipal.tmIncidencias.Enabled := true;
  Action := caFree;
end;

procedure TformNotificacionI.FormShow(Sender: TObject);
begin
  lDescripcion.Font.Color := clBlue;
  vtnotificacionMostrada := true;
  hayActividad := false;
  formNotificacionI.Left := Screen.Width - formNotificacionI.Width - 5;
  formNotificacionI.Top := Screen.Height - formNotificacionI.Height - 30;
  AgBlend1.Opacity := 0;
  AgBlend1.BlendType := Alpha;
  AgBlend1.Refresh;

  tmTransparenciaInicial.Enabled := true;
end;

procedure TformNotificacionI.lAsuntoMouseMove(Sender: TObject;
  Shift: TShiftState; X, Y: Integer);
begin
  hayActividad := true;
  lAsunto.Cursor := crHandPoint;
  lAsunto.Font.Style := [fsunderline, fsbold];
end;

procedure TformNotificacionI.bInfoUsuarioClick(Sender: TObject);
begin
  application.createform(TformInformacionUsuario, formInformacionUsuario);
  formInformacionUsuario.Tag := obtenerUsuarioIncidencia (tag);
  formInformacionUsuario.Caption :=
        'Información usuario y puesto de trabajo, incidencia [' + inttostr(tag) + ']';
  formInformacionUsuario.ShowModal;
end;

procedure TformNotificacionI.lUsuarioMouseMove(Sender: TObject;
  Shift: TShiftState; X, Y: Integer);
begin
  hayActividad := true;
  lUsuario.Cursor := crHandPoint;
  lUsuario.Font.Style := [fsunderline, fsbold];
end;

end.


En este código fuente (source code) de ejemplo, necesitaras en el formulario varios componentes, te mostramos los componentes en esta imagen:



Lógicamente habrá componentes que no necesites, dependerá de lo que quieras mostrar al usuario, pero seguro que te sirve de base.

Ten en cuenta que para la transparencia del formulario utilizamos el componente gratuito AgBlend.
MensajePublicado:
Mar May 26, 2009 5:06 am
Top of PageVer perfil de usuario
alonsojpd
Administrador/Moderador


Registrado: Sep 16, 2003
Mensajes: 2687

Asunto: Re: Crear ventana similar a la del aviso de Outlook Responder citando



Anuncios



En el siguiente enlace tienes la descarga gratuita del código fuente (source code) 100% Open Source con un ejemplo de cómo mostrar esta ventana en una aplicación:

http://www.ajpdsoft.com/modules.php?name=Downloads&d_op=viewdownloaddetails&lid=235
MensajePublicado:
Mar May 26, 2009 5:50 am
Top of PageVer perfil de usuario
Mostrar mensajes de anteriores:   
Todas las horas son GMT - 1 Horas
Publicar nuevo tema Responder al tema
Foros de discusión » Borland Delphi, Codegear Delphi .Net  

Cambiar a:  
Key
  Puede publicar 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 votar en encuestas en este foro
Visita nuestro nuevo sitio web con programas y contenidos actualizados: Proyecto A