Ir para conteúdo
Fórum Script Brasil
  • 0

(Resolvido) Gauge em DBGrid


Douglas Soares

Pergunta

Boa tarde, estou fazer um sistema de ftp e preciso colocar um gauge em cada campo PROGRESSO que está no DBGrid, nesse campo vou atualizar o valor do progresso de 0 a 100 e o gauge vai pegar esse valor pra si, no entanto gostaria de saber como adicionar os Gauges em tempo de execução nesse dbgrid e como atribuir valor a eles! P.S: se o nome de cada gauge criado fosse "Progresso" + Campo ID do meu CDS (o campo ID é do tipo AutoInc), dai ficava facil pra eu colocar o progress dele!

Obrigado!

Link para o comentário
Compartilhar em outros sites

7 respostass a esta questão

Posts Recomendados

  • 0

Sim eu li, estou + ou - isso, eu crio um panel em tempo de execução e adiciono um gauge nele em execução também, até aí beleza to conseguindo adicionar até 2 linhas no dbgrid q ele cria gauge... na terceira ele já começa dar acess violation :(

Olha o código:

procedure TfrmPrincipal.DBGrid2DrawColumnCell(Sender: TObject;
  const Rect: TRect; DataCol: Integer; Column: TColumn;
  State: TGridDrawState);
var
  DrawState: Integer;
  DrawRect: TRect;
  mypanel : TPanel;
  myprogress : TGauge;
  i : integer;
  jaexiste : boolean;
begin
  jaexiste := false;
  if not cdsUpload.IsEmpty then
  begin
  if cdsUpload.FieldByName('PROGRESSO').Value >= 0 then
  begin
     if Column.FieldName = 'PROGRESSO' then
     begin

     for i := 0 to frmPrincipal.ComponentCount - 1 do
     begin
     if TPanel(frmPrincipal.Components[i]).Name = 'mypanel' + cdsUpload.FieldByName('ID').AsString then
     begin
     jaexiste := true;
     Break;
     end;
     end;

     if jaexiste = false then
     begin
     ShowMessage('aff');
     mypanel := TPanel.Create(frmPrincipal);
     mypanel.Parent := TabSheet4;
     mypanel.Name := 'mypanel' + cdsUpload.FieldByName('ID').AsString;
     mypanel.Left := Rect.Left + DBGrid2.Left + 2;
     mypanel.Top := Rect.Top + DBGrid2.top + 2;
     mypanel.Width := Rect.Right - Rect.Left;
     mypanel.Height := Rect.Bottom - Rect.Top;
     mypanel.Visible := True;

     myprogress := TGauge.Create(frmPrincipal);
     myprogress.Parent := mypanel;
     myprogress.Name := 'myprogress' + cdsUpload.FieldByName('ID').AsString;
     myprogress.Align := alClient;
     end;
     TGauge('myprogress' + cdsUpload.FieldByName('ID').AsString).Progress := cdsUpload.FieldByName('PROGRESSO').Value;

     end;
  end;
  end;
end;

Abraços

Link para o comentário
Compartilhar em outros sites

  • 0

Seu exemplo não funciona comigo pois tenho 2 opções no DbGrid que optei em ativa-las: dgRowSelect e dgAlwaysShowSelection, e essas 2 desativam a opção dgEditing.... daí não acontece nada, o gauge não aparece nem o panel, ehehhe

Link para o comentário
Compartilhar em outros sites

  • 0

Consegui fazer minhas gambis ^^, agora seguinte, tá travando tudo mesmo com IDAntiFreeze fica dando uns laags, to com preguiça de fazer thread para o IDFtp, tem algum jeito de eu colocar o IDFTPOnWork em um JvThread do JediVcl???

Link para o comentário
Compartilhar em outros sites

Participe da discussão

Você pode postar agora e se registrar depois. Se você já tem uma conta, acesse agora para postar com sua conta.

Visitante
Responder esta pergunta...

×   Você colou conteúdo com formatação.   Remover formatação

  Apenas 75 emoticons são permitidos.

×   Seu link foi incorporado automaticamente.   Exibir como um link em vez disso

×   Seu conteúdo anterior foi restaurado.   Limpar Editor

×   Você não pode colar imagens diretamente. Carregar ou inserir imagens do URL.



  • Estatísticas dos Fóruns

    • Tópicos
      152,1k
    • Posts
      651,8k
×
×
  • Criar Novo...