Foros Club Delphi

Foros Club Delphi (https://www.clubdelphi.com/foros/index.php)
-   Varios (https://www.clubdelphi.com/foros/forumdisplay.php?f=11)
-   -   Que parpade un Texto en el StatusBar (https://www.clubdelphi.com/foros/showthread.php?t=71960)

BlueSteel 20-01-2011 21:18:02

Que parpade un Texto en el StatusBar
 
Hola estimados..:rolleyes:

Quiero hacer parpadear un texto en el StatusBar.... alguien sabe como realizar eso.. o si existe un componente que ya lo hace... bueno, aparte de que sea con un color determinado y cosas así...

me acuerdo que en clipper era muy facil eso....:D:cool:

Salu2:p:D

Chris 20-01-2011 21:57:07

En un timer, altera el valor del Caption del Panel del StatusBar, entre un caption vacío y otro que muestre el texto que deseas.

ecfisa 21-01-2011 00:12:19

Hola BlueSteel.

Te pongo un ejemplo que simula un parpadeo cambiando color de fondo y letra, como para darte una idea más:
Código Delphi [-]
...
var
  sw: Boolean = True;

procedure TForm1.FormCreate(Sender: TObject);
begin
  { EJEMPLO CON DOS PANELS }
  StatusBar1.Panels.Add;
  StatusBar1.Panels[0].Text:= 'Hola';
  StatusBar1.Panels[0].Style:= psOwnerDraw;
  StatusBar1.Panels.Add;
  StatusBar1.Panels[1].Text:= 'mundo';
  StatusBar1.Panels[1].Style:= psOwnerDraw;
  StatusBar1.Panels.Add;
  Timer1.Interval:= 500;
end;

procedure TForm1.StatusBar1DrawPanel(StatusBar: TStatusBar;
  Panel: TStatusPanel; const Rect: TRect);
begin
  case Panel.Index of
    0:if sw then    // Panels[0]
      begin
        StatusBar.Canvas.Brush.Color:= clLime;
        StatusBar.Canvas.Font.Color:= clBlack;
      end
      else
      begin
        StatusBar.Canvas.Brush.Color:= clBlack;
        StatusBar.Canvas.Font.Color:= clLime;
      end;
    1:if sw then  // Panels[1]
      begin
        StatusBar.Canvas.Brush.Color:= clRed;
        StatusBar.Canvas.Font.Color:= clYellow;
      end
      else
      begin
        StatusBar.Canvas.Brush.Color:= clYellow;
        StatusBar.Canvas.Font.Color:= clRed;
      end;
   //2:...      // Panels[2]
  end;
  StatusBar.Canvas.FillRect(Rect);
  StatusBar.Canvas.TextOut(Rect.Left,Rect.Top-2, Panel.Text);
end;

procedure TForm1.Timer1Timer(Sender: TObject);
begin
  sw:= not sw;
  StatusBar1.Refresh;
end;
...

Un saludo.

Caral 21-01-2011 00:42:49

Hola
El efecto de ecfisa es impresionante pero creo que BlueSteel busca algo mas como esto:
Modificando solo un poco el código del maestro, parpadea el texto:
Código Delphi [-]
procedure TForm1.StatusBar1DrawPanel(StatusBar: TStatusBar;
  Panel: TStatusPanel; const Rect: TRect);
begin
   case Panel.Index of
    0:if sw then    // Panels[0]
      begin
      StatusBar.Font.Color:= clBlack;
      end
      else
      begin
       StatusBar.Canvas.Font.Color:= clBtnFace;
      end;
    1:if sw then  // Panels[1]
      begin
       StatusBar.Canvas.Font.Color:= clRed;
      end
      else
      begin
       StatusBar.Canvas.Font.Color:= clBtnFace;
      end;
   //2:...      // Panels[2]
  end;
  StatusBar.Canvas.FillRect(Rect);
  StatusBar.Canvas.TextOut(Rect.Left,Rect.Top-2, Panel.Text);
end;
Saludos

BlueSteel 25-01-2011 19:58:15

Holas

Estaba realizando lo que me indican pero no es mucho lo que aparece, o simplemente no me funca bien...

tengo el siguiente procedimiento que se dispara cuando ocurre una condicion

Código Delphi [-]
procedure TIngreso_Reg.Mensaje_Bloquea;
begin
     sBarra.Panels[0].Text:= 'BLOQUEADO';
     sBarra.Panels[0].Style:= psOwnerDraw;
     Bloquea.Interval:= 500;
end;

y tambien tengo el siguiente codigo para el panel0 del statusbar

Código Delphi [-]
procedure TIngreso_Reg.sBarraDrawPanel(StatusBar: TStatusBar;
  Panel: TStatusPanel; const Rect: TRect);
begin
case Panel.Index of
    0:if sw then    // Panels[0]
      begin
      sBarra.Font.Color:= clBlack;
      end
      else
      begin
       sBarra.Canvas.Font.Color:= clBtnFace;
      end;
  end;
  sBarra.Canvas.FillRect(Rect);
  sBarra.Canvas.TextOut(Rect.Left,Rect.Top-2, Panel.Text);
end;
Ahora, si bien cambia el texto que existe, no hace un parpadeo... y lo que me interesa es realizar un parpadeo más notorio

igual, seguiré intentando...

tambien estoy tratando de que me muestre y oculte una imagen unas 10 veces para que se note el parpadeo, pero no me funciona bien...
gracias :p

ecfisa 25-01-2011 20:50:02

Hola BlueSteel.

El código que te adjunté funciona correctamente, si lo copias y pegas completo, no deberías tener ningún problema.

Lo que seguramente cambiarás son los colores, ya que son muy "llamativos" :)


Un saludo.


La franja horaria es GMT +2. Ahora son las 16:00:53.

Powered by vBulletin® Version 3.6.8
Copyright ©2000 - 2026, Jelsoft Enterprises Ltd.
Traducción al castellano por el equipo de moderadores del Club Delphi