Login ProductsSalesSupportDownloadsAbout |
Home » Technical Support » Elevate Web Builder Technical Support » Support Forums » Elevate Web Builder General » View Thread |
Messages 1 to 10 of 14 total |
Performance when creating many controls dynamically |
Sun, May 20 2012 9:04 AM | Permanent Link |
Rick | Hi Tim.
I have a panel on a form and need to dynamically create a large number of sub-panels which will be parented to the main panel. In Firefox this seems to run fairly quickly but is quite slow in IE8. Is there any BeginUpdate/EndUpdate type capability in EWB which allows a sub-document to be created dynamically (e.g. consisting of many panels) and then inserted into the DOM in one operation? It appears that the individual creates are quite slow. I've even tried by specifying nil in the create call which is very fast but then setting the parent property causes the slow down. The following code is an example of what I'm trying to do: procedure TForm1.Button1Click(Sender: TObject); var i: integer; begin for i:=1 to 50 do begin // with TPanel.Create(nil) do with TPanel.Create(Panel1) do begin // Parent:=Panel1; ShowCaption:=False; Width:=50; Height:=50; Top:=Round(Random()*Panel1.ClientHeight); Left:=Round(Random()*Panel1.ClientWidth); end; end; end; I know that the IE Javascript engine isn't brilliant but even Firefox tends to slow down as the number of sub-panels increases. Thanks. -- Rick |
Sun, May 20 2012 5:37 PM | Permanent Link |
Leslie | Rick,
I have the exact same problem. IE8 uses only one core. while newer browsers seem to benifit from multi core CPUs and that makes a difference. Anyhow this is surprizingly slow. An optimized DBCtrlPanel like control would be very useful. Populating a dataset from JSON is also quite slow with a few hundred records. I do not really know what can be realisticly expected here speedwise. Hope Tim can shed some light on it. Cheers, Leslie |
Sun, May 20 2012 6:08 PM | Permanent Link |
Leslie | Rick,
One more thing: instead of using panels I have created a class which is not a container. All controls which would normally be placed within a container are properites of this class but children of the same parent.(The parent of the original panels.) This is still slow if you create many of them, but having all controls in a single container is much faster than with multi level containers. Cheers, Leslie |
Mon, May 21 2012 12:21 AM | Permanent Link |
Rick | <Leslie> wrote in message
news:3E18F2C5-5325-4D81-902B-8C71272FFE8E@news.elevatesoft.com... > > One more thing: instead of using panels I have created a class which is > not a container. All controls which would normally be placed within a > container are properites of this class but children of the same > parent.(The parent of the original panels.) This is still slow if you > create many of them, but having all controls in a single container is much > faster than with multi level containers. > > Thanks Leslie. Problem seems to be that as soon as you set the parent of the child panel either via create or specifically the performance issue occurs. I tried setting the parent of the container panel to nil and then created the child panels with the container panel as the parent. Much, much faster. Unfortunately setting the parent of the container panel back to the form displayed corrupted child panels. Here's an example: procedure TForm1.Button1Click(Sender: TObject); var i: integer; begin Panel1.Parent:=nil; for i:=1 to 50 do begin with TPanel.Create(Panel1) do begin Width:=50; Height:=50; Top:=Round(Random()*Panel1.ClientHeight); Left:=Round(Random()*Panel1.ClientWidth); end; end; Panel1.Parent:=Form1. end; This works like BeginUpdate/EndUpdate but the contents of the container panel (Panel1) are corrupted. Pity. -- Rick |
Mon, May 21 2012 12:00 PM | Permanent Link |
Leslie | Rick,
Your Panel1 is a TContainerControl descendent in my code. If it has a constructor, assigning the parent only after the subcontols have been created does not work. But if it has NO constructor it does work and the speed is better. Cheers, Leslie |
Mon, May 21 2012 7:39 PM | Permanent Link |
Leslie | TCheckBox created within a parent without a parent are not working . Not expecting clicks, no check marks, The rectangle is not highlited when mouse is over. It is highlited when it is over the the caption.
Cheers, Leslie |
Mon, May 21 2012 7:47 PM | Permanent Link |
Leslie | Leslie wrote:
TCheckBox created within a parent without a parent are not working . Not expecting clicks, no check marks, The rectangle is not highlited when mouse is over. It is highlited when it is over the the caption. I meant: Not accepting clicks. Cheers, Leslie |
Mon, May 21 2012 7:48 PM | Permanent Link |
Leslie | Even if parent is not cleared before creating subcontrols in IE clicking on the CheckBox caption is not accepted
Cheers, Leslie |
Mon, May 21 2012 9:03 PM | Permanent Link |
Tim Young [Elevate Software] Elevate Software, Inc. timyoung@elevatesoft.com | Rick,
Please send me an example project that shows what you're trying to do. I'll check it out and see what the issue is. I haven't done a lot of work on un-parented controls, so it doesn't surprise me that it doesn't work properly. Tim Young Elevate Software www.elevatesoft.com |
Mon, May 21 2012 9:05 PM | Permanent Link |
Tim Young [Elevate Software] Elevate Software, Inc. timyoung@elevatesoft.com | Leslie,
<< TCheckBox created within a parent without a parent are not working . Not expecting clicks, no check marks, The rectangle is not highlited when mouse is over. It is highlited when it is over the the caption. >> It works fine here in IE8. Are you using the most current build ? Tim Young Elevate Software www.elevatesoft.com |
Page 1 of 2 | Next Page » | |
Jump to Page: 1 2 |
This web page was last updated on Friday, September 13, 2024 at 03:42 PM | Privacy PolicySite Map © 2024 Elevate Software, Inc. All Rights Reserved Questions or comments ? E-mail us at info@elevatesoft.com |