Некорректность отображения фильтра DI_LISTBOX-а при флаге DIF_LISTNOBOX Topic is solved

Столкнулись с проблемой в использовании макросов? Здесь можно получить помощь.
Post Reply
User avatar
buniak_a_h
Posts: 4236
Joined: Sat 20 Apr, 2013 00:17
Location: Санкт-Петробад
Has thanked: 222 times
Been thanked: 643 times
Contact:

Некорректность отображения фильтра DI_LISTBOX-а при флаге DIF_LISTNOBOX

Post by buniak_a_h »

Извините, но мне кажется, я напоролся на ошибочку...
Небольшой тестовый скрипт:
  1. local F = far.Flags
  2.  
  3. local function Show(NoBox)
  4.  
  5.  local List={
  6.  
  7.          {Text='111'};
  8.  
  9.          {Text='222'};
  10.  
  11.        }
  12.  
  13.  local DlgItems={
  14.  
  15.   {F.DI_DOUBLEBOX,1,1,15,08,0,0,0,0,'Test'};
  16.  
  17.   {F.DI_LISTBOX,2,2,12,07,List,0,0, NoBox and F.DIF_LISTNOBOX or F.DIF_NONE};
  18.  
  19.  }
  20.  
  21.  far.Dialog('',-1,-1,17,09,nil,DlgItems)
  22.  
  23. end
  24.  
  25. --------------------------------------------------
  26.  
  27. Show(far.Message('Без рамки?','',';YesNo')==1)
  28.  
  29. -- CtrlAltF
Как воспроизвести:
1. Запустить скрипт
2. На вопрос о рамке ответить "без рамки"
3. Включить режим фильтрации (CtrlAltF) . При этом фильтр нигде не отображается (что естественно: рамки-то, на которой он указывается, нету)
4. Начать ввод такого фильтра, которому не отвечает ни одна строка списка (ну, например, q). В результате на месте первой строки списка появляется индикатор фильтра:

Code: Select all

╔═══ Test ════╗
║    [q]      ║
║             ║
║             ║
╚═════════════╝
При наличии рамки список в этом случае выглядит так:

Code: Select all

╔═══ Test ════╗
║╔══ [q] ══╗  ║
║║         ║  ║
║║         ║  ║
║║         ║  ║
║║         ║  ║
║╚═════════╝  ║
╚═════════════╝
А если отфильтрованы не все строки списка, то он выглядит так (введён фильтр 1):

Code: Select all

╔═══ Test ════╗
║  111        ║
║             ║
║             ║
║             ║
║             ║
║             ║
╚═════════════╝
Мне кажется, отображение фильтра не должно зависеть от того, все ли строки отфильтрованы…
User avatar
zg
zero-gravity
Posts: 6016
Joined: Tue 15 Mar, 2005 17:36
Location: riga
Been thanked: 185 times
Contact:

Некорректность отображения фильтра DI_LISTBOX-а при флаге DIF_LISTNOBOX

Post by zg »

5659.
buniak_a_h wrote: Fri 28 Aug, 2020 00:28 far.Dialog('',-1,-1,17,09,nil,DlgItems)
ай-ай-ай, а гуид нормальный вставить?
User avatar
buniak_a_h
Posts: 4236
Joined: Sat 20 Apr, 2013 00:17
Location: Санкт-Петробад
Has thanked: 222 times
Been thanked: 643 times
Contact:

Некорректность отображения фильтра DI_LISTBOX-а при флаге DIF_LISTNOBOX

Post by buniak_a_h »

zg wrote: Fri 28 Aug, 2020 01:49 ай-ай-ай, а гуид нормальный вставить?
Это на один раз написано было. Вы никому не говорите, и у себя сотрите.
User avatar
zg
zero-gravity
Posts: 6016
Joined: Tue 15 Mar, 2005 17:36
Location: riga
Been thanked: 185 times
Contact:

Некорректность отображения фильтра DI_LISTBOX-а при флаге DIF_LISTNOBOX

Post by zg »

я для тестов, которые вообще нигде не публикуются —генерю. это ж элементарный макрос.
User avatar
buniak_a_h
Posts: 4236
Joined: Sat 20 Apr, 2013 00:17
Location: Санкт-Петробад
Has thanked: 222 times
Been thanked: 643 times
Contact:

Некорректность отображения фильтра DI_LISTBOX-а при флаге DIF_LISTNOBOX

Post by buniak_a_h »

zg wrote: Fri 28 Aug, 2020 09:29 я для тестов, которые вообще нигде не публикуются —генерю. это ж элементарный макрос.
Для меня есть сложность: в некоторых местах надо указывать "внешний" GUID, а в некоторых - "внутренний". Я никак не могу запомнить, где какой надо; в документации явно не написано, туманно как-то. А пустая строка проходит всегда. Поэтому если у меня нет необходимости ссылаться на диалог, я указываю пустую строку.
User avatar
zg
zero-gravity
Posts: 6016
Joined: Tue 15 Mar, 2005 17:36
Location: riga
Been thanked: 185 times
Contact:

Некорректность отображения фильтра DI_LISTBOX-а при флаге DIF_LISTNOBOX

Post by zg »

buniak_a_h wrote: Sun 06 Sep, 2020 15:13Для меня есть сложность: в некоторых местах надо указывать "внешний" GUID, а в некоторых - "внутренний".
о чём вообще речь? впервые слышу о каких-то внутренних/внешних гуидах.
User avatar
buniak_a_h
Posts: 4236
Joined: Sat 20 Apr, 2013 00:17
Location: Санкт-Петробад
Has thanked: 222 times
Been thanked: 643 times
Contact:

Некорректность отображения фильтра DI_LISTBOX-а при флаге DIF_LISTNOBOX

Post by buniak_a_h »

zg wrote: Sun 06 Sep, 2020 22:20 о чём вообще речь? впервые слышу о каких-то внутренних/внешних гуидах.
На примере.
Внешний: строка 57209AD5-51F6-4257-BAB6-837462BBCE74 (36 символоов)
Внутренний: результат вызова win.Uuid('57209AD5-51F6-4257-BAB6-837462BBCE74') (увы, тоже строка, но трудно произносимая. 16 байт)
В разных местах требуется то битовый GUID, то его символьное представление. В документации, как правило (есть исключения), пишется просто GUID - приходится делать тест и смотреть, как правильно. Для диалога, например, нужен (как выяснилось) "внутренний" (128-битовый) GUID.
Last edited by buniak_a_h on Sun 06 Sep, 2020 22:34, edited 1 time in total.
User avatar
zg
zero-gravity
Posts: 6016
Joined: Tue 15 Mar, 2005 17:36
Location: riga
Been thanked: 185 times
Contact:

Некорректность отображения фильтра DI_LISTBOX-а при флаге DIF_LISTNOBOX

Post by zg »

buniak_a_h wrote: Sun 06 Sep, 2020 22:32В разных местах требуется то битовый GUID, то его символьное представление.
разве есть функции, которые не понимают «битовый» вариант?
User avatar
buniak_a_h
Posts: 4236
Joined: Sat 20 Apr, 2013 00:17
Location: Санкт-Петробад
Has thanked: 222 times
Been thanked: 643 times
Contact:

Некорректность отображения фильтра DI_LISTBOX-а при флаге DIF_LISTNOBOX

Post by buniak_a_h »

zg wrote: Mon 07 Sep, 2020 00:05 разве есть функции, которые не понимают «битовый» вариант?
Не знаю. Знаю точно, что некоторые функции понимают символьный вариант (возможно, и битовый), а некоторые - битовый.
О! кстати! Функция Macro. При задании в поле id битового GUID-а раньше было нормально, теперь - вылет
Last edited by buniak_a_h on Mon 07 Sep, 2020 02:44, edited 1 time in total.
Shmuel
Posts: 6819
Joined: Thu 23 Mar, 2006 21:36
Location: Israel
Has thanked: 41 times
Been thanked: 528 times

Некорректность отображения фильтра DI_LISTBOX-а при флаге DIF_LISTNOBOX

Post by Shmuel »

Есть две отдельные библиотеки: макро-апи и луафар-апи. Для этих библиотек есть отдельные мануалы.
Макро-апи - использовать гуид в текстовом представлении.
Луафар-апи - использовать бинарный гуид.
Это уже неоднократно обсуждалось, например, здесь.
User avatar
buniak_a_h
Posts: 4236
Joined: Sat 20 Apr, 2013 00:17
Location: Санкт-Петробад
Has thanked: 222 times
Been thanked: 643 times
Contact:

Некорректность отображения фильтра DI_LISTBOX-а при флаге DIF_LISTNOBOX

Post by buniak_a_h »

Историю вопроса я знаю. Но заучивать, какая функция из какой библиотеки, мне лениво. Если функция не падает при пустом GUID-е, а сам он не требуется, то мне легче просто указать пустую строку (или не указывать вообще, если такое допустимо). Как макрописцу мне совершенно фиолетово, из какой библиотеки функция. Более того! Я даже не знаю способа, как узнать. Для меня это - просто доступная функция либо непосредственно из _G, либо (как пример кошмара) из таблиц Panel или panel.
Пример кошмара - это то, что в функциях из этих двух таблиц (видимо, библиотек) признак "какая_панель" (активная/пассивная) как раз наоборот: в одной 0/1, в другой - 1/0 . Конечно, теперь уже не переделать (посыпятся написанные макросы), но изначально запланировать такую ловушку - это … Ой, чуть не нарушил пункт 3.2…
Post Reply

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