Club Delphi  
    FTP   CCD     Buscar   Trucos   Trabajo   Foros

Retroceder   Foros Club Delphi > Principal > API de Windows
Registrarse FAQ Miembros Calendario Guía de estilo Temas de Hoy

Respuesta
 
Herramientas Buscar en Tema Desplegado
  #1  
Antiguo 19-12-2006
fide fide is offline
Miembro
 
Registrado: oct 2006
Posts: 331
Poder: 18
fide Va por buen camino
Question Balón de texto de Windows.

Hola, en realidad lo que necesito es como mostrar un balón de texto de los que muestra Windows pero mediante una aplicación en delphi. Si me pueden enviar un ejemplo a fide1988man@yahoo.es o decirme donde puedo encontrar un ejemplo se los agradecería.

Gracias de nuevo amigos.
Responder Con Cita
  #2  
Antiguo 19-12-2006
Avatar de seoane
[seoane] seoane is offline
Miembro Premium
 
Registrado: feb 2004
Ubicación: A Coruña, España
Posts: 3.717
Poder: 24
seoane Va por buen camino
Cita:
Empezado por fide
Si me pueden enviar un ejemplo a fide1988man@yahoo.es
Por favor, respeta la guia de estilo y no pidas que te envíen la información a tu email. Piensa que la razón de ser de un foro es el de compartir las respuestas con todos los usuarios.

Y volviendo al tema de tu pregunta, ¿Que versión de delphi utilizas?. Porque según la versión que utilices, puede que tengas que implementar tu todo el código, que ya dispongas de un componente para mostrar el icono en la barra de tareas, e incluso en la ultimas versiones, el mismo componente se encarga de mostrar los globos.
Responder Con Cita
  #3  
Antiguo 24-12-2006
fide fide is offline
Miembro
 
Registrado: oct 2006
Posts: 331
Poder: 18
fide Va por buen camino
Lightbulb Respondiendo

Hola, y disculpas por lo del email. El problema es que no había leido la guía de estilos.

Volviendo al balon, uso delphi 5.
Responder Con Cita
  #4  
Antiguo 24-12-2006
fide fide is offline
Miembro
 
Registrado: oct 2006
Posts: 331
Poder: 18
fide Va por buen camino
Lightbulb Respondiendo 2

Ha, y si pueden decirme como encontrar un componente que haga eso o ayudarme a crear uno se los agradecería.

Gracias a todos de antemano amigos.
Responder Con Cita
  #5  
Antiguo 24-12-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
Hola,

¿Te refieres a los "balones" que se muestran en los iconos de la Bandeja del Sistema o te refieres a los que aparecen en distintos controles de los formularios de las aplicaciones? En todo caso busca en Torry's.
__________________
David Esperalta
www.decsoftutils.com
Responder Con Cita
  #6  
Antiguo 24-12-2006
Avatar de seoane
[seoane] seoane is offline
Miembro Premium
 
Registrado: feb 2004
Ubicación: A Coruña, España
Posts: 3.717
Poder: 24
seoane Va por buen camino
Hola fide, según creo la versión de delphi que utilizas no cuenta con ningún componente como el que necesitamos, aunque no estoy seguro porque nunca he trabajado con esa versión. De todas formas si es un componente lo que buscas, seguro que en esta pagina encontraras varios http://www.torry.net/

Ahora bien, si lo quieres crear por código, no resulta muy difícil:
Código Delphi [-]
// Lo primero es añadir ShellApi a las uses
uses ShellApi;

// Y el tipo TNOTIFYICONDATA que ne versiones anteriores no esta completo
type
  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;

//Para crearalo
procedure TForm1.FormCreate(Sender: TObject);
var
  Data: TNOTIFYICONDATA;
begin
  FillChar(Data,Sizeof(Data),0);
  with Data do
  begin
    cbSize:= Sizeof(Data);
    Wnd:= Handle;
    uID:= 100;
    uFlags:= NIF_ICON;
    hIcon:= Application.Icon.Handle;
  end;
  Shell_NotifyIcon(NIM_ADD,@Data);
