Foros Club Delphi

Foros Club Delphi (https://www.clubdelphi.com/foros/index.php)
-   Varios (https://www.clubdelphi.com/foros/forumdisplay.php?f=11)
-   -   Ventana emergente residente (https://www.clubdelphi.com/foros/showthread.php?t=90338)

mblascog 20-05-2016 08:32:13

Ventana emergente residente
 
Buenas, necesito crear un programa residente que dada una codición, visualize un aviso cada cierto tiempo.
La condición y el cierto tiempo está almacenado en una base de datos. Hace muchos años existía un componente en las RxLib. Pero ahora no tengo ni idea de por donde empezar.
Si alguien puede tirarme un cable?

Gracias

Casimiro Notevi 20-05-2016 09:22:03

Pero exactamente qué es lo que necesitas.

Neftali [Germán.Estévez] 20-05-2016 10:08:24

Y con qué versión estás trabajando.
Las nuevas versiones de Delphi ya traen los componentes que necesitas tanto para mostrar algo en la zona System Tray, como para mostrar notificaciones del sistema a partir de Windows 8/10.

Pero tampoco tengo claro que sea lo que necesitas.

mblascog 20-05-2016 10:22:18

Hola neftali, uso Delphi 7. De momento los pc's tienen W7 pero estamos migrando a W10.
Lo que quiero es que se abra una ventana tipo recordatorio, cuando se cumpla una condición.

Gracias

Casimiro Notevi 20-05-2016 11:44:56

Cita:

Empezado por Casimiro Notevi (Mensaje 505357)
Pero exactamente qué es lo que necesitas.

Pero cómo, dónde, cuándo, por qué...

mblascog 20-05-2016 12:16:13

Buenas Casemiro, el cuando? un programa residente que se dé una condición en base de datos, po ejemplo, que falta menos de un día, ....
Donde? Podría ser una ventana emergente en la parte inferior derecha de la pantalla, al igual que aparecen ventanas emergentes para actualizar un programa.
Por qué? es un recordatorio de tareas que hay que realizar, para que no se les pase.
Gracias

Casimiro Notevi 20-05-2016 12:18:05

¿Por qué no sigues usando las RXlib?

Neftali [Germán.Estévez] 20-05-2016 12:32:09

Alguna vez hemos hablado de este componente:
http://torry.net/quicksearchd.php?St....5.0&Title=Yes

En este hilo antiguo ya comentaron algo sobre él:
http://www.clubdelphi.com/foros/showthread.php?t=15263

Y aquí también; Incluso puedes ver alguna imagen de cómo quedaría.
http://www.clubdelphi.com/foros/showthread.php?t=64225

Por último, aquí se habla también de uno que tienen las JVCL, llamado JvDesktopAlert:
http://stackoverflow.com/questions/2...active-display

mblascog 20-05-2016 12:33:20

Pero las RxLib ya están absoletas no? No han sido reemplazadas por las Jedi?

Neftali [Germán.Estévez] 20-05-2016 12:51:54

Cita:

Empezado por mblascog (Mensaje 505369)
Pero las RxLib ya están absoletas no? No han sido reemplazadas por las Jedi?

Se incluyeron en alguna versión de la JVCL, pero si no quieres instalar todos los componentes de las JVCL y quieres sólo utilizar las RxLib, puedes encontrar versiones que están funcionales con las últimas versiones de Delphi (Seatle 10 y Berlin 10.1).

Yo he probado y compilado las que puedes encontrar aquí:
http://neftali.clubdelphi.com/?p=545

Y las últimas (que no he probado personalmente) las puedes encontrar en esta página:
http://www.micrel.cz/RxLib/dfiles.htm

escafandra 21-05-2016 00:56:43

Te muestro un ejemplo de como colocar una notificación en el SysTray con la API, el ejemplo viene de aquí:
Código Delphi [-]
unit Unit1;

interface

uses
  Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
  Dialogs, StdCtrls, ShellAPI;

type
  TForm1 = class(TForm)
    Button1: TButton;
    Edit1: TEdit;
    Edit2: TEdit;
    Label1: TLabel;
    Label2: TLabel;
    procedure Button2Click(Sender: TObject);
  private
    { Private declarations }
  public
    { Public declarations }
  end;

  TNotifyIconData = record
    cbSize: DWORD;
    Wnd: HWND;
    uID: UINT;
    uFlags: UINT;
    uCallbackMessage: UINT;
    hIcon: HICON;
    szTip: array [0..127] of AnsiChar;
    dwState: DWORD;
    dwStateMask: DWORD;
    szInfo: array [0..255] of AnsiChar;
    uTimeout: UINT;
    szInfoTitle: array [0..63] of AnsiChar;
    dwInfoFlags: DWORD;
  end;

// Ampliaciones para Vista
const NIIF_INFO    = $00000001;
const NIF_INFO     = $00000010;
const NIF_REALTIME = $00000040;
const NIF_SHOWTIP  = $00000080;
const NIIF_USER    = $00000004;

var
  Form1: TForm1;

implementation

{$R *.dfm}

procedure ShowBalloon(Handle: THANDLE; Titulo, Texto: String);
var
  Data: TNotifyIconData;
begin
  ZeroMemory(@Data, sizeof(TNotifyIconData));
  Data.cbSize:= sizeof(TNotifyIconData);
  Data.uFlags:= NIF_ICON or NIF_INFO or NIF_REALTIME;
  Data.dwInfoFlags:= NIIF_INFO;
  lstrcpyn(Data.szInfoTitle, PCHAR(Titulo), 64-1);
  lstrcpyn(Data.szInfo, PCHAR(Texto), 256-1);
  Data.uTimeOut:= 1000;
  Data.Wnd:=  Handle;
  Shell_NotifyIcon(NIM_ADD, @Data);
  Shell_NotifyIcon(NIM_MODIFY, @Data);
  Shell_NotifyIcon(NIM_DELETE, @Data);
end;

procedure TForm1.Button2Click(Sender: TObject);
begin
  ShowBalloon(Handle, Edit1.Text, Edit2.Text);
end;

end.
Muestro una imagen del diseño del formulario utilizado para este ejemplo.

También puedes definir tu propia ventana, como en este otro ejemplo donde uso una ventana desplegable translúcida de un color y posición definidos a voluntad para notificaciones.

Saludos.

ecfisa 21-05-2016 19:13:25

Hola.

Como para sumar otro ejemplo, me acorde de este: ...Show Balloon Tips for the Tray Icon?

Saludos :)

escafandra 21-05-2016 20:17:26

Cita:

Empezado por ecfisa (Mensaje 505411)
Hola.

Como para sumar otro ejemplo, me acorde de este: ...Show Balloon Tips for the Tray Icon?

Saludos :)

Eso es lo que hace el ejemplo que puse. Muestra una notificación en Systray acorde con el S.O. usado :).

Para completar, un componente para manejar el SysTray con notificaciones, control del tiempo de notificación, iconos animados y minimización de la app en el Systray que ya se comentó en clubdelphi otras veces.: TSysTrayIcon


Saludos.

mblascog 23-05-2016 13:17:01

Estoy mirando el ejemplo colgado por escafandra, pero no acaba de funcionarme. Tengo que pulsar bastantes veces el botón para que aparezca un instante el balloon.
En principio me gustaría que apareciera el balloon y ofrecer la posibilidad de hacer algo o cerrar

Gracias

escafandra 23-05-2016 14:36:01

1 Archivos Adjunto(s)
Te subo un proyecto y ejecutable.


Saludos.

mblascog 23-05-2016 15:00:44

Vale!!! genial. Muchas gracias

mblascog 23-05-2016 17:54:29

escafandra, pasa exactamente lo mismo. En el código, aunque no lo entiendo, hay unas constantes definidas para Vista, no será que en Windows 7 o posteriores no funciona?

En realidad lo que yo estoy buscando es un mensaje tipo el de java por ejemplo, que aparece el mensaje informando que hay una nueva actualización y tienes dos posibilidades. Eliminar el mensaje o descargar la actualización.

Es posible hacerlo?

Gracias

escafandra 23-05-2016 19:20:40

La función está probada en WinXP, Win8.1 y Win10.
Mira a ver la configuración de tu SO. Panel de control -> opciones de accesibilidad->-> Tiempo de Notificaciones

Saludos.

escafandra 23-05-2016 19:34:23

Una cosa más, Para Windows 8 en adelante , y posiblemente Vista, comenta la siguiente línea:
Código Delphi [-]
Shell_NotifyIcon(NIM_DELETE, @Data);

Saludos.

mblascog 23-05-2016 20:33:25

He visto el componente JvTrayIcon en las Jedi, que hace justo lo lo que busco.
Gracias por la colaboración.


La franja horaria es GMT +2. Ahora son las 21:52:53.

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