Foros Club Delphi

Foros Club Delphi (https://www.clubdelphi.com/foros/index.php)
-   Gráficos (https://www.clubdelphi.com/foros/forumdisplay.php?f=8)
-   -   Progress Bar dentro de un grid (https://www.clubdelphi.com/foros/showthread.php?t=60077)

IgnacioHaro 18-09-2008 22:56:43

Progress Bar dentro de un grid
 
buenas tardes, alguien sabe de algun componente o alguna forma de poner un progress bar dentro de un grid ?? :confused:

le agradeceria mucho la ayuda.

FGarcia 19-09-2008 00:17:21

eso si se me hace raro!
He visto como poner un progressbar en un StatusBar pero ¿en un dbgrid? ¿para que? curiosidad

JXJ 19-09-2008 03:51:55

tal vez sea para mostrar el porcentaje.

ejemplo

una tabla con las ventas del dia..

y ahi una donde se ponga si se vendio todo. la mitad. etc
con un progressbar se puede mostrar graficamente.

roman 19-09-2008 05:08:31

Si te refieres a lo que comenta JXJ, te puede servir este hilo en donde pongo un ejemplo.

// Saludos

Casimiro Noteví 19-09-2008 07:19:31

Y por si fuese poco, en el blog del compañero Neftali hay otro ejemplo: http://neftali.clubdelphi.com/

Neftali [Germán.Estévez] 19-09-2008 09:14:59

Este, aunque en realidad no es un progressbar, simplemente es mostrar un porcentaje de forma visual.


IgnacioHaro 20-09-2008 20:02:06

listo
 
muchas gracias me sirvio bastante :)

ya pude crear mi progressbar, ya podre terminar mi proyecto

FGarcia 23-09-2008 18:02:36

Felicidades! que bueno que te sirvio lo que te comentaron, ahora ¿podrias publicar tu solucion? esto para retroalimentar a la comunidad.

IgnacioHaro 30-09-2008 21:28:50

solucion
 
hola, disculpen, aqui esta la forma en q lo hice:

q_curacion es un TZQuery y cada segundo hago un refresh al query con un TTimer.

En esta pantalla voy insertando registros en una BD y le digo en que fecha y hora empieza y en que fecha y hora termina, y durante este tiempo se debera mostrar una barra de progreso representando el procentaje de los minutos transcurridos.

Código Delphi [-]
procedure Tf_telecuracion.dbg_telecuracionDrawColumnCell(Sender: TObject;
  const Rect: TRect; DataCol: Integer; Column: TColumn; State: TGridDrawState);
var
  fValue,minTotal, minTrans: Integer;
  ActualPenColor, ActualBrushColor: TColor;
  EmptyDS: Boolean;
  DrawRect: TRect;
  fWidth1, fLeft2: Integer;
  StrValue: string;
begin
  // Es la columna de progreso ?
  if not (Column.FieldName = 'progreso') then begin
    Exit;
  end;
  minTotal:= MinutesBetween(q_curacion.FieldByName('inicio').AsDateTime, q_curacion.FieldByName('final').AsDateTime);
  minTrans:= MinutesBetween(q_curacion.FieldByName('inicio').AsDateTime, now);
  fValue:= minTrans * 100 DIV minTotal;
  if fValue > 100 then
     fValue:= 100;
  StrValue := IntToStr(fValue) +  CHAR_PERCENT;
  // Calcular el Rectángulo
  DrawRect := Rect;
  InflateRect(DrawRect, -1, -1);
  fWidth1 := Round((DrawRect.Right - DrawRect.Left) * (fValue / 100));
  // Guardamos el color actual
  ActualPenColor := TDBGrid(Sender).Canvas.Pen.Color;
  ActualBrushColor := TDBGrid(Sender).Canvas.Brush.Color;
  // Definir el color de pintado
  TDBGrid(Sender).Canvas.Pen.Color := clHighlight;
  TDBGrid(Sender).Canvas.Brush.Color := clWhite;
  // Dibuja el recuadro exterior
  TDBGrid(Sender).Canvas.Rectangle(DrawRect);
  // Es diferente de 0 y de -1(null)?
  if (fValue > 0) then begin
    // Dibuja la parte que llevamos completada (porcentage)
    TDBGrid(Sender).Canvas.Pen.Color := clGreen;
    TDBGrid(Sender).Canvas.Brush.Color := clGreen;
    // rectángulo del porcentaje
    DrawRect.Right := DrawRect.Left + fWidth1;
    InflateRect(DrawRect, -1, -1);
    TDBGrid(Sender).Canvas.Rectangle(DrawRect);
  end;
  // porcentaje
  DrawRect := Rect;
  InflateRect(DrawRect, -2, -2);
  TDBGrid(Sender).Canvas.Brush.Style := bsClear;
  fLeft2 := DrawRect.Left + (DrawRect.Right - DrawRect.Left) shr 1 -
            (TDBGrid(Sender).Canvas.TextWidth(StrValue) shr 1);
  // Pintar el texto
  TDBGrid(Sender).Canvas.TextRect(DrawRect, fLeft2,
                                  DrawRect.Top + SPACE_TO_CENTER_CELLTEXT, StrValue);
  // Restaurar
  TDBGrid(Sender).Canvas.Pen.Color := ActualPenColor;
  TDBGrid(Sender).Canvas.Brush.Color := ActualBrushColor;
end;


La franja horaria es GMT +2. Ahora son las 11:27:26.

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