end;

// Para destruirlo
procedure TForm1.FormClose(Sender: TObject; var Action: TCloseAction);
var
  Data: TNOTIFYICONDATA;
begin
  FillChar(Data,Sizeof(Data),0);
  with Data do
  begin
    cbSize:= Sizeof(Data);
    Wnd:= Handle;
    uID:= 100;
  end;
  Shell_NotifyIcon(NIM_DELETE, @Data);
end;

// Para mostrar un mensaje
procedure TForm1.MostrarBalon(Titulo, Texto: String);
var
  Data: TNOTIFYICONDATA;
begin
  FillChar(Data,Sizeof(Data),0);
  with Data do
  begin
    cbSize:= Sizeof(Data);
    Wnd:= Handle;
    uID:= 100;
    uFlags:= NIF_ICON or NIF_INFO;
    hIcon:= Application.Icon.Handle;
    StrLCopy(szInfoTitle,PChar(Titulo),Sizeof(szInfoTitle)-1);
    StrLCopy(szInfo,PChar(Texto),Sizeof(szInfo)-1);
    dwInfoFlags:= NIIF_INFO;
  end;
  Shell_NotifyIcon(NIM_MODIFY,@Data);
end;

// Por ejemplo
MostrarBalon('Titulo','Hola mundo');
Responder Con Cita
  #7  
Antiguo 24-12-2006
fide fide is offline
Miembro
 
Registrado: oct 2006
Posts: 331
Poder: 18
fide Va por buen camino
Thumbs up Balon de texto.

Hola seoane, tu siempre ayudando man. Muchas gracias. Todo me fue de marabillas. El unico detalle es que en la función que me disate no me mostraba los icono. Alberto me ayudo en eso y me dio todas las constantes apara los íconos de los balones. Muchas gracias de nuevo y

== Felíz Año Nuevo man y suerte ==
Responder Con Cita
  #8  
Antiguo 28-12-2006
Avatar de Alcolea
Alcolea Alcolea is offline
Miembro
 
Registrado: abr 2006
Ubicación: Santiago de Cuba, Cuba
Posts: 100
Poder: 19
Alcolea Va por buen camino
Question

Cita:
Empezado por fide
Hola seoane, tu siempre ayudando man. Muchas gracias. Todo me fue de marabillas. El unico detalle es que en la función que me disate no me mostraba los icono. Alberto me ayudo en eso y me dio todas las constantes apara los íconos de los balones. Muchas gracias de nuevo y

== Felíz Año Nuevo man y suerte ==
Amigo fide, como a ti me sucede que hay problemas con los iconos, ¿
cuales son esas constantes, por favor?
Responder Con Cita
  #9  
Antiguo 28-12-2006
Avatar de seoane
[seoane] seoane is offline
Miembro Premium
 
Registrado: feb 2004
Ubicación: A Coruña, España
Posts: 3.717
Poder: 24
seoane Va por buen camino
No comprendo, cuando decís que no muestra los iconos ¿de que iconos estáis hablando?. Solo es curiosidad, porque a mi el código que puse me funciona perfectamente.
Responder Con Cita
  #10  
Antiguo 28-12-2006
Avatar de roman
roman roman is offline
Moderador
 
Registrado: may 2003
Ubicación: Ciudad de México
Posts: 20.269
Poder: 10
roman Es un diamante en brutoroman Es un diamante en brutoroman Es un diamante en bruto
Al parecer en Delphi7- no sólo la estructura TNotifyIcon está incompleta para la versión más reciente del shell, sino que también se omiten algunas constantes que usas en tu código. Supongo que es a lo que se refieren e imagino que fide olvidó compartirlo ("regaño" suave para fide ).

Estas son las constantes:

