Latest post of the previous page:
Поправка: этого достаточно для демонстрации, что желаемое вами достижимо, но не гарантирую, что код полный.
Latest post of the previous page:
Поправка: этого достаточно для демонстрации, что желаемое вами достижимо, но не гарантирую, что код полный.
Заменил. (обработчик, не far.Timer!) Есессно, ничего не заработало.
Из этого разве не следует что вы должны заменить и свой цикл моим таймером?
Code: Select all
local id = win.Uuid"45B09D0D-6AE8-416C-BB5A-F5FA7B5CC430"
local F = far.Flags
local timer
local function Progress(text,title)
local len = math.max(10,text:len()+2)
local items = {
--[[01]] {F.DI_SINGLEBOX,0,0,len,4,0,0,0,0,title},
--[[02]] {F.DI_TEXT, 1,1,0,0,0,0,0,F.DIF_CENTERGROUP,text},
--[[03]] {F.DI_BUTTON, -1,2,-1,2,0,0,0,F.DIF_CENTERGROUP,"Ok"},
}
local flags = F.FDLG_NONMODAL
return far.DialogInit(id,-1,-1,len,4,len,items,flags,function(hDlg,Msg)
if Msg==F.DN_CLOSE then timer:Close() end
end)
end
local hDlg = Progress(" ")
local i = 0
timer = far.Timer(500,function(t)
i = i+1
if i>20 then t:Close(); return end
hDlg:send(F.DM_SETTEXT,2,i)
end)
Я же про обработчик писал, что он не влияет. А что таймер поможет - я просто тогда не пробовал.