AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Programmierung allgemein GUI-Design mit VCL / FireMonkey / Common Controls Delphi VST Repaint Prob mit externen Controls bei Columnsortierung
Thema durchsuchen
Ansicht
Themen-Optionen

VST Repaint Prob mit externen Controls bei Columnsortierung

Offene Frage von "richard_boderich"
Ein Thema von richard_boderich · begonnen am 25. Sep 2008 · letzter Beitrag vom 27. Sep 2008
Antwort Antwort
Benutzerbild von richard_boderich
richard_boderich

Registriert seit: 21. Jun 2004
Ort: Berlin
1.067 Beiträge
 
Delphi 7 Architect
 
#1

VST Repaint Prob mit externen Controls bei Columnsortierung

  Alt 25. Sep 2008, 16:09
Hallo allerseits!

Ich habe folgendes Problem mit dem VST. Im OnAfterdrawCell Event des VST weise ich ein TPRogressbar Control dem VST zu.
Das Problem ist, das wenn ich durch Klick auf den Column, nach dem Position property des Progressbars sortieren will, dann Sortiert der VST zwar korrekt, (sehe ich an den anderen Column Werten) Repaintet das ProgressbarControl jedoch nicht richtig.
Erst wenn ich etwas Runterscrolle und wieder zurück, wird das ProgressbarControl aktualisiert. Gibt es in dieser Hinsicht
bekannte Probleme mit dem VST. Ich habe auch nirgens eine Demosource gefunden, die das Integrieren von Customcontrols in
den VST vernünftig dokumentiert. Momentan verwende Ich diesen Code aus dem Forum, habe jedoch keine Ahnung ob das wirklich
der beste Weg ist.

Delphi-Quellcode:
type
  TNodeData = record
    Bar : TProgressBar;
    Caption : String;
    //das mit dem Record hab ich mir so angewöhnt :)
  end;
  PNodeData = ^TNodeData;

procedure Tform_Main.btn_AddItemClick(Sender: TObject);
var
  Node : PVirtualNode;
  NData : PNodeData;
begin
  Tv.BeginUpdate;

  Node:=Tv.AddChild(tv.RootNode);

  NData:=Tv.GetNodeData(Node);
  
  NData.Caption:=TimeToStr(Now);
  NData.Bar:=TProgressBar.Create(TV);
  NData.Bar.Parent:=Tv;
  Ndata.Bar.Position:=Random(Ndata.Bar.Max);

  Tv.EndUpdate;
end;

procedure Tform_Main.TVAfterCellPaint(Sender: TBaseVirtualTree;
  TargetCanvas: TCanvas; Node: PVirtualNode; Column: TColumnIndex;
  CellRect: TRect);
var
  NData : PNodeData;
begin
  if Column=1 then
  begin
    NData:=Tv.GetNodeData(Node);

    if Assigned(NData) then
    begin
      CellRect:=Tv.GetDisplayRect(Node,Column,false);
      NData.Bar.Left:=CellRect.Left;
      Ndata.Bar.Top:=CellRect.Top;
      NData.Bar.Width:=CellRect.Right-CellRect.Left;
      NData.Bar.Height:=CellRect.Bottom-CellRect.Top;
      //Ndata.Bar.PaintTo(TargetCanvas,CellRect.Left,CellRect.Top);
    end;
  end;
end;

procedure Tform_Main.TVGetText(Sender: TBaseVirtualTree; Node: PVirtualNode;
  Column: TColumnIndex; TextType: TVSTTextType; var CellText: WideString);
var
  NData : PNodeData;
begin
  NData:=Tv.GetNodeData(Node);
  CellText:=NData.Caption;
end;
mfG Richard

Cimmams schrieb "das einzige was an ArmA gut ist, ist die Grafik bis 100m und der Rest ist so unreal wie unsere Demokratie."
  Mit Zitat antworten Zitat
Benutzerbild von richard_boderich
richard_boderich

Registriert seit: 21. Jun 2004
Ort: Berlin
1.067 Beiträge
 
Delphi 7 Architect
 
#2

Re: VST Repaint Prob mit externen Controls bei Columnsortier

  Alt 26. Sep 2008, 16:28
*push*
mfG Richard

Cimmams schrieb "das einzige was an ArmA gut ist, ist die Grafik bis 100m und der Rest ist so unreal wie unsere Demokratie."
  Mit Zitat antworten Zitat
Benutzerbild von toms
toms
(CodeLib-Manager)

Registriert seit: 10. Jun 2002
4.648 Beiträge
 
Delphi XE Professional
 
#3

Re: VST Repaint Prob mit externen Controls bei Columnsortier

  Alt 26. Sep 2008, 16:33
Hallo Richard

Hast du schon probiert, die Progressbar oder den VST nach dem Sortieren zu aktualisieren
(.Repaint, .Refresh, etc) ?
Thomas
  Mit Zitat antworten Zitat
Benutzerbild von richard_boderich
richard_boderich

Registriert seit: 21. Jun 2004
Ort: Berlin
1.067 Beiträge
 
Delphi 7 Architect
 
#4

Re: VST Repaint Prob mit externen Controls bei Columnsortier

  Alt 26. Sep 2008, 19:25
@toms

Ich hab schon alles probiert. Update, Repaint, Refresh und Invalidate. Geholfen hat nichts davon. Es fehlt nach meiner Ansicht
dort auch ein entsprechender Event. OnAfterSortEnd oder so. Damit könnte man sich selber um das Zeichnen der Controls kümmern.
Das komische ist ja wie gesagt, das der VST die Nodes richtig sortiert und nur die Progressbar Controls nicht aktualisiert
werden. Erst wenn ich den VST scrolle wird die Darstellung aktualisiert, jedoch auch nur in dem Bereich der gescrollt wurde.
Der Rest zeigt nach wie vor falsche Werte.
mfG Richard

Cimmams schrieb "das einzige was an ArmA gut ist, ist die Grafik bis 100m und der Rest ist so unreal wie unsere Demokratie."
  Mit Zitat antworten Zitat
Benutzerbild von toms
toms
(CodeLib-Manager)

Registriert seit: 10. Jun 2002
4.648 Beiträge
 
Delphi XE Professional
 
#5

Re: VST Repaint Prob mit externen Controls bei Columnsortier

  Alt 26. Sep 2008, 19:33
Könntest du ein kleines Demo-Projekt anhängen?
Thomas
  Mit Zitat antworten Zitat
Benutzerbild von richard_boderich
richard_boderich

Registriert seit: 21. Jun 2004
Ort: Berlin
1.067 Beiträge
 
Delphi 7 Architect
 
#6

Re: VST Repaint Prob mit externen Controls bei Columnsortier

  Alt 27. Sep 2008, 12:12
Werde ich machen, weis jedoch nicht, ob ichs noch am Wochenende schaffe.
mfG Richard

Cimmams schrieb "das einzige was an ArmA gut ist, ist die Grafik bis 100m und der Rest ist so unreal wie unsere Demokratie."
  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 23:03 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