Código Delphi [-]
const
  NIF_INFO = $10;

  NIIF_NONE = $0;
  NIIF_INFO = $1;
  NIIF_WARNING = $2;
  NIIF_ERROR = $3;
  NIIF_USER = $4;
  NIIF_NOSOUND = $10;

// Saludos
Responder Con Cita
  #11  
Antiguo 28-12-2006
Avatar de Alcolea
Alcolea Alcolea is offline
Miembro
 
Registrado: abr 2006
Ubicación: Santiago de Cuba, Cuba
Posts: 100
Poder: 19
Alcolea Va por buen camino
Thumbs up

Debe faltar algo que no he puesto, pero no me funciona lo del balón con el ejemplo que pusiste, más bajé los componentes que sujeriste y es con esto con lo que puedo hacer lo del balón. (no sale el balón pero si el icono)

Seguiré intentando, gracias por la ayuda.
Responder Con Cita
  #12  
Antiguo 28-12-2006
Avatar de Alcolea
Alcolea Alcolea is offline
Miembro
 
Registrado: abr 2006
Ubicación: Santiago de Cuba, Cuba
Posts: 100
Poder: 19
Alcolea Va por buen camino
Cool

Un último consejo sobre esto del balón, ¿en que evento aconsejaría usarlo, por ejemplo, para un Edit ? lo he probado con OnMouseMove, OnMouseDown y otros, y todos me resultan molestos ya que al menos estos dos que menciono se repiten constantemente cada ves que se trata de acceder al control por el usuario.
Responder Con Cita
  #13  
Antiguo 28-12-2006
Avatar de seoane
[seoane] seoane is offline
Miembro Premium
 
Registrado: feb 2004
Ubicación: A Coruña, España
Posts: 3.717
Poder: 24
seoane Va por buen camino
Cita:
Empezado por roman
Al parecer en Delphi7- no sólo la estructura TNotifyIcon está incompleta para la versión más reciente del shell, sino que también se omiten algunas constantes que usas en tu código.
Es verdad, no me acorde de incluir las constantes. Y eso que un tema anterior, si que me acordaba de incluirlas.
Responder Con Cita
  #14  
Antiguo 28-12-2006
Avatar de Lepe
[Lepe] Lepe is offline
Miembro Premium
 
Registrado: may 2003
Posts: 7.424
Poder: 28
Lepe Va por buen camino
Dependerá del componente, hay algunos que pueden suplantar el OnHint de delphi, quizás sea el mejor momento para mostrarlo.

Por código, suelo usarlo para mostrar errores / información / aviso a los usuarios, olvidando el MessageBox y el ShowMessage.

Saludos
__________________
Si usted entendió mi comentario, contácteme y gustosamente,
se lo volveré a explicar hasta que no lo entienda, Gracias.
Responder Con Cita
  #15  
Antiguo 28-12-2006
Avatar de roman
roman roman is offline
Moderador
 
Registrado: may 2003
Ubicación: Ciudad de México
Posts: 20.269
Poder: 10
roman Es un diamante en brutoroman Es un diamante en brutoroman Es un diamante en bruto
No sé por qué, pero a mi me da la impresión de que en este hilo se ha estado hablando de dos cosas distintas. Por un lado están los iconos en la bandeja del sistema con un hint en forma de balón, que es de lo que trata el código de seoane, y por otro están los balones que funcionen como hint sobre algún otro control. Que yo sepa no es lo mismo, ¿o sí?

// Saludos
Responder Con Cita
  #16  
Antiguo 29-12-2006
Avatar de Lepe
[Lepe] Lepe is offline
Miembro Premium
 
Registrado: may 2003
Posts: 7.424
Poder: 28
Lepe Va por buen camino
Tienes toda la razón roman, no había visto el código de seoane para el mostrar el balon.

Yo uso el de la JVCL para mostrarlo sobre cualquier control, con posibilidad de sustituir al Hint.

Saludos
__________________
Si usted entendió mi comentario, contácteme y gustosamente,
se lo volveré a explicar hasta que no lo entienda, Gracias.
Responder Con Cita
  #17  
