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 03-06-2006
Avatar de JULIPO
JULIPO JULIPO is offline
Miembro
 
Registrado: ene 2006
Ubicación: Bogota Colombia
Posts: 187
Poder: 19
JULIPO Va por buen camino
Statusbar con colores

Reciban un cordial saludo

Estoy desarrollando una aplicacion Cliente - servidor en Mysql y delphi 7.0 cuando el servidor esta en linea la aplicacion cliente muestra en el statusbar en el panel 4 un mensaje 'En linea' con el fondo en verde cuando esta fuera de linea la aplicacion muestra 'fuera de linea' con fondo rojo.

eso es lo que quiero hacer pero no se como hacer para que el status bar cambie los colores de fondo?.

de antemano le agradezco cualquier respuesta a mi problema.


julipo
Responder Con Cita
  #2  
Antiguo 03-06-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
Puedes hacer algo como esto, en la propiedad Style del panel pones psOwnerDraw y en el evento OnDrawPanel del Statusbar colocas esto:

Código Delphi [-]
procedure TForm1.StatusBar1DrawPanel(StatusBar: TStatusBar;
  Panel: TStatusPanel; const Rect: TRect);
begin
  if Uppercase(Panel.Text) = 'EN LINEA' then
    Statusbar.Canvas.Brush.Color:= clGreen
  else
    Statusbar.Canvas.Brush.Color:= clRed;
  Statusbar.Canvas.FillRect(Rect);
  Statusbar.Canvas.TextRect(Rect,4,4,Panel.Text);
end;

De esta manera somos nosotros lo encargados de dibujar el panel, primero ajustamos el color de fondo y pintamos todo el area del panel, luego tenemos que escribir el texto (juega con los valores para que el texto quede bien centrado).

Código Delphi [-]
// Esto pone el panel de color verde
Statusbar1.Panels[0].Text:= 'En linea';
// Esto pone el panel de color rojo
Statusbar1.Panels[0].Text:= 'Cualquier otro texto';

Última edición por seoane fecha: 03-06-2006 a las 20:00:58.
Responder Con Cita
  #3  
Antiguo 03-06-2006
Avatar de JULIPO
JULIPO JULIPO is offline
Miembro
 
Registrado: ene 2006
Ubicación: Bogota Colombia
Posts: 187
Poder: 19
JULIPO Va por buen camino
Funciona muy Bien

Muchas Gracias por tu respuesta funciona muy bien, pero ahora pienso en algo mas si quiero que aparezca un icono o bmp, es posible?
Responder Con Cita
  #4  
Antiguo 04-06-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
Pues siguiendo mi respuesta anterior, si lo que quieres es dibujar un bitmap una posible solucion seria poner esto en el evento OnDrawPanel

Código Delphi [-]
procedure TForm1.StatusBar1DrawPanel(StatusBar: TStatusBar;
  Panel: TStatusPanel; const Rect: TRect);
var
  Bitmap: TBitmap;
begin
  Statusbar.Canvas.FillRect(Rect);
  if FileExists(Panel.Text) then
  begin
    Bitmap:= TBitmap.Create;
    try
      Bitmap.LoadFromFile(Panel.Text);
      // Esta opcion vuelve transparente el color de fondo del bitmap
      Bitmap.Transparent:= TRUE;
      Statusbar.Canvas.Draw(0,0,Bitmap);
    finally
      Bitmap.Free;
    end;
  end;
end;

De esta manera dibujamos en el Panel el bitmap cuya ruta esta escrita en la propiedad text del propio panel, es decir, si tenemos un archivo en d:\1.bmp para cargarlo solo tendriamos que hacer:

Código Delphi [-]
  Statusbar1.Panels[0].Text:= 'd:\1.bmp';

Puede que tangas que modificar algo para adaptarlo a lo que tu pensabas pero espero que te hagas una idea.
Responder Con Cita
  #5  
Antiguo 04-06-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
Otra posible solucion es utilizar un TImageList, colocar ahi los bmps o iconos que quieras usar y luego escribir en la proiedad text del panel su indice, es decir:

Código Delphi [-]
procedure TForm1.StatusBar1DrawPanel(StatusBar: TStatusBar;
  Panel: TStatusPanel; const Rect: TRect);
begin
  Statusbar.Canvas.FillRect(Rect);
  ImageList1.Draw(Statusbar.Canvas,Rect.Left,Rect.Top,StrToIntDef(Panel.Text,-1));
end;

Y para dibujar una imagen:
Código Delphi [-]
// Esto dibuja la primera imagen de TImageList
Statusbar1.Panels[0].Text:= '0';

// Esto la segunda y asi sucesivamente
Statusbar1.Panels[0].Text:= '1';

// Esto la borrar
Statusbar1.Panels[0].Text:= '-1';
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
StatusBar de dos lineas melon OOP 8 14-01-2006 14:15:31
Textos En StatusBar kman Varios 2 22-12-2005 00:06:56
XPManifest y Statusbar arj2000 Varios 1 29-07-2005 01:25:57
MainMenu con imágnenes y StatusBar fidel OOP 1 09-05-2005 15:26:46
statusbar y hints urush30 Varios 3 05-08-2004 12:43:55


La franja horaria es GMT +2. Ahora son las 19:59:35.


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