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

Столкнулись с проблемой в использовании макросов? Здесь можно получить помощь.
User avatar
zg
zero-gravity
Posts: 5620
Joined: Tue 15 Mar, 2005 17:36
Location: riga
Been thanked: 104 times
Contact:

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

Post by zg » Thu 19 Oct, 2017 19:57

Latest post of the previous page:

а вдруг что-то в редакторе поменялось?

User avatar
John Doe
Бюрократ
Posts: 12458
Joined: Wed 27 Apr, 2005 20:42
Has thanked: 33 times
Been thanked: 192 times

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

Post by John Doe » Thu 19 Oct, 2017 20:04

Если просто открыть диалог, и ходить по его элементам курсором, то redraw не происходит.
Но стоит открыть например историю поля ввода, и начинается.
zg wrote:
Thu 19 Oct, 2017 19:57
а вдруг что-то в редакторе поменялось?
Так не меняется же.

User avatar
John Doe
Бюрократ
Posts: 12458
Joined: Wed 27 Apr, 2005 20:42
Has thanked: 33 times
Been thanked: 192 times

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

Post by John Doe » Fri 20 Oct, 2017 07:20

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: 5620
Joined: Tue 15 Mar, 2005 17:36
Location: riga
Been thanked: 104 times
Contact:

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

Post by zg » Fri 20 Oct, 2017 13:34

John Doe wrote:
Thu 19 Oct, 2017 20:04
Но стоит открыть например историю поля ввода, и начинается.
у меня ощущение, что я уже отвечал на похожий вопрос. в VMenu2::Call делается DM_ENABLEREDRAW, посмотрите, на какие события оно дёргается, сами всё поймёте.

User avatar
John Doe
Бюрократ
Posts: 12458
Joined: Wed 27 Apr, 2005 20:42
Has thanked: 33 times
Been thanked: 192 times

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

Post by John Doe » Fri 20 Oct, 2017 13:45

zg wrote:
Fri 20 Oct, 2017 13:34
у меня ощущение, что я уже отвечал на похожий вопрос.
Была тема о необоснованно частых перерисовках самих меню: http://forum.farmanager.com/viewtopic.p ... 72#p129472

User avatar
zg
zero-gravity
Posts: 5620
Joined: Tue 15 Mar, 2005 17:36
Location: riga
Been thanked: 104 times
Contact:

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

Post by zg » Fri 20 Oct, 2017 13:48

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

Post Reply

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