Club Delphi  
    FTP   CCD     Buscar   Trucos   Trabajo   Foros

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

Grupo de Teaming del ClubDelphi

Respuesta
 
Herramientas Buscar en Tema Desplegado
  #1  
Antiguo 08-07-2003
Avatar de hgiacobone
hgiacobone hgiacobone is offline
Miembro
 
Registrado: may 2003
Ubicación: La Plata, Bs. As., Argentina
Posts: 165
Poder: 21
hgiacobone Va por buen camino
Lightbulb StatusBar con Hints en cada Panels

Eso... alguien tiene idea de cómo asignar Hints a cada Panel de la StatusBar (modo Text o OnDraw), tal cual lo hace por ejemplo el IExplorer.
__________________
Gracias de antemano por vuestra ayuda.
·.:*:.·Yako·.:*:.·
Responder Con Cita
  #2  
Antiguo 08-07-2003
__cadetill __cadetill is offline
Miembro
 
Registrado: may 2003
Posts: 3.387
Poder: 25
__cadetill Va por buen camino
bueno, creo que el explorer pone los hints en el panel grande, lo demas que pone, no diria que son hints, sino texto que él pone segun combiene en cada momento con una simple asignacion y luego borrando su contenido

De hecho, en mis aplicaciones suelo poner en reloj, el dia, si es un programa multiusuario, el usuario, si es multiempresa, la empresa,.... vamos, lo que necesite en cada caso

Última edición por __cadetill fecha: 08-07-2003 a las 16:58:12.
Responder Con Cita
  #3  
Antiguo 08-07-2003
Avatar de hgiacobone
hgiacobone hgiacobone is offline
Miembro
 
Registrado: may 2003
Ubicación: La Plata, Bs. As., Argentina
Posts: 165
Poder: 21
hgiacobone Va por buen camino
Cita:
Posteado originalmente por cadetill
bueno, creo que el explorer pone los hints en el panel grande, lo demas que pone, no diria que son hints, sino texto que él pone .... vamos, lo que necesite en cada caso
¿Que cosa?...
Tal vez no me expliqué bien.
El objeto TSatusBar permite tener un unico "item" de tipo Hint, el del propio objeto TStatusBar.

Cuando adicionamos más de un TSatusPanel (independientemente de si está en modo Text o en OnOwnerDraw), estos no disponen de la propiedad Hint individual.

Por allí escuché que puede "dibujarse" un Hint por programación (un ejemplo de Marco Cantu o de Francisco Charte), pero realmente no logro pezcarlo.

Tal vez alguien tiene un poco de código de cómo hacer un hint para cada panel de mi StatusBar.
__________________
Gracias de antemano por vuestra ayuda.
·.:*:.·Yako·.:*:.·
Responder Con Cita
  #4  
Antiguo 08-07-2003
Avatar de delphi.com.ar
delphi.com.ar delphi.com.ar is offline
Federico Firenze
 
Registrado: may 2003
Ubicación: Buenos Aires, Argentina *
Posts: 5.932
Poder: 27
delphi.com.ar Va por buen camino
Te recomiendo investigar la clase THintWindow, seguramente encontrarás unos cuantos ejemplos en la Web.

Saludos!
__________________
delphi.com.ar

Dedique el tiempo suficiente para formular su pregunta si pretende que alguien dedique su tiempo en contestarla.
Responder Con Cita
  #5  
Antiguo 08-07-2003
Avatar de hgiacobone
hgiacobone hgiacobone is offline
Miembro
 
Registrado: may 2003
Ubicación: La Plata, Bs. As., Argentina
Posts: 165
Poder: 21
hgiacobone Va por buen camino
Cita:
Posteado originalmente por delphi.com.ar
Te recomiendo investigar la clase THintWindow, seguramente encontrarás unos cuantos ejemplos en la Web. Saludos!
Gracias DelphiMan por tu respuesta técnica tan elaborada.
¿Te refieres a ESTE sitio web o cualquier otro?
__________________
Gracias de antemano por vuestra ayuda.
·.:*:.·Yako·.:*:.·
Responder Con Cita
  #6  
