List Format Manager - запрет на определенную колонку
Модератор: Дед Пахом
Правила форума
При написании вопроса или обсуждении проблемы, не забывайте указывать версию Clarion который Вы используете.
А так же пользуйтесь спец. тегами при вставке исходников!!!
При написании вопроса или обсуждении проблемы, не забывайте указывать версию Clarion который Вы используете.
А так же пользуйтесь спец. тегами при вставке исходников!!!
-
- ✯ Ветеран ✯
- Сообщения: 1703
- Зарегистрирован: 25 Март 2009, 21:55
- Благодарил (а): 9 раз
- Поблагодарили: 4 раза
List Format Manager - запрет на определенную колонку
Например: список из 3-х колонок, 1-Товар, 2-закупочная цена, 3-Продажная цена
Закупочную цену надо скрывать при определенных условиях, как сделать правильно для List Format Manager , чтобы колонка была (скрыта/показана) и остальные колонки адекватно работали по условию указанные в List Format Manager.
Если использовать ?List{PROPLIST:width,xx}=0 , то List Format Manager начинает вести себя неадекватно
Кстати сам по себе List Format Manager при скрытии колонок ведет себя неоднозначно, скрывает без проблем, а вот чтобы показал обратно...
Закупочную цену надо скрывать при определенных условиях, как сделать правильно для List Format Manager , чтобы колонка была (скрыта/показана) и остальные колонки адекватно работали по условию указанные в List Format Manager.
Если использовать ?List{PROPLIST:width,xx}=0 , то List Format Manager начинает вести себя неадекватно
Кстати сам по себе List Format Manager при скрытии колонок ведет себя неоднозначно, скрывает без проблем, а вот чтобы показал обратно...
“Есть всего 2 типа языков: те, на которые все жалуются и те, которыми никто не пользуется.” — Бьерн Страуструп
- Игорь Столяров
- Ветеран движения
- Сообщения: 7411
- Зарегистрирован: 07 Июль 2005, 10:19
- Откуда: г. Ростов-на-ДоМу
- Благодарил (а): 16 раз
- Поблагодарили: 49 раз
List Format Manager - запрет на определенную колонку
Можно зайти с другой стороны ... Спрятать отображение данных:
Заодно не будет вопросов "Куда пропала колонка ?" и т.д.
А вообще стандартный List Format Manager - это жуть и мрак.
Долго с ним долбились, потом переписали к черту полностью ...
Код: Выделить всё
?List{PropList:Picture,XX} = Choose(Loc:NotRight = True,'@PНет правP','@n-12.2b')
А вообще стандартный List Format Manager - это жуть и мрак.
Долго с ним долбились, потом переписали к черту полностью ...
За теми кто отстал - не возвращаться. (С) Кодекс
-
- ✯ Ветеран ✯
- Сообщения: 1703
- Зарегистрирован: 25 Март 2009, 21:55
- Благодарил (а): 9 раз
- Поблагодарили: 4 раза
List Format Manager - запрет на определенную колонку
тогда нет вообще смысла в List Format Manager
насчет скрытия самих данных замечательная мысль, но вы еще подтвердили про List Format Manager, а я то подумал, что у меня руки из ж..ы растутИгорь Столяров писал(а): Можно зайти с другой стороны ... Спрятать отображение данных:Заодно не будет вопросов "Куда пропала колонка ?" и т.д. А вообще стандартный List Format Manager - это жуть и мрак.Код: Выделить всё
?List{PropList:Picture,XX} = Choose(Loc:NotRight = True,'@PНет правP','@n-12.2b')
Долго с ним долбились, потом переписали к черту полностью ...
“Есть всего 2 типа языков: те, на которые все жалуются и те, которыми никто не пользуется.” — Бьерн Страуструп
-
- ✯ Ветеран ✯
- Сообщения: 1703
- Зарегистрирован: 25 Март 2009, 21:55
- Благодарил (а): 9 раз
- Поблагодарили: 4 раза
List Format Manager - запрет на определенную колонку
к сожалению не работает, есть формат по умолчанию, он всё выводит в первоначальном виде
“Есть всего 2 типа языков: те, на которые все жалуются и те, которыми никто не пользуется.” — Бьерн Страуструп
- Игорь Столяров
- Ветеран движения
- Сообщения: 7411
- Зарегистрирован: 07 Июль 2005, 10:19
- Откуда: г. Ростов-на-ДоМу
- Благодарил (а): 16 раз
- Поблагодарили: 49 раз
List Format Manager - запрет на определенную колонку
Конечно, речь не идет о совместном использование с List Format Manager ...
Или, как обстоятельно и подробно написал коллега, либо:
- после переопределения формата - берите знчение ?List{PROP:Format} и
записывайте его как значение по умолчанию в List Format Manager;
либо:
- Выполняйте настройку формата ?LIst до инициализации List Format Manager.
Или, как обстоятельно и подробно написал коллега, либо:
- после переопределения формата - берите знчение ?List{PROP:Format} и
записывайте его как значение по умолчанию в List Format Manager;
либо:
- Выполняйте настройку формата ?LIst до инициализации List Format Manager.
За теми кто отстал - не возвращаться. (С) Кодекс
-
- ✯ Ветеран ✯
- Сообщения: 1703
- Зарегистрирован: 25 Март 2009, 21:55
- Благодарил (а): 9 раз
- Поблагодарили: 4 раза
List Format Manager - запрет на определенную колонку
Придется писать свое Нашел у Capesoft похожее RunScreen, кстати проще сделано.Игорь Столяров писал(а):Конечно, речь не идет о совместном использование с List Format Manager
“Есть всего 2 типа языков: те, на которые все жалуются и те, которыми никто не пользуется.” — Бьерн Страуструп
List Format Manager - запрет на определенную колонку
Я с этим тоже столкнулся. CW11. Вернуть скрытую колонку не получилось. Внес изменения в brwext.clw вgopstop2007 писал(а): ↑17 Февраль 2016, 17:04 Кстати сам по себе List Format Manager при скрытии колонок ведет себя неоднозначно, скрывает без проблем, а вот чтобы показал обратно...
рутину ChangeColumnStatus . Наверное некрасиво , но колонки теперь вернуть получается.
Spoiler
!------------------------------------------------------------------------------
! 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 - запрет на определенную колонку
лучше уж в routine где идет заполнение значений прописать в зависимости от разрешенийgopstop2007 писал(а): ↑17 Февраль 2016, 21:56 к сожалению не работает, есть формат по умолчанию, он всё выводит в первоначальном виде
-
- ✯ Ветеран ✯
- Сообщения: 1014
- Зарегистрирован: 08 Июль 2005, 6:48
- Откуда: Россия
- Поблагодарили: 1 раз
List Format Manager - запрет на определенную колонку
Было у меня похожее - просили некоторые столбцы показывать/прятать, например если там данных не было. Но количество столбцов было фиксировано, все считалось и ручками-ручками...
Spoiler
Код: Выделить всё
!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
- Игорь Столяров
- Ветеран движения
- Сообщения: 7411
- Зарегистрирован: 07 Июль 2005, 10:19
- Откуда: г. Ростов-на-ДоМу
- Благодарил (а): 16 раз
- Поблагодарили: 49 раз
List Format Manager - запрет на определенную колонку
Рыл тут закрома и нашёл старый пример форматера настройки LIST.
Вдруг кому сгодится в образовательных целях ...
(внутри APP есть ReadMe по приготовлению)
Вдруг кому сгодится в образовательных целях ...
(внутри APP есть ReadMe по приготовлению)
- Вложения
-
- ListF.zip
- Пример в исходниках C63 и далее везде
- (414.4 КБ) 107 скачиваний
За теми кто отстал - не возвращаться. (С) Кодекс
- ingasoftplus
- Ветеран
- Сообщения: 426
- Зарегистрирован: 26 Декабрь 2006, 17:07
- Откуда: Оттуда :)
- Благодарил (а): 90 раз
- Поблагодарили: 5 раз
List Format Manager - запрет на определенную колонку
прикольно! А есть ли такое же, только для стандартного List Format Manager???Игорь Столяров писал(а): ↑20 Декабрь 2021, 19:58 Рыл тут закрома и нашёл старый пример форматера настройки LIST.
Вдруг кому сгодится в образовательных целях ...
(внутри APP есть ReadMe по приготовлению)
- Игорь Столяров
- Ветеран движения
- Сообщения: 7411
- Зарегистрирован: 07 Июль 2005, 10:19
- Откуда: г. Ростов-на-ДоМу
- Благодарил (а): 16 раз
- Поблагодарили: 49 раз
List Format Manager - запрет на определенную колонку
Напс ? Этот прибамас и был сделан потому, что LFM выбесил конкретно.
Плюс наглядность и недокументированные плюшки вроде фиксации произвольной
колонки (а не только крайних левых).
Если кто-то захочет его интегрировать в своё ПО - могу подсказать ещё одну фишку:
в процессе работы приложения - считывать при открытии и хранить изменения (!) настроек
LIST в таблице InMemory (или QUEUE). И записывать их в файл на диск только при закрытии приложения.
Это ощутимо ускоряет открытие / закрытие многократно используемых окон с списками.
За теми кто отстал - не возвращаться. (С) Кодекс
- finsoftrz
- ✯ Ветеран ✯
- Сообщения: 4658
- Зарегистрирован: 06 Ноябрь 2014, 12:48
- Благодарил (а): 7 раз
- Поблагодарили: 37 раз
List Format Manager - запрет на определенную колонку
Нафик, риск потерять все настройки при аварийном завершении программы. Окна и так быстро открываются. Лайфхак есть для сопоставления текущего формата list и сохраненного в настройках на случай модификации состава колонок. Я вызываю небольшую функцию, передав сохраненную строку и актуальную в виде параметров. В этой функции окно с одним list, чтобы вручную не парсить. Присваиваю list строку формата, сохраняю в кьюшку. Затем вторую, сравниваю по колонкам. Возвращаю откорректированную строку формата.
Вместо того, чтобы вежливо оповещать пользователей, что при изменении формата их настройки идут лесом. Согласны, Игорь?
Вместо того, чтобы вежливо оповещать пользователей, что при изменении формата их настройки идут лесом. Согласны, Игорь?
C6/C11, ШВС, tps/btrieve.
- ingasoftplus
- Ветеран
- Сообщения: 426
- Зарегистрирован: 26 Декабрь 2006, 17:07
- Откуда: Оттуда :)
- Благодарил (а): 90 раз
- Поблагодарили: 5 раз
List Format Manager - запрет на определенную колонку
ну так у нас стандартный используется, вот и интересуюсь.Игорь Столяров писал(а): ↑20 Январь 2022, 11:42 Напс ? Этот прибамас и был сделан потому, что LFM выбесил конкретно.