1)
procedure VSTBeforeItemErase(
Sender: TBaseVirtualTree; TargetCanvas: TCanvas; Node: PVirtualNode;
ItemRect: TRect; var ItemColor: TColor;
var EraseAction: TItemEraseAction);
begin
EraseAction := eaColor;
ItemColor := clLime;
end;
2) Der Einzug für jede Box einzeln Prüfknoten Einstellung ist IMHO unmöglich. Die Baumstruktur verfügt über die Indent-Eigenschaft, mit der die Einrückung für alle Knoten (einschließlich ihrer Kontrollkästchen) festgelegt wird. Intern werden die Methoden AdjustCoordinatesByIndent und PaintCheckImage aufgerufen, beide sind jedoch für Sie ausgeblendet. Änderung von einem von ihnen kann Ihnen helfen, aber Sie müssen sehr spezifisch sein, würde ich sagen, das Beste wäre, Ihren eigenen Bauteilnachkomme zu verursachen.
Wenn Sie etwas auf der Eigenschaftenseite des erweiterten Beispiels erstellen möchten, müssen Sie Knoten zu mehr als einer Ebene in der Baumhierarchie hinzufügen.
Für Ihre Inspiration ...
var CurrentNode: PVirtualNode;
CurrentSubnode: PVirtualNode;
begin
VirtualStringTree1.Indent := 50; // this increases indention for all nodes in the tree
CurrentNode := VirtualStringTree1.AddChild(nil); // create a node to the root
CurrentNode.CheckType := ctCheckBox; // check support of a node
CurrentSubnode := VirtualStringTree1.AddChild(CurrentNode); // create a subnode to your first node
CurrentSubnode.CheckType := ctCheckBox; // check support of a node
end;
Willkommen bei SO! Zwei Fragen sollten zwei Fragen zu SO entsprechen. Was ist, wenn jemand die Antwort auf eine Ihrer Fragen kennt? Ist das eine Antwort auf Ihre kombinierte Frage? – jpfollenius
1) Und möchten Sie die ganze Zeile auswählen oder jeden Zeilenhintergrund ändern? –
können Sie gut sein * Der 16 Jahre alte Computer Wiz * (sic), aber wirklich, könnten Sie bitte nicht Ihren echten Account hier eher proliferierende personas verwenden ?! –