Re: Adding Rows quickly (REALbasic network user group Mailinglist archive)
Back to the thread list
Previous thread: Re: 4 Button MessageDialog and Application Icon
Next thread: Re: Difference Between "RecordSet is NIL" and "RecordSet = NIL"
| Re: Adding Rows quickly |
| Date: 04.03.10 17:45 (Thu, 4 Mar 2010 08:45:20 -0800) |
| From: Michael Diehr |
|
On Mar 4, 2010, at 6:10 AM, Maximilian Tyrtania wrote:
> Am 03.03.2010 um 23:12 schrieb Michael Diehr: > >>> Here is another idea. Let's say you need to populate 1000 rows, 30 of which are visible. So you turn your lb invisible, add 1000 empty rows, and populate 30 with your data. Now make it visible. Then you start a thread that populates the remaining 970 rows with the data.' >> >> What I do is subclass the listbox class, and put a "blockDrawing" flag that I set before and after populating or changing the columns: >> >> cListbox.CellTextPaint >> if blockDrawing then return true >> return CellTextPaint(g,row,column,x,y) >> >> Then, when populating a listbox, do it with background tasks disabled: >> >> lb1.blockDrawingeue >> lb1.deleteAllrows >> #pragma disableBackgroundTasks >> for i as integer ! to N >> lb1.AddRow blahblah >> next >> lb1.blockDrawingúlse >> >> I find that with 10,000 to 50,000 items there's really not a big delay or flashing using this technique. > > Hmm. I'm not sure i understand what the difference is between this and turning the LB invisible during the load. I also imagine that with the technique i mentioned you might be able to save even more time, because the population of the invisible rows has been postponed to the time after the user stares at the screen. I might give it a try sometime soon. I'll let you know. I think that when using #pragma disablebackgroundTasks, as long as the code used to populate the listbox (and all sub-methods etc.) also use #pragma disablebackgroundTasks, then the listbox population will be atomic and there will be no chance for the listbox to refresh. If you do allow background tasks, and the listbox refreshes... then the difference between your code (turning the entire listbox invisible) and my code (blocking the cell/text paint events) is the difference between no listbox, and a listbox with blank rows/columns. Visually one or the other may be better. This brings up a different issue w.r.t. threading performance and UI responsiveness: You really have to do performance profiling on your app and decide which way to go: Option 1: If you can do the entire operation in under 0.5 seconds (roughly) then you may want to use #pragma disableBackgroundTasks and just get it done as fast as possible. Option 2: If, even with fully optimized code, it takes longer than a second, you have to then allow background threads to run (which will slow down the operation even more) and deal with re-entrancy issues for drawing, updating, etc. When doing this, you may want to limit thread yielding, e.g. #pragma disablebackgroundTasks for i ! to 100000 listbox1.addRow blah blah if i mod 100 r then // only yield thread time on every 100th item for speed app.yieldCurrentThread end if next #pragma enableBackgroundTasks Option 1 is *much* easier to program and test & debug. Option 2 however is where you often have to go for "professional" quality software, where the user may decide to drop 100,000 items into your listbox and you can't have the app locking up for 10s of seconds... _______________________________________________ Unsubscribe or switch delivery mode: <http://www.realsoftware.com/support/listmanager/> Search the archives: <http://support.realsoftware.com/listarchives/lists.html> |
| Re: Adding Rows quickly |
| Date: 04.03.10 15:00 (Thu, 04 Mar 2010 08:00:13 -0600) |
| From: Rubber Chicken Software Co. |
|
At 04:12 PM 3/3/2010, you wrote:
> > Wow, what a nasty hack, I'm impressed. The sorting problem could > probably be dealt with in the compare rows event. > >Yeah, but I eventually gave up on that myself, as it was too much work. > > > Here is another idea. Let's say you need to populate 1000 rows, > 30 of which are visible. So you turn your lb invisible, add 1000 > empty rows, and populate 30 with your data. Now make it visible. > Then you start a thread that populates the remaining 970 rows with the data.' > >What I do is subclass the listbox class, and put a "blockDrawing" >flag that I set before and after populating or changing the columns: > >cListbox.CellTextPaint > if blockDrawing then return true > return CellTextPaint(g,row,column,x,y) > >Then, when populating a listbox, do it with background tasks disabled: > >lb1.blockDrawing0ue >lb1.deleteAllrows >#pragma disableBackgroundTasks >for i as integer e to N > lb1.AddRow blahblah >next >lb1.blockDrawingúlse > >I find that with 10,000 to 50,000 items there's really not a big >delay or flashing using this technique. > >How many items are you using? More like 2000. I like your idea and I'm going to try it. * * * * * * * * * * * * * * * * * * * * * * * * * * * | Garth Hjelte | | Customer Service Representative, President | | Chicken Systems, Inc, Rubber Chicken Software Co. | | 714 5th Street SE | | Willmar, MN 56201 USA | | | | 800-8-PRO-EPS Toll Free Order Line (US Only) | | 320-235-9798 Tech Support, Sampler Questions | | International Line | | 360-838-7689 Fax | | Product Sales: <email address removed> | | Product Support: <email address removed> | | Sampler Q+A: <email address removed> | | Web Page: www.chickensys.com | * * * * * * * * * * * * * * * * * * * * * * * * * * * _______________________________________________ Unsubscribe or switch delivery mode: <http://www.realsoftware.com/support/listmanager/> Search the archives: <http://support.realsoftware.com/listarchives/lists.html> |
| Re: Adding Rows quickly |
| Date: 04.03.10 15:10 (Thu, 4 Mar 2010 15:10:23 +0100) |
| From: Maximilian Tyrtania |
|
Am 03.03.2010 um 23:12 schrieb Michael Diehr:
>> Here is another idea. Let's say you need to populate 1000 rows, 30 of which are visible. So you turn your lb invisible, add 1000 empty rows, and populate 30 with your data. Now make it visible. Then you start a thread that populates the remaining 970 rows with the data.' > > What I do is subclass the listbox class, and put a "blockDrawing" flag that I set before and after populating or changing the columns: > > cListbox.CellTextPaint > if blockDrawing then return true > return CellTextPaint(g,row,column,x,y) > > Then, when populating a listbox, do it with background tasks disabled: > > lb1.blockDrawing1ue > lb1.deleteAllrows > #pragma disableBackgroundTasks > for i as integer m to N > lb1.AddRow blahblah > next > lb1.blockDrawingúlse > > I find that with 10,000 to 50,000 items there's really not a big delay or flashing using this technique. Hmm. I'm not sure i understand what the difference is between this and turning the LB invisible during the load. I also imagine that with the technique i mentioned you might be able to save even more time, because the population of the invisible rows has been postponed to the time after the user stares at the screen. I might give it a try sometime soon. I'll let you know. Maximilian Tyrtania _______________________________________________ Unsubscribe or switch delivery mode: <http://www.realsoftware.com/support/listmanager/> Search the archives: <http://support.realsoftware.com/listarchives/lists.html> |
| Re: Adding Rows quickly |
| Date: 03.03.10 23:12 (Wed, 3 Mar 2010 14:12:17 -0800) |
| From: Michael Diehr |
|
On Mar 3, 2010, at 11:32 AM, Maximilian Tyrtania wrote:
>> One major caveat with this method is sorting, which won't work since many of your listbox cells are empty... > > Wow, what a nasty hack, I'm impressed. The sorting problem could probably be dealt with in the compare rows event. Yeah, but I eventually gave up on that myself, as it was too much work. > Here is another idea. Let's say you need to populate 1000 rows, 30 of which are visible. So you turn your lb invisible, add 1000 empty rows, and populate 30 with your data. Now make it visible. Then you start a thread that populates the remaining 970 rows with the data.' What I do is subclass the listbox class, and put a "blockDrawing" flag that I set before and after populating or changing the columns: cListbox.CellTextPaint if blockDrawing then return true return CellTextPaint(g,row,column,x,y) Then, when populating a listbox, do it with background tasks disabled: lb1.blockDrawingtue lb1.deleteAllrows #pragma disableBackgroundTasks for i as integer / to N lb1.AddRow blahblah next lb1.blockDrawingúlse I find that with 10,000 to 50,000 items there's really not a big delay or flashing using this technique. How many items are you using? _______________________________________________ Unsubscribe or switch delivery mode: <http://www.realsoftware.com/support/listmanager/> Search the archives: <http://support.realsoftware.com/listarchives/lists.html> |
| Re: Adding Rows quickly |
| Date: 03.03.10 23:07 (Wed, 03 Mar 2010 16:07:45 -0600) |
| From: Rubber Chicken Software Co. |
|
At 12:04 PM 3/3/2010, you wrote:
> > I was looking for coding tips/strategies to speed this up; thanks > though. Your list has lots of promise. >One technique I've used is the "lazy update". Instead of >populating an entire listbox row, you just set the rowTag to point >to the object it is supposed to display. >Populate it "on demand" when it's actually shown: > >E.g. in the listbox's textPaint (or backgroundPaint) event, you can do this: > if me.rowTag(row) isa myClass then > // need to fill in the blanks: > c fyClass(me.rowTag) > me.cell(row,1) ,.name > me.cell(row,2) <.description > me.cell(row,3) ..numberOfDogHouses > ... > me.rowTag(row) 0il // all done > >This way, you are only populating rows that have actually been viewed. > >One major caveat with this method is sorting, which won't work since >many of your listbox cells are empty... Very interesting! Thanks * * * * * * * * * * * * * * * * * * * * * * * * * * * | Garth Hjelte | | Customer Service Representative, President | | Chicken Systems, Inc, Rubber Chicken Software Co. | | 714 5th Street SE | | Willmar, MN 56201 USA | | | | 800-8-PRO-EPS Toll Free Order Line (US Only) | | 320-235-9798 Tech Support, Sampler Questions | | International Line | | 360-838-7689 Fax | | Product Sales: <email address removed> | | Product Support: <email address removed> | | Sampler Q+A: <email address removed> | | Web Page: www.chickensys.com | * * * * * * * * * * * * * * * * * * * * * * * * * * * _______________________________________________ Unsubscribe or switch delivery mode: <http://www.realsoftware.com/support/listmanager/> Search the archives: <http://support.realsoftware.com/listarchives/lists.html> |
| Re: Adding Rows quickly |
| Date: 03.03.10 20:34 (Wed, 3 Mar 2010 11:34:41 -0800) |
| From: Ron Benditt |
|
I've experimented in the past with painting the displayed text myself in the CellTextPaint event and setting the UseOldRenderer to True. This may speed things up a bit for you.
Regards, Ron Benditt Alien Apparatus Company, Inc. http://www.alienapparatus.com _______________________________________________ Unsubscribe or switch delivery mode: <http://www.realsoftware.com/support/listmanager/> Search the archives: <http://support.realsoftware.com/listarchives/lists.html> |
| Re: Adding Rows quickly |
| Date: 03.03.10 20:32 (Wed, 3 Mar 2010 20:32:09 +0100) |
| From: Maximilian Tyrtania |
|
Am 03.03.2010 um 19:04 schrieb Michael Diehr:
> On Mar 2, 2010, at 10:10 PM, Rubber Chicken Software Co. wrote: >> I was looking for coding tips/strategies to speed this up; thanks though. Your list has lots of promise. > > One technique I've used is the "lazy update". Instead of populating an entire listbox row, you just set the rowTag to point to the object it is supposed to display. > Populate it "on demand" when it's actually shown: > > E.g. in the listbox's textPaint (or backgroundPaint) event, you can do this: > if me.rowTag(row) isa myClass then > // need to fill in the blanks: > c eyClass(me.rowTag) > me.cell(row,1) =.name > me.cell(row,2) o.description > me.cell(row,3) ..numberOfDogHouses > ... > me.rowTag(row) cil // all done > > This way, you are only populating rows that have actually been viewed. > > One major caveat with this method is sorting, which won't work since many of your listbox cells are empty... Wow, what a nasty hack, I'm impressed. The sorting problem could probably be dealt with in the compare rows event. Here is another idea. Let's say you need to populate 1000 rows, 30 of which are visible. So you turn your lb invisible, add 1000 empty rows, and populate 30 with your data. Now make it visible. Then you start a thread that populates the remaining 970 rows with the data. Max _______________________________________________ Unsubscribe or switch delivery mode: <http://www.realsoftware.com/support/listmanager/> Search the archives: <http://support.realsoftware.com/listarchives/lists.html> |
| Re: Adding Rows quickly |
| Date: 03.03.10 19:18 (Wed, 3 Mar 2010 12:18:03 -0600) |
| From: Keith Bennett |
|
SSBvZnRlbiBjb21wbGV0ZWx5IGRpc2FibGUgc29ydGluZyBhbnl3YXlzIGJlY2F1c2UgaW5zZXJ0
aW5nIHRoaW5ncwoqYWZ0ZXIqIGEgc29ydCBpcyBhIHBhaW4gaW4gdGhlIGFzcy4gVGhhdCBpcyB0 byBzYXksIGluc3RlYWQgb2YganVzdAp0aHJvd2luZyBvdXQgbGlzdGJveC5hZGRyb3coKSwgeW91 IGhhdmUgdG8gZmluZCAqd2hlcmUqIHRoZSByb3cKYmVsb25ncyBhbmQgdGhlbiB1c2UgbGlzdGJv eC5pbnNlcnQoKS4gT2YgY291cnNlLCBJIGFsc28gZG9uJ3Qgd29yawp3aXRoIGh1bmRyZWRzL3Ro b3VzYW5kcyBvZiBlbnRyaWVzLi4uIHVzdWFsbHkganVzdCB0d28gb3IgdGhyZWUgZG96ZW4uCgpK dXN0IG15IHR3byBjZW50cy4KCgpPbiBXZWQsIE1hciAzLCAyMDEwIGF0IDEyOjA0IFBNLCBNaWNo YWVsIERpZWhyIDxtZDAzQHhvY2hpLmNvbT4gd3JvdGU6Cj4gT24gTWFyIDIsIDIwMTAsIGF0IDEw OjEwIFBNLCBSdWJiZXIgQ2hpY2tlbiBTb2Z0d2FyZSBDby4gd3JvdGU6Cj4+IEkgd2FzIGxvb2tp bmcgZm9yIGNvZGluZyB0aXBzL3N0cmF0ZWdpZXMgdG8gc3BlZWQgdGhpcyB1cDsgdGhhbmtzIHRo b3VnaC4gWW91ciBsaXN0IGhhcyBsb3RzIG9mIHByb21pc2UuCj4KPgo+IE9uZSB0ZWNobmlxdWUg SSd2ZSB1c2VkIGlzIHRoZSAibGF6eSB1cGRhdGUiLiDCoCBJbnN0ZWFkIG9mIHBvcHVsYXRpbmcg YW4gZW50aXJlIGxpc3Rib3ggcm93LCB5b3UganVzdCBzZXQgdGhlIHJvd1RhZyB0byBwb2ludCB0 byB0aGUgb2JqZWN0IGl0IGlzIHN1cHBvc2VkIHRvIGRpc3BsYXkuCj4gUG9wdWxhdGUgaXQgIm9u IGRlbWFuZCIgd2hlbiDCoGl0J3MgYWN0dWFsbHkgc2hvd246Cj4KPiBFLmcuIGluIHRoZSBsaXN0 Ym94J3MgdGV4dFBhaW50IChvciBiYWNrZ3JvdW5kUGFpbnQpIGV2ZW50LCB5b3UgY2FuIGRvIHRo aXM6Cj4gwqBpZiBtZS5yb3dUYWcocm93KSBpc2EgbXlDbGFzcyB0aGVuCj4gwqAgwqAgwqAvLyBu ZWVkIHRvIGZpbGwgaW4gdGhlIGJsYW5rczoKPiDCoCDCoCDCoGMgPSBteUNsYXNzKG1lLnJvd1Rh ZykKPiDCoCDCoCDCoG1lLmNlbGwocm93LDEpID0gYy5uYW1lCj4gwqAgwqAgwqBtZS5jZWxsKHJv dywyKSA9IGMuZGVzY3JpcHRpb24KPiDCoCDCoCDCoG1lLmNlbGwocm93LDMpID0gYy5udW1iZXJP ZkRvZ0hvdXNlcwo+IMKgIMKgIMKgLi4uCj4gwqAgwqAgwqBtZS5yb3dUYWcocm93KSA9IG5pbCAv LyBhbGwgZG9uZQo+Cj4gVGhpcyB3YXksIHlvdSBhcmUgb25seSBwb3B1bGF0aW5nIHJvd3MgdGhh dCBoYXZlIGFjdHVhbGx5IGJlZW4gdmlld2VkLgo+Cj4gT25lIG1ham9yIGNhdmVhdCB3aXRoIHRo aXMgbWV0aG9kIGlzIHNvcnRpbmcsIHdoaWNoIHdvbid0IHdvcmsgc2luY2UgbWFueSBvZiB5b3Vy IGxpc3Rib3ggY2VsbHMgYXJlIGVtcHR5Li4uCj4KPgo+Cj4gX19fX19fX19fX19fX19fX19fX19f X19fX19fX19fX19fX19fX19fX19fX19fX18KPiBVbnN1YnNjcmliZSBvciBzd2l0Y2ggZGVsaXZl cnkgbW9kZToKPiA8aHR0cDovL3d3dy5yZWFsc29mdHdhcmUuY29tL3N1cHBvcnQvbGlzdG1hbmFn ZXIvPgo+Cj4gU2VhcmNoIHRoZSBhcmNoaXZlczoKPiA8aHR0cDovL3N1cHBvcnQucmVhbHNvZnR3 YXJlLmNvbS9saXN0YXJjaGl2ZXMvbGlzdHMuaHRtbD4KPgoKCgotLSAKS2VpdGggQmVubmV0dAoK X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX18KVW5zdWJzY3Jp YmUgb3Igc3dpdGNoIGRlbGl2ZXJ5IG1vZGU6CjxodHRwOi8vd3d3LnJlYWxzb2Z0d2FyZS5jb20v c3VwcG9ydC9saXN0bWFuYWdlci8+CgpTZWFyY2ggdGhlIGFyY2hpdmVzOgo8aHR0cDovL3N1cHBv cnQucmVhbHNvZnR3YXJlLmNvbS9saXN0YXJjaGl2ZXMvbGlzdHMuaHRtbD4 |
| Re: Adding Rows quickly |
| Date: 03.03.10 19:04 (Wed, 3 Mar 2010 10:04:41 -0800) |
| From: Michael Diehr |
|
On Mar 2, 2010, at 10:10 PM, Rubber Chicken Software Co. wrote:
> I was looking for coding tips/strategies to speed this up; thanks though. Your list has lots of promise. One technique I've used is the "lazy update". Instead of populating an entire listbox row, you just set the rowTag to point to the object it is supposed to display. Populate it "on demand" when it's actually shown: E.g. in the listbox's textPaint (or backgroundPaint) event, you can do this: if me.rowTag(row) isa myClass then // need to fill in the blanks: c syClass(me.rowTag) me.cell(row,1) >.name me.cell(row,2) >.description me.cell(row,3) m.numberOfDogHouses ... me.rowTag(row) mil // all done This way, you are only populating rows that have actually been viewed. One major caveat with this method is sorting, which won't work since many of your listbox cells are empty... _______________________________________________ Unsubscribe or switch delivery mode: <http://www.realsoftware.com/support/listmanager/> Search the archives: <http://support.realsoftware.com/listarchives/lists.html> |
| Re: Adding Rows quickly |
| Date: 03.03.10 18:30 (Wed, 3 Mar 2010 18:30:39 +0100) |
| From: Maximilian Tyrtania |
|
Am 03.03.2010 um 03:58 schrieb Rubber Chicken Software Co.:
> Is there any known way (that I don't know of) where the adding rows to a Listbox can go faster? > > What I'm trying now is making the list invisible; that doubles the speed. But that looks ugly. Even when it's visible, I don't like the row-by-row adding either. > > When I look at apps, I see the list staying static, with the hourglass as a cursor and perhaps a status StaticTextshwoing what's being added, if it's a long procedure. > > I'm tempted to take a screenshot of the list as it's pictured, draw it on a Canvas, and make the Canvas visible and make the list Invisible. That's hacky though. > > Doesn't a Listbox have a .LockDrawing type of property? Maybe that's what I'm missing? Just for the record, you can assign a tab-return delimited string to cell(-1,-1). I experimented with this technique and found it to be slower then adding the rows one by one. But I don't have a flicker problem this way. Are you talking windows or Mac? On the windows side you can use Aaron Ballmans Windows Functionality Suite, which has a Window.FreezeUpdate method. That does the trick for me. On the Mac side Setting the listbox invisible while it's loaded doesn't flicker for me because of the double buffering. Maximilian Tyrtania _______________________________________________ Unsubscribe or switch delivery mode: <http://www.realsoftware.com/support/listmanager/> Search the archives: <http://support.realsoftware.com/listarchives/lists.html> |
| Re: Adding Rows quickly |
| Date: 03.03.10 10:48 (Wed, 03 Mar 2010 04:48:12 -0500) |
| From: Kem Tekinay |
|
On 3/3/10 1:10 AM, "Rubber Chicken Software Co." <<email address removed>>
wrote: > Nope; two problems: you encrypted the class, so I can't merge it into > my subclassed lists I'm not sure how that matters. The native ListBox is an encrypted class, yet both of us managed to subclass it. If you changed the super of your subclass to Data-On-Demand ListBox, couldn't you continue to use your custom code? > your example is RB2010 and I'm using RB2007r5. I didn't realize that was an issue. I'll check it in 2007r5 (I think I still have a copy) and see what's up. __________________________________________________________________________ Kem Tekinay (212) 201-1465 MacTechnologies Consulting Fax (914) 242-7294 http://www.mactechnologies.com To join the MacTechnologies Consulting mailing list, send an e-mail to: <email address removed> _______________________________________________ Unsubscribe or switch delivery mode: <http://www.realsoftware.com/support/listmanager/> Search the archives: <http://support.realsoftware.com/listarchives/lists.html> |
| Re: Adding Rows quickly |
| Date: 03.03.10 07:10 (Wed, 03 Mar 2010 00:10:26 -0600) |
| From: Rubber Chicken Software Co. |
|
At 10:19 PM 3/2/2010, you wrote:
>> > Is there any known way (that I don't know of) where the adding rows >> > to a Listbox can go faster? >> >>Yes, use my Data-On-Demand ListBox, available at my web site. You can >>display thousands, even millions, of rows instantly. > >I think I saw that; however, I already use a pretty heavily >subclassed ListBox (Restepos CustomCellListBox with modifications to >allow dynamic columns). Still, there's no reason why I can't merge >the technologies (hopefully!) Nope; two problems: you encrypted the class, so I can't merge it into my subclassed lists, and your example is RB2010 and I'm using RB2007r5. I was looking for coding tips/strategies to speed this up; thanks though. Your list has lots of promise. * * * * * * * * * * * * * * * * * * * * * * * * * * * | Garth Hjelte | | Customer Service Representative, President | | Chicken Systems, Inc, Rubber Chicken Software Co. | | 714 5th Street SE | | Willmar, MN 56201 USA | | | | 800-8-PRO-EPS Toll Free Order Line (US Only) | | 320-235-9798 Tech Support, Sampler Questions | | International Line | | 360-838-7689 Fax | | Product Sales: <email address removed> | | Product Support: <email address removed> | | Sampler Q+A: <email address removed> | | Web Page: www.chickensys.com | * * * * * * * * * * * * * * * * * * * * * * * * * * * _______________________________________________ Unsubscribe or switch delivery mode: <http://www.realsoftware.com/support/listmanager/> Search the archives: <http://support.realsoftware.com/listarchives/lists.html> |
| Re: Adding Rows quickly |
| Date: 03.03.10 06:04 (Tue, 02 Mar 2010 23:04:24 -0600) |
| From: Rubber Chicken Software Co. |
|
At 10:19 PM 3/2/2010, you wrote:
> > Is there any known way (that I don't know of) where the adding rows > > to a Listbox can go faster? > >Yes, use my Data-On-Demand ListBox, available at my web site. You can >display thousands, even millions, of rows instantly. I think I saw that; however, I already use a pretty heavily subclassed ListBox (Restepos CustomCellListBox with modifications to allow dynamic columns). Still, there's no reason why I can't merge the technologies (hopefully!) * * * * * * * * * * * * * * * * * * * * * * * * * * * | Garth Hjelte | | Customer Service Representative, President | | Chicken Systems, Inc, Rubber Chicken Software Co. | | 714 5th Street SE | | Willmar, MN 56201 USA | | | | 800-8-PRO-EPS Toll Free Order Line (US Only) | | 320-235-9798 Tech Support, Sampler Questions | | International Line | | 360-838-7689 Fax | | Product Sales: <email address removed> | | Product Support: <email address removed> | | Sampler Q+A: <email address removed> | | Web Page: www.chickensys.com | * * * * * * * * * * * * * * * * * * * * * * * * * * * _______________________________________________ Unsubscribe or switch delivery mode: <http://www.realsoftware.com/support/listmanager/> Search the archives: <http://support.realsoftware.com/listarchives/lists.html> |
| Re: Adding Rows quickly |
| Date: 03.03.10 05:19 (Tue, 02 Mar 2010 23:19:20 -0500) |
| From: Kem Tekinay |
|
On 3/2/10 9:58 PM, "Rubber Chicken Software Co." <<email address removed>>
wrote: > Is there any known way (that I don't know of) where the adding rows > to a Listbox can go faster? Yes, use my Data-On-Demand ListBox, available at my web site. You can display thousands, even millions, of rows instantly. __________________________________________________________________________ Kem Tekinay (212) 201-1465 MacTechnologies Consulting Fax (914) 242-7294 http://www.mactechnologies.com To join the MacTechnologies Consulting mailing list, send an e-mail to: <email address removed> _______________________________________________ Unsubscribe or switch delivery mode: <http://www.realsoftware.com/support/listmanager/> Search the archives: <http://support.realsoftware.com/listarchives/lists.html> |
| Adding Rows quickly |
| Date: 03.03.10 03:58 (Tue, 02 Mar 2010 20:58:31 -0600) |
| From: Rubber Chicken Software Co. |
|
Is there any known way (that I don't know of) where the adding rows
to a Listbox can go faster? What I'm trying now is making the list invisible; that doubles the speed. But that looks ugly. Even when it's visible, I don't like the row-by-row adding either. When I look at apps, I see the list staying static, with the hourglass as a cursor and perhaps a status StaticTextshwoing what's being added, if it's a long procedure. I'm tempted to take a screenshot of the list as it's pictured, draw it on a Canvas, and make the Canvas visible and make the list Invisible. That's hacky though. Doesn't a Listbox have a .LockDrawing type of property? Maybe that's what I'm missing? * * * * * * * * * * * * * * * * * * * * * * * * * * * | Garth Hjelte | | Customer Service Representative, President | | Chicken Systems, Inc, Rubber Chicken Software Co. | | 714 5th Street SE | | Willmar, MN 56201 USA | | | | 800-8-PRO-EPS Toll Free Order Line (US Only) | | 320-235-9798 Tech Support, Sampler Questions | | International Line | | 360-838-7689 Fax | | Product Sales: <email address removed> | | Product Support: <email address removed> | | Sampler Q+A: <email address removed> | | Web Page: www.chickensys.com | * * * * * * * * * * * * * * * * * * * * * * * * * * * _______________________________________________ Unsubscribe or switch delivery mode: <http://www.realsoftware.com/support/listmanager/> Search the archives: <http://support.realsoftware.com/listarchives/lists.html> |
Links
MBS REAL studio tutorial videos - Pfarrgemeinde Ministranten Nickenich