Страница 1 из 3
List Format Manager - запрет на определенную колонку
Добавлено: 17 Февраль 2016, 17:04
gopstop2007
Например: список из 3-х колонок, 1-Товар, 2-закупочная цена, 3-Продажная цена
Закупочную цену надо скрывать при определенных условиях, как сделать правильно для
List Format Manager , чтобы колонка была (скрыта/показана) и остальные колонки адекватно работали по условию указанные в
List Format Manager.
Если использовать ?List{PROPLIST:width,xx}=0 , то
List Format Manager начинает вести себя неадекватно
Кстати сам по себе
List Format Manager при скрытии колонок ведет себя неоднозначно, скрывает без проблем, а вот чтобы показал обратно...
List Format Manager - запрет на определенную колонку
Добавлено: 17 Февраль 2016, 20:18
George
Я как-то делал с ?List{PROP:Format}
List Format Manager - запрет на определенную колонку
Добавлено: 17 Февраль 2016, 20:32
Игорь Столяров
Можно зайти с другой стороны ... Спрятать отображение данных:
Код: Выделить всё
?List{PropList:Picture,XX} = Choose(Loc:NotRight = True,'@PНет правP','@n-12.2b')
Заодно не будет вопросов "Куда пропала колонка ?" и т.д.
А вообще стандартный List Format Manager - это жуть и мрак.
Долго с ним долбились, потом переписали к черту полностью ...
List Format Manager - запрет на определенную колонку
Добавлено: 17 Февраль 2016, 21:19
gopstop2007
George писал(а): Я как-то делал с ?List{PROP:Format}
тогда нет вообще смысла в
List Format Manager
Игорь Столяров писал(а): Можно зайти с другой стороны ... Спрятать отображение данных:
Код: Выделить всё
?List{PropList:Picture,XX} = Choose(Loc:NotRight = True,'@PНет правP','@n-12.2b')
Заодно не будет вопросов "Куда пропала колонка ?" и т.д.
А вообще стандартный List Format Manager - это жуть и мрак.
Долго с ним долбились, потом переписали к черту полностью ...
насчет скрытия самих данных замечательная мысль, но вы еще подтвердили про
List Format Manager, а я то подумал, что у меня руки из ж..ы растут
List Format Manager - запрет на определенную колонку
Добавлено: 17 Февраль 2016, 21:56
gopstop2007
Игорь Столяров писал(а): ?List{PropList:Picture,XX} = Choose(Loc:NotRight = True,'@PНет правP','@n-12.2b')
к сожалению не работает, есть формат по умолчанию, он
всё выводит в первоначальном виде
List Format Manager - запрет на определенную колонку
Добавлено: 17 Февраль 2016, 22:03
Игорь Столяров
Конечно, речь не идет о совместном использование с List Format Manager ...
Или, как обстоятельно и подробно написал коллега, либо:
- после переопределения формата - берите знчение ?List{PROP:Format} и
записывайте его как значение по умолчанию в List Format Manager;
либо:
- Выполняйте настройку формата ?LIst до инициализации List Format Manager.
List Format Manager - запрет на определенную колонку
Добавлено: 19 Февраль 2016, 12:20
gopstop2007
Игорь Столяров писал(а):Конечно, речь не идет о совместном использование с List Format Manager
Придется писать свое
Нашел у Capesoft похожее RunScreen, кстати проще сделано.
List Format Manager - запрет на определенную колонку
Добавлено: 22 Сентябрь 2021, 3:02
Alex
gopstop2007 писал(а): ↑17 Февраль 2016, 17:04
Кстати сам по себе List Format Manager при скрытии колонок ведет себя неоднозначно, скрывает без проблем, а вот чтобы показал обратно...
Я с этим тоже столкнулся. CW11. Вернуть скрытую колонку не получилось. Внес изменения в brwext.clw в
рутину ChangeColumnStatus . Наверное некрасиво , но колонки теперь вернуть получается.
!------------------------------------------------------------------------------
! NAME : CHANGECOLUMNSTATUS
! DESCRIPTION : changes current column status
!------------------------------------------------------------------------------
ChangeColumnStatus ROUTINE
CASE loc_ColumnQueue.loc_ColIcon
OF COLUMN_SHOW
loc_ColumnQueue.loc_ColIcon = COLUMN_HIDE
IF SELF.m_Check = CHECK_TEXT
loc_ColumnQueue.loc_ColMark = '-'
END
DO GetRealColumn
IF loc_ColumnQueue.loc_ColGroup
IF loc_ColumnQueue.loc_ColRows > 1
?DummyList{PROPLIST:Width + PROPLIST:Group,loc_RealChoice} = 0
ELSE
?DummyList{PROPLIST:Width,loc_RealChoice} = 0
END
ELSE
?DummyList{PROPLIST:Width,loc_RealChoice} = 0
END
OF COLUMN_HIDE
loc_ColumnQueue.loc_ColIcon = COLUMN_SHOW
IF SELF.m_Check = CHECK_TEXT
loc_ColumnQueue.loc_ColMark = 'Yes'
END
DO GetRealColumn
IF loc_ColumnQueue.loc_ColGroup
IF loc_ColumnQueue.loc_ColRows > 1
SELF.m_GroupList.m_Group = loc_ColumnQueue.loc_ColGroup
GET(SELF.m_GroupList,SELF.m_GroupList.m_Group)
! ===== изменено ==============
if SELF.m_GroupList.m_Width =0
SELF.m_GroupList.m_Width=60
PUT(SELF.m_GroupList)
end
! ===== изменено ==============
?DummyList{PROPLIST:Width + PROPLIST:Group,loc_RealChoice} = SELF.m_GroupList.m_Width
ELSE
SELF.m_ColumnList.m_Column = loc_Choice
GET(SELF.m_ColumnList,SELF.m_ColumnList.m_Column)
! ===== изменено ==============
if SELF.m_ColumnList.m_Width =0
SELF.m_ColumnList.m_Width=40
PUT(SELF.m_ColumnList)
end
! ===== изменено ==============
?DummyList{PROPLIST:Width,loc_RealChoice} = SELF.m_ColumnList.m_Width
END
ELSE
SELF.m_ColumnList.m_Column = loc_Choice
GET(SELF.m_ColumnList,SELF.m_ColumnList.m_Column)
! ===== изменено ==============
if SELF.m_ColumnList.m_Width =0
SELF.m_ColumnList.m_Width=40
PUT(SELF.m_ColumnList)
end
! ===== изменено ==============
?DummyList{PROPLIST:Width,loc_RealChoice} = SELF.m_ColumnList.m_Width
END
END
PUT(loc_ColumnQueue)
!// The column is a group header
IF loc_ColumnQueue.loc_ColGroup AND loc_ColumnQueue.loc_ColRows > 1
loc_IconStatus = loc_ColumnQueue.loc_ColIcon
DO SetJointIconsStatus
END
DO CheckLastColumn
SELECT(?ColumnList,loc_DroppedColumn)
POST(EVENT:NewSelection,?ColumnList)
List Format Manager - запрет на определенную колонку
Добавлено: 22 Сентябрь 2021, 10:27
porutchik
gopstop2007 писал(а): ↑17 Февраль 2016, 21:56
к сожалению не работает, есть формат по умолчанию, он всё выводит в первоначальном виде
лучше уж в routine где идет заполнение значений прописать в зависимости от разрешений
List Format Manager - запрет на определенную колонку
Добавлено: 22 Сентябрь 2021, 11:03
Ал
Было у меня похожее - просили некоторые столбцы показывать/прятать, например если там данных не было. Но количество столбцов было фиксировано, все считалось и ручками-ручками...
Код: Выделить всё
!After Open Window
!включить - показать все периоды, выключить - не показывать пустые периоды
CLEAR(TOS1:record)
CLEAR(loc:s24Show) !по умолчанию все пусто - прячем !по умолчанию все пусто - прячем
CLEAR(loc:s24Widtn1) !по умолчанию все пусто - прячем
SET(TOS1:PlcKodProdKey,TOS1:PlcKodProdKey,1)
LOOP
CASE Access:ToolBS24.Next() !прочитать следующую запись
OF Level:Notify OROF Level:Fatal !если произошла ошибка
BREAK !выйти
ELSE
LOOP I# = 1 TO 36
IF TOS1:NumShtAll[I#] > 0 !есть в этом интервале продукция
loc:s24Show[I#] = 1 !будем показывать!
END
END
END
END
IF loc:FlagShAllCol = 0
DO ChangeListFormat
BRW8.UpdateBuffer !обновить буфер файла по текущему элементу
BRW8.UpdateWindow !обновить экранные переменные (локатор)
DISPLAY(?List:3) !?Browse:1)
END
LOOP I# = 1 TO 19
IF ?List{PROPLIST:Exists,I#} = 1 !Если колонка с таким номером существует
loc:s24Widtn1[I#] = ?List{PROPLIST:Width,I#}
.
END
IF loc:FlagShAllCol1 = 0
DO ChangeListFormat1
BRW11.UpdateBuffer !обновить буфер файла по текущему элементу
BRW11.UpdateWindow !обновить экранные переменные (локатор)
DISPLAY(?List)
END
Код: Выделить всё
ChangeListFormat ROUTINE !обновить список ?List:3
X# = 0
LOOP I# = 11 TO 36
X# = (I#-10) * 2 + 2 !номер столбца штук
IF loc:s24Show[I#] = 0 AND loc:FlagShAllCol = 0 !надо скрыть пустые
IF ?List:3{PROPLIST:Exists,X#} = 1 !Если колонка с таким номером существует
?List:3{PROPLIST:Width + PROPLIST:Group,X#} = 0 !столбец
?List:3{PROPLIST:Width + PROPLIST:Group,X# + 1} = 0 !столбец
?List:3{PROPLIST:Width + PROPLIST:GroupNo,(I#-10) + 1} = 0 !группа
.
ELSIF loc:FlagShAllCol = 1 !AND loc:s24Show[I#] = 0 !надо показать все
IF ?List:3{PROPLIST:Exists,X#} = 1 !Если колонка с таким номером существует
?List:3{PROPLIST:Width + PROPLIST:Group,X#} = 60 !loc:s24Widtn[I# * 2 - 1] !
?List:3{PROPLIST:Width + PROPLIST:Group,X# + 1} = 60 !loc:s24Widtn[I# * 2] !
.
END
END
EXIT
ChangeListFormat1 ROUTINE !обновить список ?List
LOOP x# = 6 TO 18 BY 4 !I# = 1 TO 19
IF ?List{PROPLIST:Exists,X#} = 1 !Если колонка с таким номером существует
IF loc:FlagShAllCol1 = 0 !AND loc:s24Widtn[I#] = 0 !скрыть
?List{PROPLIST:Width,X#} = 0
?List{PROPLIST:Width,X# + 1} = 0
ELSIF loc:FlagShAllCol1 = 1 !AND loc:s24Widtn[I#] = 0 !надо показать все
?List{PROPLIST:Width,X#} = loc:s24Widtn1[X#]
?List{PROPLIST:Width,X# + 1} = loc:s24Widtn1[X#+1]
END
END
END
EXIT
List Format Manager - запрет на определенную колонку
Добавлено: 20 Декабрь 2021, 19:58
Игорь Столяров
Рыл тут закрома и нашёл старый пример форматера настройки LIST.
Вдруг кому сгодится в образовательных целях ...
(внутри APP есть ReadMe по приготовлению)
List Format Manager - запрет на определенную колонку
Добавлено: 20 Январь 2022, 11:23
ingasoftplus
Игорь Столяров писал(а): ↑20 Декабрь 2021, 19:58
Рыл тут закрома и нашёл старый пример форматера настройки LIST.
Вдруг кому сгодится в образовательных целях ...
(внутри APP есть ReadMe по приготовлению)
прикольно! А есть ли такое же, только для стандартного List Format Manager???
List Format Manager - запрет на определенную колонку
Добавлено: 20 Январь 2022, 11:42
Игорь Столяров
ingasoftplus писал(а): ↑20 Январь 2022, 11:23
только для стандартного List Format Manager
Напс ? Этот прибамас и был сделан потому, что LFM выбесил конкретно.
Плюс наглядность и недокументированные плюшки вроде фиксации произвольной
колонки (а не только крайних левых).
Если кто-то захочет его интегрировать в своё ПО - могу подсказать ещё одну фишку:
в процессе работы приложения - считывать при открытии и хранить изменения (!) настроек
LIST в таблице InMemory (или QUEUE). И записывать их в файл на диск только при закрытии приложения.
Это ощутимо ускоряет открытие / закрытие многократно используемых окон с списками.
List Format Manager - запрет на определенную колонку
Добавлено: 20 Январь 2022, 11:56
finsoftrz
Нафик, риск потерять все настройки при аварийном завершении программы. Окна и так быстро открываются. Лайфхак есть для сопоставления текущего формата list и сохраненного в настройках на случай модификации состава колонок. Я вызываю небольшую функцию, передав сохраненную строку и актуальную в виде параметров. В этой функции окно с одним list, чтобы вручную не парсить. Присваиваю list строку формата, сохраняю в кьюшку. Затем вторую, сравниваю по колонкам. Возвращаю откорректированную строку формата.
Вместо того, чтобы вежливо оповещать пользователей, что при изменении формата их настройки идут лесом. Согласны, Игорь?
List Format Manager - запрет на определенную колонку
Добавлено: 20 Январь 2022, 12:03
ingasoftplus
Игорь Столяров писал(а): ↑20 Январь 2022, 11:42
Напс ? Этот прибамас и был сделан потому, что LFM выбесил конкретно.
ну так у нас стандартный используется, вот и интересуюсь.