Hello, I have noticed that the AppGet takes a while to populate the tree also. Perhaps there is just too much memory management going on.
Is it possible to only populate open branches with data? It would then cause a brief slowdown when the branch is expanded, but not the extreme deals you appear to be encountering. If the tree controller has to do a garbage collection every 20 records or so, that could certainly slow down performance. Best wishes, Jonathan Cohn > On 9 Apr 2016, at 15:28, David via Scripting > <scripting@lists.window-eyes.com> wrote: > > Got a project running here, where I could use a bit of educated feedback. > > Imagine you have a selection of say 1000 CDs. You decide to catalogue all > your collection. You want to divide it into categories, and subcategories. > Even, under each subcategory, you may decide it would be nice to sorte each > title under its artist. And, somewhere in that herachi, you want to sort by > country of origin, and genre of the album. Poof, there we have one > description that might parallel with my project. > > To best handle the categorizing issue, I thought to have things lined up in a > treeview. And I have the XML dialog and all the coding up going at the > moment. Things categorizes pretty nicely, and it is quite easy to navigate > the tree, decide on the title you want, and have the further operation > performed from there, once I decide on what to do with the selected title. > > To give a bit of background, my "baby"-state of the project was done without > categories, and just lined up all titles in a listbox. > > Now, that everything is working, another issue arises, and that is where I > was looking for some feedback. > > When I had things just showing up in a simple listbox, populating this > listbox was done in a second or two - even with nearly 1000 entries. As I > moved into the tree-structure of my project, I am met with another reality. I > can start the dialog, and it will take anything between 2 and 4 minutes for > the computer to populate the tree. At the most, I'd say there is 5 levels on > the tree. In the root of the tree, you will find approximately 40-50 entries > (main categories). > > I thought maybe something was wrong with my code. so I dropped out the lines > of code that inserts the very "leaves" - if you want to name them so - that > is, the titles of the albums. In reality, now we only have a treeview, with > main categories, subcategories, and artist names. No album titles. In this > state, the tree populates in a few seconds. Once I re-insert the lines that > populate the last level, that is the album titles, and that is where the big > number of entries comes in, things are back to the real slow processing time. > > For inserting the Album title, I am using the same method as when creating > the different branch levels. That is, first to create a TV.NewItem, fill in > its Text and Data properties. Next, create an object pointing to the Parent > Branch, in my example the Artist name. And, finally, using the Children > method to Insert the entry of mine. > > Dim ArtistName: ArtistName = "Jim Reeves" > Dim TVEntry: Set TVEntry = TV.NewItem > TVEntry.Text = "Best Of" > TVEntry.Data = 198901 > Dim TVBranch: Set TVBranch = TV( ArtistName) > TVBranch.Children.Insert TVEntry, TVILast > > This is a simplified snip-it of the code. I have not taken any security steps > in this snip-it. > > What puzzles me, is why it takes so long to populate all the different > branches, with all the titles. As I stated, creating a tree with no "leaves", > only all the Category an subcategory-branches, took little or no time to > populate. And even filling a Listbox - although a far simpler constructed > control - did not take an eternity either. > > Questions for your consideration, would be: > - Is a Treeview supposed to be that slow to fill? > > - Am I overlooking something here, maybe, that could cause this slow > processing? I.e, could I have used another method of inserting the last level? > - One alternative is, of course, to have all the categories and > subcategories show up in a treeview, and when the user have decided on the > one he wants to explore, he would tab over to a listbox that contains all the > entries in this subcategory. Haven't tried that last approach, and really > would have loved not to do it either, if possible. But I cannot afford to > leave the user with a several minutes long processing time, just for his > collection to be opened on the screen. > > Worst thing is, that I loose speech while the tree is populated. So seemingly > I cannot even ask the user to do other computing while he is awaiting the > long processing. I just wondered if the very nature of the tree-structure > conrol, is such that it only is an effecient way of displaying a few entries? > > Sorry for a rather lengthy explanation, but hope it all made a bit of sense. > As you may understand from the nature of the project, the individual entries > on the tree, are quite dynamic, so will have to insert them on the fly, and > cannot hard-code much other than the filling process, and then leave it to > the user to make the actual entries. Thanks for any feedback in this regard. > > > -- > David > > _______________________________________________ > Any views or opinions presented in this email are solely those of the author > and do not necessarily represent those of Ai Squared. > > For membership options, visit > http://lists.window-eyes.com/options.cgi/scripting-window-eyes.com/jon.c.cohn%40gmail.com. > For subscription options, visit > http://lists.window-eyes.com/listinfo.cgi/scripting-window-eyes.com > List archives can be found at > http://lists.window-eyes.com/private.cgi/scripting-window-eyes.com _______________________________________________ Any views or opinions presented in this email are solely those of the author and do not necessarily represent those of Ai Squared. For membership options, visit http://lists.window-eyes.com/options.cgi/scripting-window-eyes.com/archive%40mail-archive.com. For subscription options, visit http://lists.window-eyes.com/listinfo.cgi/scripting-window-eyes.com List archives can be found at http://lists.window-eyes.com/private.cgi/scripting-window-eyes.com