List Format Manager - запрет на определенную колонку
Модератор: Дед Пахом
Правила форума
При написании вопроса или обсуждении проблемы, не забывайте указывать версию Clarion который Вы используете.
А так же пользуйтесь спец. тегами при вставке исходников!!!
При написании вопроса или обсуждении проблемы, не забывайте указывать версию Clarion который Вы используете.
А так же пользуйтесь спец. тегами при вставке исходников!!!
- ingasoftplus
- Ветеран
- Сообщения: 451
- Зарегистрирован: 26 Декабрь 2006, 17:07
- Откуда: Оттуда :)
- Благодарил (а): 114 раз
- Поблагодарили: 6 раз
List Format Manager - запрет на определенную колонку
Ого - выглядит круто. Проглядываются и наши хотелки!! не поделитесь еще раз в образовательных целях?
- Игорь Столяров
- Ветеран движения
- Сообщения: 7891
- Зарегистрирован: 07 Июль 2005, 10:19
- Откуда: г. Ростов-на-ДоМу
- Благодарил (а): 28 раз
- Поблагодарили: 89 раз
List Format Manager - запрет на определенную колонку
Всё тоже самое ... см. личные сообщения. 
Make Clarion Great Again ! 
-
- Полимат
- Сообщения: 1788
- Зарегистрирован: 25 Март 2009, 21:55
- Благодарил (а): 21 раз
- Поблагодарили: 10 раз
List Format Manager - запрет на определенную колонку
Тоже использую, только внешне немного изменил, спасибо большое Игорю ), если можно мне тоже бросьте может новое что то найду.

“Есть всего 2 типа языков: те, на которые все жалуются и те, которыми никто не пользуется.” — Бьерн Страуструп
- finsoftrz
- ✯ Ветеран ✯
- Сообщения: 5109
- Зарегистрирован: 06 Ноябрь 2014, 12:48
- Благодарил (а): 11 раз
- Поблагодарили: 55 раз
List Format Manager - запрет на определенную колонку
Игорь, а как разруливаете сейчас в управлении колонками визуальную их настройку и параметры в бизнес-логике? На примере. У нас в параметрах программы есть признак "Использовать сертификаты". Если он включен, то в ряде диалогов появляются относящиеся к нему контролы, если не включен, то пользователи эти контролы не видят. В частности, в справочнике товаров появляются 2 колонки, название сертификата и имя файла со сканом сертификата. Когда признак выключаем, эти колонки скрываются. Соответственно, они не должны отображаться в визуальной настройке колонок.
C6/C11, ШВС, tps/btrieve.
- Игорь Столяров
- Ветеран движения
- Сообщения: 7891
- Зарегистрирован: 07 Июль 2005, 10:19
- Откуда: г. Ростов-на-ДоМу
- Благодарил (а): 28 раз
- Поблагодарили: 89 раз
List Format Manager - запрет на определенную колонку
Да, таких ситуаций много ... но в общем случае нет решения.
У колонки ведь есть только ширина и нет признака HIDE.
Если не нужно показывать какие-либо данные, то сейчас, после настройки
формата "скрывается" колонка и данные в неё не выводятся.
Через настройку формата можно "включить" колонку - но она будет пустой.
Что бы не показывать скрытые колонки в списке настроек - нужно задавать
для них какой-нибудь аттрибут и обрабатывать его.
Например специальный цвет или текст в шапке ... но мы такое не делали.
У колонки ведь есть только ширина и нет признака HIDE.

Если не нужно показывать какие-либо данные, то сейчас, после настройки
формата "скрывается" колонка и данные в неё не выводятся.
Через настройку формата можно "включить" колонку - но она будет пустой.
Что бы не показывать скрытые колонки в списке настроек - нужно задавать
для них какой-нибудь аттрибут и обрабатывать его.
Например специальный цвет или текст в шапке ... но мы такое не делали.
Make Clarion Great Again ! 
- finsoftrz
- ✯ Ветеран ✯
- Сообщения: 5109
- Зарегистрирован: 06 Ноябрь 2014, 12:48
- Благодарил (а): 11 раз
- Поблагодарили: 55 раз
List Format Manager - запрет на определенную колонку
Этот вопрос связан с перестановкой местами колонок в визуальной настройки list и сохранением форматов в строковом виде в ini файле. Чтобы разрулить описанные ситуации, надо как-то идентифицировать колонку. У нас есть в этой ситуации только номер колонки и ее название, что-то из них надо фиксировать. По этой причине я когда-то отказался от динамического изменения порядка следования колонок. Хотя в некоторых ситуациях такая возможность пригодилась бы. Подвязываться на название колонок тоже как-то не хорошо выглядит. Если я правильно понимаю, то для корректной реализации нужно хранить описание форматов list в базе данных по каждой колонке. С этим лень связываться.
C6/C11, ШВС, tps/btrieve.
- Игорь Столяров
- Ветеран движения
- Сообщения: 7891
- Зарегистрирован: 07 Июль 2005, 10:19
- Откуда: г. Ростов-на-ДоМу
- Благодарил (а): 28 раз
- Поблагодарили: 89 раз
List Format Manager - запрет на определенную колонку
Можно по другому. Хранить "исходный" формат списка и тогда по номеру колонки можно получить все данные о ней.
Make Clarion Great Again ! 
- finsoftrz
- ✯ Ветеран ✯
- Сообщения: 5109
- Зарегистрирован: 06 Ноябрь 2014, 12:48
- Благодарил (а): 11 раз
- Поблагодарили: 55 раз
List Format Manager - запрет на определенную колонку
Исходный хранится и используется для отработки ситуаций с добавлением колонок list, чтобы заново не настраивать. Но как определить соответствие колонок в исходной формате и в сохраненном пользовательском? Про это речь.
C6/C11, ШВС, tps/btrieve.
- Игорь Столяров
- Ветеран движения
- Сообщения: 7891
- Зарегистрирован: 07 Июль 2005, 10:19
- Откуда: г. Ростов-на-ДоМу
- Благодарил (а): 28 раз
- Поблагодарили: 89 раз
List Format Manager - запрет на определенную колонку
По номеру колонки можно получить её ID. У каждой колонки есть ID. Proplist:FieldNo
Только нужно его зафиксировать (и для этого перезаписать) - и далее можно юзать.
Это всё есть в примере FList (см. в теме).
Только нужно его зафиксировать (и для этого перезаписать) - и далее можно юзать.
Это всё есть в примере FList (см. в теме).
Код: Выделить всё
Loop Loc:Count = 1 to xBrwSet_.xBrowse{PropList:Exists,0} by 1
If xBrwSet_.xBrowse{PropList:Exists,Loc:Count} = True
Loc:Column = xBrwSet_.xBrowse{Proplist:FieldNo,Loc:Count}
xBrwSet_.xBrowse{Proplist:FieldNo,Loc:Count} = Loc:Column
end
end
! Получить настройку колонки по её ID (Proplist:FieldNo)
Clear(Loc:QBlock)
Loc:QBColumn = xBrwSet_.xBrowse{Proplist:FieldNo,Loc:Count}
Get(Loc:QBlock,Loc:QBColumn)
If ~ErrorCode()
xBrwSet_.xBrowse{PropList:Picture,Loc:Count} = Clip(Loc:QBFormat)
xBrwSet_.xBrowse{PropList:Header,Loc:Count} = Clip(Loc:QBHeader)
If Loc:QBWidth = 0 then xBrwSet_.xBrowse{PropList:Width,Loc:Count} = 0. ! Скрытая колонка
Make Clarion Great Again ! 
- finsoftrz
- ✯ Ветеран ✯
- Сообщения: 5109
- Зарегистрирован: 06 Ноябрь 2014, 12:48
- Благодарил (а): 11 раз
- Поблагодарили: 55 раз
List Format Manager - запрет на определенную колонку
Proplist:FieldNo устанавливает соответствие со списком полей, заданным в аттрибуте #fields оконной структуры. Технически его можно попробовать использовать, хотя этот номер тоже не фиксированный, если только явно не нумеровать в форматере LIST (у меня на автонумерации везде).
C6/C11, ШВС, tps/btrieve.
- Игорь Столяров
- Ветеран движения
- Сообщения: 7891
- Зарегистрирован: 07 Июль 2005, 10:19
- Откуда: г. Ростов-на-ДоМу
- Благодарил (а): 28 раз
- Поблагодарили: 89 раз
List Format Manager - запрет на определенную колонку
Не можно, а нужно. Причём уже лет 15 точно.
Не знаю зачем есть возможность присваивать свой номер. Мы юзаем присвоенный автонумерацией.
Собственно это ID который не меняется от расположения колонки в списке.