Antiguo 08-07-2003
andres1569 andres1569 is offline
Miembro
 
Registrado: may 2003
Posts: 908
Poder: 21
andres1569 Va por buen camino
Hola:

Tengo aquí el libro de Marco Cantú y lo que explica no es exactamente lo que tu deseas, sino que muestra en un Panel del StatusBar el Hint que está activo en ese momento. Eso se logra interceptando el evento OnHint del objeto Application, si tienes Delphi 5 o superior, puedes usar un componente TApplicationEvents, interceptar dicho evento y escribir algo así:

StatusBar1.Panels[0].Text := Application.Hint;

Es una forma de que el usuario siempre pueda ver la ayuda relacionada con un componente, aunque éste tenga la propiedad ShowHint a FALSE.

Como ves, no es lo mismo que pedías pero te puede resultar útil.
__________________
Guía de Estilo
Responder Con Cita
  #7  
Antiguo 08-07-2003
Avatar de hgiacobone
hgiacobone hgiacobone is offline
Miembro
 
Registrado: may 2003
Ubicación: La Plata, Bs. As., Argentina
Posts: 165
Poder: 21
hgiacobone Va por buen camino
Cita:
Posteado originalmente por andres1569
Hola:

Tengo aquí el libro de Marco Cantú ...
Es una forma de que el usuario siempre pueda ver la ayuda relacionada con un componente, aunque éste tenga la propiedad ShowHint a FALSE. Como ves, no es lo mismo que pedías pero te puede resultar útil.
Si es cierto, pero de todas formas gracias Andrés por responder.
Ese ejemplo ya lo había visto en el libro, pero yo necesito generar Hint individuales para cada Panel.

Te explico un uso posible de esto:
Uno de esos paneles muestra la fecha en formato dd/mm/aaaa; cuando pozás el puntero sobre esta leyenda debería aparecer el Hint: "Domingo, 12 de Enero de 2003" por poner un ejemplo.

Tambien donde aparece el nombre del usuario (en entorno multiusuario, como explicaba el amigo CADETILL) podría aparecer el Hint: "Usuario Nivel 4" o "Usuario con restricciones" o "Grupo Vendedores" o "Doble clic cierra su sesión de usuario".

Así podríamos seguir toda la noche, ¿no?
__________________
Gracias de antemano por vuestra ayuda.
·.:*:.·Yako·.:*:.·
Responder Con Cita
  #8  
Antiguo 08-07-2003
Avatar de delphi.com.ar
delphi.com.ar delphi.com.ar is offline
Federico Firenze
 
Registrado: may 2003
Ubicación: Buenos Aires, Argentina *
Posts: 5.932
Poder: 27
delphi.com.ar Va por buen camino
Solo puse THintWindow en Google.com, y salieron unas cuántas páginas, una de ellas tiene este ejemplo:
Código:
var
  h : THintWindow;
  r : TRect;
begin
  with r do
  begin
    //
    // set the position and size
    // of the hint window
    //
    left   :=  10;
    top    :=  50;
    right  := 200;
    bottom := 100;
  end;
  h := THintWindow.Create( Self );
  with h do
  begin
    //
    // set the background color
    //
    Color := clRed;

    ActivateHint( r, 'hi there!' );

    //
    // perform your tasks here
    // before closing the hint window
    //
    MessageBox( 0,
      'Press any key to close the '
      + 'hint window',
      'THintWindow',
      MB_OK );
      
    ReleaseHandle;
    Free;
  end;
end;
__________________
delphi.com.ar

Dedique el tiempo suficiente para formular su pregunta si pretende que alguien dedique su tiempo en contestarla.
Responder Con Cita
  #9  
Antiguo 08-07-2003
andres1569 andres1569 is offline
Miembro
 
