virtualtreeview : fullexpand und nodecount

Rund um die LCL und andere Komponenten
Antworten
arturx
Beiträge: 140
Registriert: Fr 21. Nov 2008, 11:29
OS, Lazarus, FPC: Winux (L 1.0.6.xy FPC 2.6.z)
CPU-Target: 32/64Bit

virtualtreeview : fullexpand und nodecount

Beitrag von arturx »

 
Ein virtualstringtree wird generiert (siehe Beispiel) :

Code: Alles auswählen

procedure generateVorggesData(vst : tvirtualstringtree);
     var pnode1,  pnode2 : pvirtualnode;
    begin
          pnode1  := vst.addChild(nil,nil);
          pnode2  := vst.addChild(pnode1,nil);
          vst.FullExpand(nil);
    end;
fullexpand macht nichts : es wird nichts ausgeklappt :
(am Anfang von fullexpand steht : If not froot.totalcount > 1 then exit;)
Beim debuggen fiel mir auf, dass froot^.totalcount = 1 ist. M.E. müsste er 2 betragen !?!
Wo liegt mein Denkfehler ? muss man den nodecount explizit setzen ?

virtualtreeview Version :4.0.17.26 stammt frisch vom repository :
https://lazarus-ccr.svn.sourceforge.net ... altreeview" onclick="window.open(this.href);return false;
https://lazarus-ccr.svn.sourceforge.net ... azarus-ccr" onclick="window.open(this.href);return false;

Benutzeravatar
theo
Beiträge: 10906
Registriert: Mo 11. Sep 2006, 19:01

Re: virtualtreeview : fullexpand und nodecount

Beitrag von theo »

Bei mir geht's, ich habe allerdings den "new"
https://lazarus-ccr.svn.sourceforge.net ... new/trunk/" onclick="window.open(this.href);return false;

arturx
Beiträge: 140
Registriert: Fr 21. Nov 2008, 11:29
OS, Lazarus, FPC: Winux (L 1.0.6.xy FPC 2.6.z)
CPU-Target: 32/64Bit

Re: virtualtreeview : fullexpand und nodecount

Beitrag von arturx »

Theo : Bei mir geht's, ich habe allerdings den "new"

als ich den new trunk installieren wollte, meckerte der compiler, dass er die LCLextensions bräuchte.
Nun nutze ich die 9.30 stable release und möchte nicht irgendwelche packages einbauen,
die die Nutzung des Winapi verbessern (so stands zumindestens im Internet)
Also habe ich nochmal frisch installiert (virttrees 4.0.17.26) von
https://lazarus-ccr.svn.sourceforge.net ... ltreeview/" onclick="window.open(this.href);return false;
und siehe da, das alte Verhalten tritt auf.
Es beruhigt mich, dass in Zukunft die Funktion in Ordnung zu sein scheint.
Es wäre nett, wenn Du mit Deinem Lazarus virtualtrees checken könntest (s.u.) :
---> bitte um kurze Nachricht, ob totalcount wirklich aktualisiert wird <----

Code: Alles auswählen

procedure TBaseVirtualTree.FullExpand(Node: PVirtualNode = nil);
var  Stop: PVirtualNode;
begin
  if FRoot.TotalCount > 1 then // <--- ist hier der totalcount >1 bei Dir ?????
      begin.....  end
end;
Zur aktuellen/vorläfigen Nutzung habe ich die Funktionalität nachgebildet :

Code: Alles auswählen

procedure TForm1.expandcollapsesub(node: pvirtualnode; doexpand : boolean);
      var sbn : pvirtualnode;
    begin If not assigned(node)
             then node := vst.RootNode;
          vst.Expanded[node] :=  doexpand;
          sbn := vst.GetFirstChild(node);
          while assigned(sbn) do
              begin expandcollapsesub(sbn,doexpand);
                    sbn := vst.GetNextSibling(sbn);
              end;
     end;
procedure TForm1.Bt_expandClick(Sender: TObject);
    begin vst.beginupdate;
          expandcollapsesub(nil,true); // false zum "collapsen"
          vst.EndUpdate;
    end;

Benutzeravatar
theo
Beiträge: 10906
Registriert: Mo 11. Sep 2006, 19:01

Re: virtualtreeview : fullexpand und nodecount

Beitrag von theo »

Nutz die neue Version. Die alte hat zu viele Bugs, da lohnt das tüfteln gar nicht.

LCLExtensions: http://code.google.com/p/luipack/" onclick="window.open(this.href);return false;

arturx
Beiträge: 140
Registriert: Fr 21. Nov 2008, 11:29
OS, Lazarus, FPC: Winux (L 1.0.6.xy FPC 2.6.z)
CPU-Target: 32/64Bit

Re: virtualtreeview : fullexpand und nodecount

Beitrag von arturx »

Nach Deinstallation des "alten" virtualtree-package und Neuinstallation der lclextensions und des neuen virtualtree-package läuft es !
(und froot.totalcount wird auf Werte > 1 gesetzt)
Theo sei Dank !
Ein kleiner Tip, für alle, die nach derselben Umstellung über die Fehlermeldung virtualtrees.lcl not found o.ä. stolpern :
Sowohl in den von virtualtreeview abhängigen packages ("package inspector" ) als auch in den Projekten (Projektinspektor) muss die Abhängigkeit von "virtualtrees.lcl" durch "virtualtreeview_package" ersetzt werden

Antworten