Не знаю зачем есть возможность присваивать свой номер. Мы юзаем присвоенный автонумерацией.
Собственно это ID который не меняется от расположения колонки в списке.
Make Clarion Great Again ! 
- finsoftrz
- ✯ Ветеран ✯
- Сообщения: 5109
- Зарегистрирован: 06 Ноябрь 2014, 12:48
- Благодарил (а): 11 раз
- Поблагодарили: 55 раз
List Format Manager - запрет на определенную колонку
Он будет меняться, если будут добавляться колонки.Игорь Столяров писал(а): ↑31 Март 2025, 14:49 Не можно, а нужно. Причём уже лет 15 точно.![]()
Не знаю зачем есть возможность присваивать свой номер. Мы юзаем присвоенный автонумерацией.
Собственно это ID который не меняется от расположения колонки в списке.
C6/C11, ШВС, tps/btrieve.
- Игорь Столяров
- Ветеран движения
- Сообщения: 7891
- Зарегистрирован: 07 Июль 2005, 10:19
- Откуда: г. Ростов-на-ДоМу
- Благодарил (а): 28 раз
- Поблагодарили: 89 раз
List Format Manager - запрет на определенную колонку
Естественно. При удалении и перемещении колонок тоже.
Поэтому мы храним Default Format для которого сделаны пользовательские настройки.
И если при открытии LIST видим, что в формат LIST разработчиком внесены исправления -
то сбрасываем пользоватеские настройки. А иначе пользователь не увидит сделанные разработчиком изменения.
Make Clarion Great Again ! 
- finsoftrz
- ✯ Ветеран ✯
- Сообщения: 5109
- Зарегистрирован: 06 Ноябрь 2014, 12:48
- Благодарил (а): 11 раз
- Поблагодарили: 55 раз
List Format Manager - запрет на определенную колонку
Хардкорно.
Глянул у себя, вызывается функция проверка колонок, в качестве параметров передаются строки с форматом list старым и новым. В процедуре окно с одним пустым list контролом. Присваиваем list старый формат. Записываем колонки старого формата в очередь (наименование колонки + ширина). Затем присваиваем list новый формат. Пробегаемся по колонкам и по наименованию определяем ширину колонки в старом формате, присваиваем новому. Модифицированный новый формат возвращаем.
В большинстве случаев это работает корректно, так как названия колонок не так часто меняются. Новые колонки появляются, старые сохраняют свою ширину (видимость).
Чтобы исключить скрытую колонку из визуальной настройки и из некоторых других обработок, присваиваю ее заголовку системное значение "...".

Глянул у себя, вызывается функция проверка колонок, в качестве параметров передаются строки с форматом list старым и новым. В процедуре окно с одним пустым list контролом. Присваиваем list старый формат. Записываем колонки старого формата в очередь (наименование колонки + ширина). Затем присваиваем list новый формат. Пробегаемся по колонкам и по наименованию определяем ширину колонки в старом формате, присваиваем новому. Модифицированный новый формат возвращаем.
В большинстве случаев это работает корректно, так как названия колонок не так часто меняются. Новые колонки появляются, старые сохраняют свою ширину (видимость).
Чтобы исключить скрытую колонку из визуальной настройки и из некоторых других обработок, присваиваю ее заголовку системное значение "...".
C6/C11, ШВС, tps/btrieve.
- Игорь Столяров
- Ветеран движения
- Сообщения: 7891
- Зарегистрирован: 07 Июль 2005, 10:19
- Откуда: г. Ростов-на-ДоМу
- Благодарил (а): 28 раз
- Поблагодарили: 89 раз
List Format Manager - запрет на определенную колонку
1. Ну вроде бы работающие программы - это не наш профиль.
Видов изменений LIST много. Формат колонки, внесение или вывод колонки в группу и т.д.
Гипотетически конечно мона поставить цель всё это отработать и сделать, но ...
2. Зачем ? Настройка колонок - это те же самые рабочие данные, как и настрока окон.
Тем более, что вопросы ограничения доступа к тем или иным колонкам - это отдельная история.
3. У нас кроме, собственно настройки колонок LIST, везде работает масштабирование содержания LIST
и автоформат ширины колонок по содержимому (штатная, но исправленная опция Clarion)
И по итогу проще при изменении сделать "а давайте все выйдем и снова зайдём, чем разгребать весь этот кандибобер.

Make Clarion Great Again ! 