Немодальный диалог

Место, где разработчики плагинов могут поделиться своим опытом.
User avatar
John Doe
Бюрократ
Posts: 13801
Joined: Wed 27 Apr, 2005 20:42
Has thanked: 72 times
Been thanked: 425 times
Contact:

Немодальный диалог

Post by John Doe »

Latest post of the previous page:

John Doe wrote: Tue 06 Nov, 2018 14:26 Замените ваш код моим и всё.
Поправка: этого достаточно для демонстрации, что желаемое вами достижимо, но не гарантирую, что код полный.
User avatar
buniak_a_h
Posts: 4234
Joined: Sat 20 Apr, 2013 00:17
Location: Санкт-Петробад
Has thanked: 222 times
Been thanked: 642 times
Contact:

Немодальный диалог

Post by buniak_a_h »

John Doe wrote: Tue 06 Nov, 2018 14:26 buniak_a_h писал(а): ↑Вт 06 ноя, 2018 16:18
Вы пробовали?
Разумеется.
Замените ваш код моим и всё.
Заменил. (обработчик, не far.Timer!) Есессно, ничего не заработало.
Если ФАР висит без обработчика, то исправление ошибок в нём на результат не влияет. Чудес не бывает...
User avatar
John Doe
Бюрократ
Posts: 13801
Joined: Wed 27 Apr, 2005 20:42
Has thanked: 72 times
Been thanked: 425 times
Contact:

Немодальный диалог

Post by John Doe »

John Doe wrote: Tue 06 Nov, 2018 13:59 А цикл в отдельном потоке, по ACTL_SYNCHRO:
Из этого разве не следует что вы должны заменить и свой цикл моим таймером?

Update
Вот чуть причёсанный вариант:

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)
Last edited by John Doe on Tue 06 Nov, 2018 16:36, edited 2 times in total.
User avatar
buniak_a_h
Posts: 4234
Joined: Sat 20 Apr, 2013 00:17
Location: Санкт-Петробад
Has thanked: 222 times
Been thanked: 642 times
Contact:

Немодальный диалог

Post by buniak_a_h »

John Doe wrote: Tue 06 Nov, 2018 14:42 з этого разве не следует что вы должны заменить свой цикл моим таймером?
Я же про обработчик писал, что он не влияет. А что таймер поможет - я просто тогда не пробовал.
Теперь попробовал. работает, спасибо.
Post Reply

Return to “Разработка плагинов”