Registrado: may 2003
Posts: 908
Poder: 21
andres1569 Va por buen camino
Por cierto, veo que Delphi.Com.Ar crea un THintWindows adrede para poder mostrar el Hint, ¿os sucede lo mismo que a mí (Delphi 4 y 5) que la propiedad Hint y ShowHint del StatusBar no hace ni caso cuando pasas el Mouse por encima del mismo?
__________________
Guía de Estilo
Responder Con Cita
  #10  
Antiguo 08-07-2003
Ruben_Cu Ruben_Cu is offline
No confirmado
 
Registrado: oct 2003
Ubicación: Mariel, Cuba
Posts: 271
Poder: 0
Ruben_Cu Va por buen camino
Hola hgiacobone y demás compañeros voy a proponer una solución a partir de propiedades de los objetos la he probado en delphi 6 no se cual usas tu a partir de lo que comenta andres.
Yo lo he implementado de la manera siguiente:
Código:
procedure TForm1.StatusBar1MouseMove(Sender: TObject; Shift: TShiftState;
  X, Y: Integer);
begin
        with statusbar1 do begin
                if x<Panels[0].Width then Hint:=Panels[0].Text;
                if (x>Panels[0].Width)and(x<(Panels[0].Width+Panels[1].Width))then Hint:=Panels[1].Text;
                if (x>(Panels[0].Width+Panels[1].Width)) then Hint:=Panels[2].Text;
        end;
end;
O sea utilizando el evento OnMove del mouse... inconvenientes:
1.- Al moverte de un panel a otro debes abandonar el statusbar y entrar de nuevo
2.- Debes tener tantas sentencias if como paneles declares
Lo veo como una alternativa que puede servirte, el contenido del Hint en este caso es el texto del panel pero puede ser cualquier string incluso el contenido del registro de un campo.
Saludos y ojala aparezca una mejor
Responder Con Cita
  #11  
Antiguo 10-07-2003
Avatar de delphi.com.ar
delphi.com.ar delphi.com.ar is offline
Federico Firenze
 
Registrado: may 2003
Ubicación: Buenos Aires, Argentina *
Posts: 5.932
Poder: 27
delphi.com.ar Va por buen camino
Cita:
Posteado originalmente por andres1569
Por cierto, veo que Delphi.Com.Ar crea un THintWindows adrede para poder mostrar el Hint...
En realidad, le envié este código por esto:
Cita:
Posteado originalmente por hgiacobone
Por allí escuché que puede "dibujarse" un Hint por programación
La verdad que no tengo ese problema, y trabajo normalmete con Delphi 5.

Saludos!
__________________
delphi.com.ar

Dedique el tiempo suficiente para formular su pregunta si pretende que alguien dedique su tiempo en contestarla.
Responder Con Cita
  #12  
Antiguo 10-07-2003
andres1569 andres1569 is offline
Miembro
 
Registrado: may 2003
Posts: 908
Poder: 21
andres1569 Va por buen camino
Hola:

Delphi.Com.Ar, te aseguro que anoche, cuando posteé, lo había probado en Delphi 4 y 5 y no aparecía el Hint por ningún lado, igual era yo que estaba dormido.

Ahora mismito lo acabo de probar y no da problemas, no sé si se me nubló la vista ...

Volviendo al tema, la solución que proponía Rubén Acosta me pareció buena, yo tenía hecho algo parecido, y funciona para lo que pide hgiacobone:
Código:
procedure TForm1.StatusBar1MouseMove(Sender: TObject; Shift: TShiftState;
  X, Y: Integer);
var
  w, i : Integer;
begin
  w := 0;
  for i:=0 to StatusBar1.Panels.Count - 1 do
    with StatusBar1.Panels[i] do
    begin
      if X <= w + Width then
      begin
        StatusBar1.Hint := Text;
        Break;
      end;
      Inc (w, Width);
    end;
end;
Por cierto, todo el codigo que posteé del libro de Marco Cantú para mostrar en el StatusBar los hints de programa, es innecesario, para eso ya existe la propiedad AutoHint en el TStatusBar.
__________________
Guía de Estilo
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


La franja horaria es GMT +2. Ahora son las 10:46:37.


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