Использование far.Text для рисования на просмотрщике/редакторе

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

Использование far.Text для рисования на просмотрщике/редакторе

Post by John Doe »

Latest post of the previous page:

Единственная проблема: redraw вызывается и при неактивном редакоре, когда на экране меню (особенно если курсор перемещать)
Не знаю даже зачем так.
User avatar
zg
zero-gravity
Posts: 6015
Joined: Tue 15 Mar, 2005 17:36
Location: riga
Been thanked: 185 times
Contact:

Использование far.Text для рисования на просмотрщике/редакторе

Post by zg »

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

Использование far.Text для рисования на просмотрщике/редакторе

Post by John Doe »

Если просто открыть диалог, и ходить по его элементам курсором, то redraw не происходит.
Но стоит открыть например историю поля ввода, и начинается.
zg wrote: Thu 19 Oct, 2017 19:57а вдруг что-то в редакторе поменялось?
Так не меняется же.
User avatar
John Doe
Бюрократ
Posts: 13801
Joined: Wed 27 Apr, 2005 20:42
Has thanked: 72 times
Been thanked: 425 times
Contact:

Использование far.Text для рисования на просмотрщике/редакторе

Post by John Doe »

Grom PE wrote: Thu 19 Oct, 2017 19:28Я хотел выкрутиться вот так:

При таком использовании перерисовка может вызываться по 10 раз на одно EE_REDRAW,
потому что запущенный по таймеру код не успевает обрабатываться.
timer.Enabled = false хоть и срабатывает, но к тому времени уже накапливается несколько вызовов.

Поэтому в начале overdraw лучше проверить timer.Enabled, и рисовать только если true.

Собственно, код может быть проще:

Code: Select all

local EE_REDRAW = far.Flags.EE_REDRAW
Event {
  group="EditorEvent";
  action=function(id, event, param)
    if event == EE_REDRAW then
      far.Timer(10,function(t)
        t:Close()
        far.Text(40,1,0x0F,"test")
      end)
    end;
  end;
}
User avatar
zg
zero-gravity
Posts: 6015
Joined: Tue 15 Mar, 2005 17:36
Location: riga
Been thanked: 185 times
Contact:

Использование far.Text для рисования на просмотрщике/редакторе

Post by zg »

John Doe wrote: Thu 19 Oct, 2017 20:04Но стоит открыть например историю поля ввода, и начинается.
у меня ощущение, что я уже отвечал на похожий вопрос. в VMenu2::Call делается DM_ENABLEREDRAW, посмотрите, на какие события оно дёргается, сами всё поймёте.
User avatar
John Doe
Бюрократ
Posts: 13801
Joined: Wed 27 Apr, 2005 20:42
Has thanked: 72 times
Been thanked: 425 times
Contact:

Использование far.Text для рисования на просмотрщике/редакторе

Post by John Doe »

zg wrote: Fri 20 Oct, 2017 13:34у меня ощущение, что я уже отвечал на похожий вопрос.
Была тема о необоснованно частых перерисовках самих меню: http://forum.farmanager.com/viewtopic.p ... 72#p129472
User avatar
zg
zero-gravity
Posts: 6015
Joined: Tue 15 Mar, 2005 17:36
Location: riga
Been thanked: 185 times
Contact:

Использование far.Text для рисования на просмотрщике/редакторе

Post by zg »

ну вот значит ничего не изменилось.
Post Reply

Return to “Нужна помощь”