- This topic has 9 replies, 4 voices, and was last updated 5 years, 3 months ago by Support.
-
AuthorPosts
-
January 27, 2018 at 11:23 am #37715JinParticipant
Hello,
I use TsArcPreloader to show loading process to users, but when my software is busy by some job this TsArcPreloader stops moving and cannot show the loading process in real time, it looks lake to be frozen. And after software is finished to do some job, it is continue to moving. This loading process is not looking good from the user side. Is it possible to move it to some thread to have this process of moving without any stops?
February 2, 2018 at 10:06 am #57528SupportKeymasterHello, Jin! I will try to improve it soon.
April 8, 2019 at 9:19 am #59343JinParticipantHello, are you still going to improve this issue? Because it is really important for me to show real loading process not just stopped image without any movements.
April 9, 2019 at 5:07 am #59344SupportKeymasterHello
I hope to make it in the nearest few releases.
April 12, 2019 at 10:14 am #59364SupportKeymasterHi
I have a question, how are you planning to use this control?
Your application is busy in the own new thread? Or you are using a main thread only?
July 25, 2019 at 7:51 am #59779JinParticipant'Support' wrote:Hi
I have a question, how are you planning to use this control?
Your application is busy in the own new thread? Or you are using a main thread only?
Hi, I am using only main thread only. It is necessary when my software use some big functions to show to user that software is ok and it is just loading the data now.
July 25, 2019 at 12:41 pm #59780Stephane SenecalParticipantJust trying to help here…
You can do Application.ProcessMessages() or ArcControl.Update() to force one paint.
It will need to be repeated many times in your process so that the UI can update itself.
Hope it helps.
Stephane Senecal
CIS Group
Delphi programmer since 2001August 8, 2019 at 6:43 am #59822JinParticipant'Stephane wrote:Just trying to help here…
You can do Application.ProcessMessages() or ArcControl.Update() to force one paint.
It will need to be repeated many times in your process so that the UI can update itself.
Hope it helps.
It is impossible. For example you have some function, it works 15 seconds form the begin till end. And I can put Application.ProcessMessages or something else only after this function, but it will not resolve my issue, because for all 15 seconds ArcPreloder will not show for user this function calculation process. From my point of view it is bad practice to put such string like ArcControl.Update() in your code for such kind of component.
August 8, 2019 at 7:04 pm #59824JM-DGParticipant'Jin' wrote:It is impossible. For example you have some function, it works 15 seconds form the begin till end. And I can put Application.ProcessMessages or something else only after this function, but it will not resolve my issue, because for all 15 seconds ArcPreloder will not show for user this function calculation process. From my point of view it is bad practice to put such string like ArcControl.Update() in your code for such kind of component.
It is bad practice to use Application.ProcessMessages()/ArcControl.Update() in a loop to force an update,
but it is also bad practice to run an intensive job on the main thread instead of having it in a separated thread of its own.
August 10, 2019 at 4:51 am #59830SupportKeymasterHello, Jin
Window controls may be painted in the main application thread only because VCL, is not thread-safe.
Additional threads should be used for calculations or other information handling, but drawing on the canvas should be made at the main thread only.
-
AuthorPosts
- You must be logged in to reply to this topic.