Your application must do some work which blocks the main thread, and your progress indicator does not update until the job is done. Under windows you might have introduced “Application.ProcessMessages()” but this is not cross platform and can cause serious performance problems under FMX. What can you do about it?

 

[ Continue Reading ]

Reduce development time and get to market faster with RAD Studio, Delphi, or C++Builder. Design. Code. Compile. Deploy.

Start Free Trial   Free Delphi Community Edition   Free C++Builder Community Edition   Upgrade Today  

Parents
No Data
Comment
  • This is problem I reported WAY back in 2013 and it has received something like 83 up votes since then (qc.embarcadero.com/.../qcmain.aspx and has yet to be addressed. So unfortunately, this is hardly a new issue and the fact that something so fundamental has remained unresolved is incredibly frustrating. In any case, call me stupid but why does this workaround actually work? Even though this is running in a separate thread you are running a very tight loop and if it won't update with the main thread, why is it updating in this thread. Also, this updating is extremely fragile. If I try to do some other processing while this thread is running, for example, it doesn't update at all. To wit, if I launch this updating task and then continue to do any work, INCLUDING just waiting for it to finish, it never updates at all. var incTask:ITask; begin incTask:=TTask.create(IncrementBar); incTask.Start; while ProgressBar1.Value
Children
No Data