AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Thema durchsuchen
Ansicht
Themen-Optionen

VirtualTreeview -> HTML

Ein Thema von Peter666 · begonnen am 6. Apr 2019 · letzter Beitrag vom 7. Apr 2019
Antwort Antwort
Peter666

Registriert seit: 11. Aug 2007
357 Beiträge
 
#1

VirtualTreeview -> HTML

  Alt 6. Apr 2019, 20:09
Hallo,

gibt es zufällig eine moderne Variante wie man einen VirtualStringTree mit mehreren Nodes in HTML exportiert? Die Routine in Virtualtreeview nutzt table und bei großen Tabellen mit mehreren Sub Nodes wird das nunja groß, unübersichtlich und schaut fürchterlich aus.

Peter
  Mit Zitat antworten Zitat
DieDolly

Registriert seit: 22. Jun 2018
2.175 Beiträge
 
#2

AW: VirtualTreeview -> HTML

  Alt 6. Apr 2019, 20:21
Wenn du deine Daten vom VST getrennt hast und die alle in einer Liste liegen, würde ich die Liste durchgehen und alles per Hand exportieren. Dann hat man auch zu 100% das Resultat was man möchte.

Wenn deine Daten noch nicht getrennt sind und du AddChild benutzt, dann würde ich das als erstes umschreiben.
  Mit Zitat antworten Zitat
Peter666

Registriert seit: 11. Aug 2007
357 Beiträge
 
#3

AW: VirtualTreeview -> HTML

  Alt 7. Apr 2019, 09:33
Danke für die Antwort. Das Problem ist, dass ich einen Stream auswerte und die Ergebnisse aufbereitet in dem Virtualtreeview speichere. Da noch eine zusätzliche Baumstruktur zu hinterlegen ist doppelgemoppelt. Was ich aber jetzt gemacht habe ist die Passage für den HTML Export zu extrahieren und alles was dort mit css zu tun hat, habe ich entfernt.

Falls jemand den Code dazu brauchen sollte:

Delphi-Quellcode:
function ContentToHTML(ATree: TVirtualStringTree): String;
var
  Buffer: TBufferedUTF8String;
  I,J : Integer;
  Level, MaxLevel: Cardinal;
  Save, Run: PVirtualNode;
  Text: String;

  RenderColumns: Boolean;
  Columns: TColumnsArray;
  Index: Integer;

begin
  Buffer := TBufferedUTF8String.Create;
  try
    Buffer.Add('<table>');
    Buffer.AddNewLine;

    Columns := nil;
    RenderColumns := ATree.Header.UseColumns;
    if RenderColumns then
      Columns := ATree.Header.Columns.GetVisibleColumns;

    Run := ATree.GetFirst;
    Save := Run;

    MaxLevel := 0;
    while Assigned(Run) do
    begin
          Level := ATree.GetNodeLevel(Run);
          if Level > MaxLevel then
            MaxLevel := Level;
      Run := ATree.GetNext(Run);
    end;

    if RenderColumns then
    begin
      Buffer.Add('<tr>');
      Buffer.AddNewLine;
      // Make the first row in the HTML table an image of the tree header.
      for I := 0 to High(Columns) do
      begin
        Buffer.Add('<th>');
        if Length(Columns[I].Text) > 0 then
          Buffer.Add(Columns[I].Text);
        Buffer.Add('</th>');
      end;
      Buffer.Add('</tr>');
      Buffer.AddNewLine;
    end;

    Run := Save;
    while Assigned(Run) do
    begin
      Level := ATree.GetNodeLevel(Run);
      Buffer.Add('<tr>');
      Buffer.AddNewLine;

      I := 0;
      while (I < Length(Columns)) or not RenderColumns do
      begin
        if RenderColumns then
          Index := Columns[I].Index
        else
          Index := NoColumn;

        if not RenderColumns or (coVisible in Columns[I].Options) then
        begin
          if Index = ATree.Header.MainColumn then
            // Create a cell for each indentation level.
              for J := 1 to Level do
                Buffer.Add('<td>&nbsp;</td>');

          Buffer.Add(' <td>');
          Text := ATree.Text[Run, Index];
          if Length(Text) > 0 then
            Buffer.Add(Text);
          Buffer.Add('</td>');
        end;

        if not RenderColumns then
          Break;
        Inc(I);
      end;
      Run := ATree.GetNext(Run);
      Buffer.Add(' </tr>');
      Buffer.AddNewLine;
    end;
    Buffer.Add('</table>');

    Result := Buffer.AsUTF8String;
  finally
    Buffer.Free;
  end;
end;
Ich werde nun die ganzen Table Referenzen durch divs ersetzen.
  Mit Zitat antworten Zitat
Antwort Antwort


Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 07:54 Uhr.
Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz