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> </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.