Antiguo 31-12-2006
fide fide is offline
Miembro
 
Registrado: oct 2006
Posts: 331
Poder: 18
fide Va por buen camino
Lightbulb Confusión

Bueno, bueno, en este hilo lo que yo pretendía desarrollar es el balón de texto que se imprime cuando por ejemplo, Windows no tiene antivirus o el Firewall no está activo.

[Puede que se equipo esté en riesgo, se a cuerdan????]

O sea, es mismo que me explico seoane y que solo funciona en Windows 2000 o XP.

Aunque me interesa eso de mostrar ese mismo balón sobre los controles de las ventanas.

¿Cómo lo hacen?
Responder Con Cita
  #18  
Antiguo 01-01-2007
Avatar de Lepe
[Lepe] Lepe is offline
Miembro Premium
 
Registrado: may 2003
Posts: 7.424
Poder: 28
Lepe Va por buen camino
En mi caso, tienes que instalar la JVCL (más de 600 controles para delphi), aunque también lo podrás en torrys.net buscando por Balloon o BalloonHint

Saludos
__________________
Si usted entendió mi comentario, contácteme y gustosamente,
se lo volveré a explicar hasta que no lo entienda, Gracias.
Responder Con Cita
  #19  
Antiguo 09-01-2007
fide fide is offline
Miembro
 
Registrado: oct 2006
Posts: 331
Poder: 18
fide Va por buen camino
Thumbs up Comp

Amigos, gracias a la ayuda que me han brindado he logrado desarrollar un componente bello para imprimir el dichoso balón de texto. Le he puesto como nombre de la clase TNotifyBalloon y contiene las propiedades
  • Title
  • Text
  • Icon

Quiero seguir mejorándolo para incluirle incluso nuevos eventos y cosas buenas. Dentro de poco les pongo la Unit para que la analicen y me ayuden a mejorarlo.

Ha, importante. Si alguien sabe como hacer que el baloncito se pueda notificar también sobre cualquier control del formulario nos lo puede comunicar a mi y a todos los de este foro para mejorar el componente.

Y ya que fue gracias a Seoane y Roman principalmente que hice este componente en el About ellos tendrán su buen lugar. Jeje je.
Responder Con Cita
  #20  
Antiguo 18-01-2007
fide fide is offline
Miembro
 
Registrado: oct 2006
Posts: 331
Poder: 18
fide Va por buen camino
Post Componente

Código Delphi [-]
 
  // Sepan que no estoy muy diestro en la creación de componentes pero me  atreví a hacer este con la ayuda de unos amigos una tarde de aurrimiento.
  

   
  //---------------------------------------------------------
   
  unit NotifyBalloon;
   
  interface
   
  uses
    SysUtils,Windows, Classes, ShellApi,Forms,Dialogs;
   
   
  const
     NIF_INFO = $10;
   
   
  type
    TNotifyIcons = (NIIF_NONE , NIIF_INFO ,NIIF_WARNING ,NIIF_ERROR ,NIIF_USER );
   
    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;
    TNotifyBalloon = class(TComponent)
   
    private
      FTitle: String;
      FText: String;
      NIcon : Integer;
   
    protected
      { Protected declarations }
       FIcon:  TNotifyIcons;
       Data: TNOTIFYICONDATA;
       procedure SetIcon;
   
    public
      { Public declarations }
       ClientHandle : HWND;
       IconHandle : HWND;
       constructor Create(AOwner: Tcomponent); override;
       procedure ShowNotifyBalloon;
       procedure NotifyIcon;
       procedure DeleteIcon;
    published
      { Published declarations }
       property Icon : TNotifyIcons read FIcon write FIcon;
       property Title : String read FTitle write FTitle ;
       property Text : String read FText write FText ;
   
    end;
   
  procedure Register;
   
  implementation
  {*.res}
  constructor TNotifyBalloon.Create(AOwner : TComponent);
  begin
     inherited Create(AOwner);
     FIcon := NIIF_NONE;
  end;
  procedure TNotifyBalloon.NotifyIcon;
  begin
    FillChar(Data,Sizeof(Data),0);
    with Data do
    begin
      cbSize:= Sizeof(Data);
      Wnd:= ClientHandle;
      uID:= 100;
      uFlags:= NIF_ICON;
      hIcon:= IconHandle;
    end;
   
    Shell_NotifyIcon(NIM_ADD,@Data);
   
  end;
   
  procedure TNotifyBalloon.DeleteIcon;
  begin
    FillChar(Data,Sizeof(Data),0);
    with Data do
    begin
      cbSize:= Sizeof(Data);
      Wnd:= ClientHandle;
      uID:= 100;
      hIcon:= IconHandle;
    end;
    Shell_NotifyIcon(NIM_DELETE, @Data);
   
  end;
   
  procedure TNotifyBalloon.SetIcon ;
  begin
     if FIcon = NIIF_NONE then NIcon := $0;
     if FIcon = NIIF_INFO then NIcon := $1;
     if FIcon = NIIF_WARNING then NIcon := $2;
     if FIcon = NIIF_ERROR then NIcon := $3;
     if FIcon = NIIF_USER then NIcon := $4;
   
  end;
   
  procedure TNotifyBalloon.ShowNotifyBalloon;
  begin
    FillChar(Data,Sizeof(Data),0);
    with Data do
      begin
          cbSize:= Sizeof(Data);
          Wnd:= ClientHandle;
          uID:= 100;
          uFlags := NIF_ICON or NIF_INFO;
          hIcon:= Application.Icon.Handle;
          StrLCopy(szInfoTitle,PChar(FTitle),Sizeof(szInfoTitle)-1);
          StrLCopy(szInfo,PChar(FText),Sizeof(szInfo)-1);
          SetIcon;
          dwInfoFlags := NIcon;
      end;
   
    Shell_NotifyIcon(NIM_MODIFY,@data);
   
  end;
  procedure Register;
  begin
    RegisterComponents('Win32', [TNotifyBalloon]);
  end;
   
   
  end.
   
   
  //---------------------------------------------------------
   
  //Instalar el componente.
   
  //Un ejemplo de llamada
  

procedure TForm1.FormCreate(Sender: TObject);
begin

  with NotifyBalloon do
    begin
      IconHandle := Application.Icon.Handle;
      ClientHandle := Handle;
      NotifyIcon;
    end;

end;

procedure TForm1.FormDestroy(Sender: TObject);
begin

 NotifyBalloon.DeleteIcon;

end;

procedure TForm1.Button1Click(Sender: TObject);
begin

 with NotifyBalloon do
  begin
    Icon := NIIF_INFO;
    Title := 'Sugerencia';
    Text := 'Visite http://www.clubdelphi.com para que aprenda el arte de la programación en Delphi.' + #13 +
    'Exponga dudas y sugerencias a todos los foreros del sitio.';
    ShowNotifyBalloon;
  end;

end;


//Si tiene algo que se pueda mejorar díganselo a Roman o a Seoane
Responder Con Cita
Respuesta



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

Temas Similares
Tema Autor Foro Respuestas Último mensaje
Compartir recursos entre Windows Nt Server y Windows 98 fer21unmsm Windows 1 18-07-2006 22:05:44
Como puedo grabar texto en un Archivo de Texto sin Sobreescribir???? AGAG4 Varios 12 08-11-2005 22:53:00
Problemas con Windows XP y Windows 98 Aprendiendo Varios 1 20-05-2005 17:28:29
Generar fichero de texto (Formato MS-DOS vs WINDOWS) apicito Varios 2 05-04-2005 09:47:17
Poco más de 28000 € por un balón!! __cadetill Noticias 8 24-07-2004 10:05:01


La franja horaria es GMT +2. Ahora son las 15:15:56.


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