2011-08-29 9 views
6

staram się uzyskać wynik, który wygląda jak ten z TVirtualStringTree:Making widok z barem nagłówka jednej grupie, w wirtualnym widoku drzewa (TVirtualStringTree) master-detail

desired virtualtreeview appearance

wierzę, że może to być możliwe bezpośrednio z TVirtualStringTree (główna kontrolka Virtual Treeview przez Mike'a Lischke'a), lub poprzez jej podklasę i modyfikację dziedziczonego kontrolnego, lub przechodząc do TVirtualDrawTree.

Oto co mogę, i pokazuje problem, że czołowa:

actual vritualtreeview appearance

Mam problem jest, że nie może wydawać się uzyskać tekst na kolumny 0 do podjęcia cały poziomy obszar wirtualnej kontroli widoku drzewa. W demonstracji Zaawansowane znajduje się wirtualna demonstracja drzewa pokazująca tekst wielowierszowy, który wydaje się robić to, czego potrzebuję, ale nie jestem w stanie dowiedzieć się, jak zastosować go w połączeniu z kolumnami szczegółów, które potrzebuję poniżej wiersza nagłówka (pokazanego jako Węzeł, Węzeł, węzeł na zdjęciu).

Oto, co starałem:

  • Zmienić ContentRect.Right w przypadku BeforeCellPaint:
  • ustawiony na toGridExtensions w TreeOptions.MiscOptions.

Oto przykładowy kod pokazujący jak próbowałem zmienić contentRect:

procedure TForm1.VirtualStringTree1BeforeCellPaint(Sender: TBaseVirtualTree; 
    TargetCanvas: TCanvas; Node: PVirtualNode; Column: TColumnIndex; 
    CellPaintMode: TVTCellPaintMode; CellRect: TRect; var ContentRect: TRect); 
var 
    level:Integer; 
begin 
level := VirtualStringTree1.GetNodeLevel(Node); 
if (level=0) then 
    Inc(ContentRect.Right, 300); 

end; 

Aktualizacja:

Korzystanie odpowiedź akceptowane poniżej, mam następujące:

enter image description here

Odpowiedz

5

Myślę, że chcesz se toAutoSpanColumns opcja (w TreeOptions.AutoOptions), prawdopodobnie z wydarzeniem OnGetCellIsEmpty (nie powinna być potrzebna, jeśli zwracasz tekst tylko dla pierwszej kolumny).

Aby uzyskać multilinii węzły init, im ivsMultiline państwa (w przypadku OnInitNode) lub ustawić vtree.MultiLine[Node] := boolean;

+0

Brilliant! To działa po prostu świetnie. –

Powiązane problemy