terça-feira, 10 de março de 2015

Exportar Dataset para arquivo html gerando tabela zebrada

procedure Exportar(DataSet: TDataSet; Arq: string; Ext: string);
var
  shtml     : widestring;
  htmlfile  : TextFile;
  i         : integer;
  AvailableFields: set of  TFieldType;
  bookmark : tbookmarkstr;
begin
  bookmark := dataset.Bookmark;
  DataSet.DisableControls;
  DataSet.First;
  AvailableFields:=[ftInteger, ftWideString, ftDate,  ftBcd, ftmemo, ftstring];
// --> cria o código html da página
  shtml:= ' '+#13#10;
  shtml:= shtml + ''</span>+dataset.<span class="me1">Name</span>+<span class="st0">'

' + #13#10;
  shtml:= shtml + '' + #13#10;
  shtml:= shtml + ''+#13+#10;
  shtml:= shtml + ''+#13+#10;
  //header da tabela
  shtml:= shtml + ''
+ #13#10;
  shtml:= shtml + ' ' + #13#10;
  for i:=0 to DataSet.FieldCount-1 do
  begin
    if DataSet.Fields[i].DataType in AvailableFields  then
    begin
      shtml:= shtml + '';
      shtml:= shtml +
              '' +
              DataSet.Fields.Fields[i].DisplayName +
              '';
      shtml:= shtml + '' + #13#10;
    end;
  end;{for}
  shtml:= shtml + '' + #13#10;

  //corpo da tabela
  while not DataSet.Eof do
  begin
    shtml:= shtml + ' ' + #13#10;
    for i:=0 to DataSet.FieldCount-1 do
    begin
      if DataSet.Fields.Fields[i].DataType in AvailableFields then
      begin
        if DataSet.Fields.Fields[i].DataType = ftBcd then
        begin
          shtml:= shtml + ''+ formatfloat('R$ ###,##0.00', DataSet.Fields.Fields[i].AsCurrency);
        end else
        begin
          shtml:= shtml + ''+DataSet.Fields.Fields[i].AsString;
          shtml:= shtml + '' + #13#10;
        end;
      end;
    end;{for}
    shtml:= shtml + '' + #13#10;
    DataSet.Next;
  end;{while}
  shtml:= shtml + '' + #13#10;
  //script para zebrar a tabela
  shtml:= shtml + ''+#13+#10;
  //finalizando a página
  shtml:= shtml + '';
// --> salva o arquivo html
  AssignFile(htmlfile,ChangeFileExt(Arq,'.'+Ext));
  Rewrite(htmlfile);
  WriteLn(htmlfile, shtml);
  CloseFile(htmlfile);
  DataSet.Bookmark := bookmark;
  DataSet.EnableControls;
end;

Nenhum comentário:

📌 Tela de Splash, Tela de Login e Tela Principal em Delphi: Aprendendo na Prática

  No desenvolvimento de sistemas, a experiência do usuário começa muito antes de utilizar as principais funcionalidades do software. Elemen...