AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Programmierung allgemein GUI-Design mit VCL / FireMonkey / Common Controls Delphi TreeViewPresenter mit SpinEdit in VirtualStringTree verwenden
Thema durchsuchen
Ansicht
Themen-Optionen

TreeViewPresenter mit SpinEdit in VirtualStringTree verwenden

Ein Thema von jus · begonnen am 1. Jun 2019 · letzter Beitrag vom 5. Jun 2019
Antwort Antwort
jus

Registriert seit: 22. Jan 2005
344 Beiträge
 
Delphi 2007 Professional
 
#1

TreeViewPresenter mit SpinEdit in VirtualStringTree verwenden

  Alt 1. Jun 2019, 20:39
Hallo,

ich habe eine Anwendung, die eine VirtualStringTree mit SpinEdits (siehe anbei Screenshot) enthält, das funktioniert auch sehr gut. Ich würde gerne nun die TreeViewPresenter (DSharp) zur Steuerung der VirtualStringTree einsetzen. Ich scheitere aber daran, dass die Platzierung der SpinEdits in VST durch den TreeViewPresenter nicht mehr durch den Befehl "VST.GetDisplayRect(node, 3, false)" funktioniert, da anscheinend der TreeViewPresenter es anders zeichnet. Hat wer dazu eine Idee?

Bisher mache ich die Grössenanspassung der SpinEdits in die VST Zelle so:
Delphi-Quellcode:
procedure TForm1.VSTColumnResize(Sender: TVTHeader; Column: TColumnIndex);
begin
  VST.IterateSubtree(nil, VSTCallback, nil);
end;

procedure TForm1.VSTCallback(Sender: TBaseVirtualTree; Node: PVirtualNode; Data: Pointer; var Abort: Boolean);
 var
  CellRect: TRect;
  d: TNodeData;
begin
  d:=TNodeData(VST.GetNodeData(node)^);

  CellRect:=VST.GetDisplayRect(node, 3, false);
  with d.SpinEdit do
  begin
    Left:=CellRect.Left;
    Width:=CellRect.Right-CellRect.Left;
    Top:=CellRect.Top;
    Height:=CellRect.Bottom-CellRect.Top;
  end;
end;

lg,
jus
Miniaturansicht angehängter Grafiken
vst.jpg  

Geändert von jus ( 1. Jun 2019 um 20:42 Uhr)
  Mit Zitat antworten Zitat
jus

Registriert seit: 22. Jan 2005
344 Beiträge
 
Delphi 2007 Professional
 
#2

AW: TreeViewPresenter mit SpinEdit in VirtualStringTree verwenden

  Alt 5. Jun 2019, 15:38
Hallo,

ich möchte für die Leute, die auch mal so was ähnliches machen wollen, rückmelden, dass ich mittlerweile den Fehler gefunden habe. Der Fehler lag eindeutig bei mir. Und zwar habe ich beim SpinEdit vegessen den Parent auf die TreeViewPresenter.Tree zu setzen, somit passen die CellRect Angaben
CellRect:=VST.GetDisplayRect(node, 3, false); von der VirtualStringTree mit SpinEdit Height/Width nicht mehr zusammen.

Derzeit kämpfe ich mit dem Problem, dass ich den Hintergrund von einigen Zellen der VST einfärben möchte. Bisher ohne TreeViewPresenter mache das so, dass ich in OnBeforeCellPaint den Hintergrund wie folgt zeichne.
Delphi-Quellcode:
procedure TForm1.VSTBeforeCellPaint(Sender: TBaseVirtualTree;
  TargetCanvas: TCanvas; Node: PVirtualNode; Column: TColumnIndex;
  CellPaintMode: TVTCellPaintMode; CellRect: TRect; var ContentRect: TRect);
var
  d: TNodeData;
begin
   d:=TNodeData(VST.GetNodeData(node)^);
  if Assigned(d) and Assigned(d.ReceivingItem) and (Column = 0) then
  begin
    if TReceivingItem(d.ReceivingItem).OrderedQuantity - (TReceivingItem(d.ReceivingItem).AlreadyReceivedQuantity + TReceivingItem(d.ReceivingItem).SpinEditValue) > 0 then
    begin
      TargetCanvas.Brush.Color := clWindow;
      TargetCanvas.FillRect(CellRect);
    end
    else
    begin
      TargetCanvas.Brush.Color := clMoneyGreen;
      TargetCanvas.FillRect(CellRect);
    end;
  end;
end;
Ich kann zwar im TreeViewPresenter eine Methode für das OnBeforeCellPaint Event anlegen. Da der TreeViewPresenter das Event von der VST aber vorher abgreift, wird das von mir angelegte Event nie ausgelöst. Aktuell habe ich auf quick&dirty Weise den Source von TreeViewPresenter angepaßt und es funktioniert. Aber falls jemand eine bessere Idee dazu haben sollte, bin ich ganz Ohr.

Lg,
jus
  Mit Zitat antworten Zitat
Antwort Antwort


Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 21:37 Uhr.
Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz