DICAS

Visite a biblioteca de dicas da comunidade.

Saiba mais

ARTIGOS

Abordagens detalhadas sobre assuntos diversos.

Saiba mais

INICIANTES

Aprenda a programar de um modo simples e fácil.

Saiba mais

DOWNLOADS

Acesse os materiais exclusivos aos membros.

Saiba mais
voltar

Componente UCControlHistorico

Visualizando 6 posts - 1 até 6 (de 6 do total)
  • Autor
    Posts
  • #3405
    Antonio Campos
    Participante

    Apos realizar alteração e tentar verificar pelo Histórico de Tabelas utilizando o componente UCControlHistorico, na StringGrid os dados são exibidos de forma errada e não conseguimos identificar qual campo foi realizado a alteração.

    Para corrigir acesse o diretório UserControl SD\Source\Historico.

    Nele terá um arquivo chamando UCHist_Form.

    Na linha: 377 está assim:
    List.Text := DataSource1.DataSet.FieldValues[‘Obs’];

    Alterei esse mesma linha para:
    List.Text := DataSource1.DataSet.FieldByName(‘Obs’).AsString;

    Salve o arquivo e compile o projeto novamente, com isso o formulário FrmHistorico irá lista de forma estrutura as alterações realizada, e será de fácil compreensão verificar quais campos dos registros foram alteradas.

    #3407

    Oi Antonio, ótimo, vamos ver já para aplicar no projeto.

    #3408

    Aplicado Antonio, podes atualizar os fontes.

    #3428
    Antonio Campos
    Participante

    Obrigado pelo retorno.

    #5329
    mariodosreis
    Participante

    Bem pior do que isso é aquando do registo no histórico de apenas os campos alterados! Na maioria das vezes, não dá para perceber a que registo da tabela/ficheiro pertence a alteração. Falta o elemento de identificação unívoca PKey ou outro. Tabém parece que no unit UCHist_Form este código ou semelhante ajudaria muito; deixo ao V/criterio a sua implementação “Oficial” ou não:
    procedure TFrmHistorico.StringGrid1DrawCell(Sender: TObject; ACol,
    ARow: Integer; Rect: TRect; State: TGridDrawState);
    Var sa, sb:string;
    begin
    // 1.º evolui sobre a coluna depois sobre a linha
    if ACol=1 then
    sa:=Trim(StringGrid1.Cells[ACol,ARow])
    else
    if ACol>1 then
    sa:=Trim(StringGrid1.Cells[ACol-1,ARow]);

    if ACol=2 then
    sb:=Trim(StringGrid1.Cells[ACol,ARow]) ;

    if ACol =2 then
    if ARow>1 then
    if ( sb <> sa ) then
    begin
    StringGrid1.Canvas.Brush.Color := $00940A4B;
    StringGrid1.Canvas.Font.Style := [fsBold];
    StringGrid1.Canvas.Font.Color := clYellow; // clHighlightText;

    StringGrid1.Canvas.FillRect(Rect);
    StringGrid1.Canvas.TextOut(Rect.Left+2,Rect.Top+2,StringGrid1.Cells[ACol, ARow]);
    end ;
    end;

    Abraço
    Mário

    #5628

    Boa tarde Mário, podemos marcar uma conversa por áudio, talvez podemos encontrar juntos uma solução mas rápida.

Visualizando 6 posts - 1 até 6 (de 6 do total)
  • Você deve fazer login para responder a este tópico.

Ir ao topo
© 2024 Infus Soluções em Tecnologia - Todos os Direitos Reservados