tôi đang cố gắng để có được một kết quả trông như thế này ra khỏi TVirtualStringTree:Làm một cái nhìn tổng thể-chi tiết với một thanh tiêu đề cho mỗi nhóm mục trong một TreeView ảo (TVirtualStringTree)
Tôi tin rằng nó có thể có thể trực tiếp với TVirtualStringTree
(kiểm soát Treeview ảo chính của Mike Lischke), hoặc bằng cách phân lớp nó và sửa đổi điều khiển kế thừa, hoặc bằng cách truy cập TVirtualDrawTree
.
Dưới đây là những gì tôi có thể nhận được, và cho thấy vấn đề mà tôi phải đối mặt:
Tôi có vấn đề là tôi dường như không thể nhận được văn bản cho cột từ 0 đến chiếm các toàn bộ diện tích nằm ngang của điều khiển treeview ảo. Có một bản demo treeview ảo trong bản demo nâng cao hiển thị văn bản nhiều dòng xuất hiện để làm những gì tôi cần, nhưng tôi không thể tìm ra cách áp dụng nó kết hợp với các cột chi tiết mà tôi cần bên dưới hàng tiêu đề (được hiển thị dưới dạng nút, Nút, Nút trong ảnh).
Đây là những gì tôi đã cố gắng:
- Sửa ContentRect.Right trong trường hợp BeforeCellPaint:
- thiết
toGridExtensions
trên trongTreeOptions.MiscOptions
.
Đây là một mẫu mã cho thấy làm thế nào tôi đã cố gắng để thay đổi 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;
Cập nhật:
Sử dụng câu trả lời được chấp nhận dưới đây, tôi nhận được như sau:
Brilliant! Điều đó hoạt động rất tốt. –