was ist da falsch? TreeView zeigt mir die Header an, aber nicht die Nodes.
Ich fülle eine Treeview aus einer CSV-Datei mit unbekannter Anzahl Spalten. Daher in der Type-Definition ein Array.
Die Header baue ich auch zur Laufzeit - das klappt.
Dann lade ich die Nodes - RootNodeCount = 1145 nach dem Laden. Nodes werden aber nicht angezeigt.
Ersetze ich das Array durch einen String und lese nur die erste Spalte aus der CSV ein, erhalte ich eine Anzeige für jeden Node.
Ich hab schon erheblich komplexerer Strukturen im TreeView erfolgreich verarbeitet.
Aber hier sehe ich den Fehler einfach nicht. Hab's schon einen Tag liegen lassen. Manchmal muss einfach mal eine Pause machen um den eigenen Fehler zu sehen. Ohne Erfolg.
Code: Alles auswählen
type
  TImportColumn = Array[0..100] of string;
  TImportData = record
     Spalte : TImportColumn;
  end;
  PImportData = ^TImportData;
procedure TForm1.vstImportGetNodeDataSize(Sender: TBaseVirtualTree; var NodeDataSize: Integer);
begin
  vstImport.NodeDataSize:=SizeOf(TImportData);
end;
procedure TForm1.vstImportGetText(Sender: TBaseVirtualTree; Node: PVirtualNode;
  Column: TColumnIndex; TextType: TVSTTextType; var CellText: String);
var Data: PImportData;
begin
  Data := vstImport.GetNodeData(Node);
  CellText := Data^.Spalte[Column];
end;
procedure TForm1.FormShow(Sender: TObject);
var sZeile : String;
    iCol, iZeile : Integer;
    vtc : TVirtualTreeColumn;
    xNode : PVirtualNode;
    Data: PImportData;
    tslCSV : TStringList;
begin
  tslCSV.LoadFromFile('C:\Applikationen\TM1_Strukturen\Kostenarten.csv');
  vstImport.Clear;
  vstImport.Header.Columns.Clear;
  sZeile := ConvertEncoding(tslCSV.Strings[0],GuessEncoding(tslCSV.Strings[0]), EncodingUTF8);
  iColCount := ParseCount(';',sZeile);
  for iCol := 1 to iColCount do
  begin    
    s := Parse(';',sZeile,iCol);
    vtc := vstImport.Header.Columns.Add;	
    vstImport.Header.Columns[iCol-1].Style:=vsText;
    vstImport.Header.Columns[iCol-1].Options := [coAllowClick,coDraggable,coEnabled,coParentBidiMode,coResizable,coShowDropMark,coVisible,coAllowFocus,coEditable];
    vstImport.Header.Columns[iCol-1].Width:=100;
    vstImport.Header.Columns[iCol-1].Text:=s;
  end;
// füllen des Treeview aus der TStringlist
  for iZeile := 1 to tslCSV.Count-1 do
  begin
    sZeile := ConvertEncoding(tslCSV.Strings[iZeile],GuessEncoding(tslCSV.Strings[iZeile]), EncodingUTF8);
    XNode  := vstImport.AddChild(nil);
    Data := vstImport.GetNodeData(XNode);
    fillchar(data^,sizeof(data^),0);
    for iCol := 1 to iColCount do
       		Data^.Spalte[iCol-1] :=Parse(';',sZeile,iCol);
  end;
end;

 
 
 Verein
Verein 
 Links
Links Suche
Suche