![]() |
VirtualStringTree Item selektieren Problem beim Zeichnen
Ich habe mir dieses Beispiel (erste Antwort) angeguckt und es gefällt mir sehr
![]()
Delphi-Quellcode:
Es gibt nur ein Problem. Wenn man jetzt auf ein Item klickt, wird es nicht mehr selektiert-gezeichnet.
implementation
type PNodeRec = ^TNodeRec; TNodeRec = record Name: WideString; Count: Integer; IsBold: Boolean; end; procedure TForm1.FormCreate(Sender: TObject); var Node: PVirtualNode; NodeRec: PNodeRec; I: Integer; begin VirtualStringTree1.TreeOptions.StringOptions := VirtualStringTree1.TreeOptions.StringOptions + [toShowStaticText]; VirtualStringTree1.NodeDataSize := Sizeof(TNodeRec); // Populate some data for I := 1 to 10 do begin Node := VirtualStringTree1.AddChild(nil); NodeRec := VirtualStringTree1.GetNodeData(Node); Initialize(NodeRec^); NodeRec.Name := 'Node' + IntToStr(I); NodeRec.Count := I; NodeRec.IsBold := I mod 2 = 0; end; end; procedure TForm1.VirtualStringTree1GetText(Sender: TBaseVirtualTree; Node: PVirtualNode; Column: TColumnIndex; TextType: TVSTTextType; var CellText: WideString); var NodeRec: PNodeRec; begin NodeRec := PNodeRec(TVirtualStringTree(Sender).GetNodeData(Node)); if TextType = ttNormal then CellText := NodeRec^.Name else // ttStatic CellText := Format('(%d)', [NodeRec^.Count]); end; procedure TForm1.VirtualStringTree1PaintText(Sender: TBaseVirtualTree; const TargetCanvas: TCanvas; Node: PVirtualNode; Column: TColumnIndex; TextType: TVSTTextType); var NodeRec: PNodeRec; begin NodeRec := PNodeRec(TVirtualStringTree(Sender).GetNodeData(Node)); if TextType = ttNormal then begin if NodeRec^.IsBold then TargetCanvas.Font.Style := TargetCanvas.Font.Style + [fsBold]; end else // ttStatic TargetCanvas.Font.Color := clRed; end; Wie zeichne ich ein Item, dass es selektiert aussieht? |
AW: VirtualStringTree Item selektieren Problem beim Zeichnen
Zitat:
was verstehst Du denn darunter? Blauer Hintergrund, orangene Schriftfarbe? Dann trag es entsprechend ein. Da ich virtualstringtree nicht so genau kenne, wäre es u.U. hilfreich sich einmal die onClick Routine anzusehen. Gruß K-H |
AW: VirtualStringTree Item selektieren Problem beim Zeichnen
Kenne mich leider auch nicht so gut damit aus. Aber OnClick kann man dafür nicht benutzen soweit ich weiß.
ich dachte hiermit funktioniert es, tut es aber nicht.
Delphi-Quellcode:
procedure TForm1.VSTBeforeCellPaint(Sender: TBaseVirtualTree; TargetCanvas: TCanvas; Node: PVirtualNode;
Column: TColumnIndex; CellPaintMode: TVTCellPaintMode; CellRect: TRect; var ContentRect: TRect); begin // Variante 1 - funktioniert nicht // if TVirtualStringTree(Sender).Selected[Node] then // begin // TargetCanvas.Brush.Color := TVirtualStringTree(Sender).Colors.FocusedSelectionColor; // TargetCanvas.FillRect(CellRect); // end; // Variante 2 - funktioniert nicht // if TVirtualStringTree(Sender).FocusedNode = Node then // - FigVam // begin // TVirtualStringTree(Sender).Selected[Node] := True; // TargetCanvas.Brush.Color := $00FF0000; // TargetCanvas.FillRect(CellRect); // end; end; |
AW: VirtualStringTree Item selektieren Problem beim Zeichnen
Wenn Du eine
Delphi-Quellcode:
hast und die wird nach
VirtualStringTree1PaintText
Delphi-Quellcode:
ausgeführt, dann kannst Du Dir die
VSTBeforeCellPaint
Delphi-Quellcode:
auch schenken, wenn du in beiden Routinen das Gleiche machst.
VSTBeforeCellPaint
Gruß K-H |
AW: VirtualStringTree Item selektieren Problem beim Zeichnen
Hast du denn auch in den
Delphi-Quellcode:
den Schalter
TreeOptions.PaintOptions
Delphi-Quellcode:
und
toHideSelection
Delphi-Quellcode:
ausgeschaltet? Andernfalls wird keine Selection gezeichnet. Die sind zwar standardmäßig aus, aber ich weiß ja nicht, was du alles ausprobiert hast.
toAlwaysHideSelection
Du solltest auch das
Delphi-Quellcode:
rausnehmen. Was bezweckst du überhaupt damit? Du schränkst dich dadurch nur unnötig ein. So wie ich es weiß (und so steht es auch in der Hilfe) kann man StaticText nicht selektieren. Ob es daran jetzt schlussendlich liegt kann ich dir nicht sagen. Habe gerade kein Delphi zur Hand.
toShowStaticText
Zitat:
|
AW: VirtualStringTree Item selektieren Problem beim Zeichnen
Es wäre mal interessant zu wissen ob das nun funktioniert oder ob du den Fehler selbstständig gefunden hast. Nicht nur für mich interessant, sondern bestimmt auch für alle anderen die auch mal vor diesem Problem mit dem VST stehen.
|
Alle Zeitangaben in WEZ +1. Es ist jetzt 17:43 Uhr. |
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz