*Modal form process controlling method with thisform if .Process1() and ; .Process2() and ; *... .ProcessN() messagebox('Blah blah completed succesfully.') endwith * A method updating the indexes with thisform .pBar.Max = reccount('NewIndexes') .pBar.Value = 0 .SetStatus('Updating indexes...') * Do update * As each update in a loop finishes update bar .pBar.Value = min(.pBar.Value + 1, .pBar.Max) * As each update in a loop finishes * Process finished .SetStatus('Updating indexes...Done.') endwith * Setstatus - Feedbacks user via editbox lparameters tcMessage with thisform.pBarStatus && pBarStatus is the name of feedback editbox .Value = .Value + iif(empty(.Value),'',chr(13)+chr(10))+tcMessage .SelStart = len(.Value) endwithThis form need not be modal but it can call any modal form to get intermediate user input. Making this modal might be good if you don't want the user to go to other forms while the process is ongoing.