Форум Кладовочки АЛьФ`а

Обсуждение проектов => FormEx => Тема начата: MWW_Ruza от 20 ноября 2024, 16:55

Название: Меняется регистр шрифта в "раскрашенной" колонке
Отправлено: MWW_Ruza от 20 ноября 2024, 16:55
Собственно, вот видео:

https://cloud.mail.ru/public/AFkF/guLyupNvd (https://cloud.mail.ru/public/AFkF/guLyupNvd)

Странное поведение, пока не понял, с чем связано...
Название: Re: Меняется регистр шрифта в "раскрашенной" колонке
Отправлено: Злоп от 20 ноября 2024, 21:34
Колонка марок - текстовая или реквизит?
Название: Re: Меняется регистр шрифта в "раскрашенной" колонке
Отправлено: АЛьФ от 21 ноября 2024, 09:30
Нужен код заполнения этой колонки.
Название: Re: Меняется регистр шрифта в "раскрашенной" колонке
Отправлено: Харлампий Дымба от 21 ноября 2024, 10:38
Может дело и не в Формексе?
Как вариант: если колонка "Марки" текстовая и значения меняются только при открытии / при изменении, то возможно в одной из следующих колонок есть ВРег значения колонки "Марки". Тогда при первоначальном заполнении текст будет в нижнем регистре, и так как значения колонок вычисляются по порядку следования и рисуются в этом же порядке, то так визуально и останется в нижнем регистре. А после следующего обновления формы (переход по поиску, например) - выводятся уже преобразованные значения.
Ну и по модулю формы и/или модулю функции заполнения стоит пробежаться поиском по местам использования "ВРег(".

Название: Re: Меняется регистр шрифта в "раскрашенной" колонке
Отправлено: MWW_Ruza от 22 ноября 2024, 01:29
По порядку...

1. Колонка марок - текстовая или реквизит?
Текстовая. Но, значение хранится в реквизите(невидимая колонка рядом), вот так:

(https://content.foto.my.mail.ru/mail/m_w_w/590/h-595.jpg)

2. Код заполнения колонки этого реквизита, из которого текстовая колонка заполняется:

Если ПустоеЗначение(НовКолМарок) = 0 Тогда
    КолМаркБаза   = НовКолМарок;
    СтрМаркиЗапрЕГАИС   = СЗ.Получить("СтрМаркиЗапрЕГАИС");
    МаркиЗапрЕГАИС   = СокрЛП(СтрМаркиЗапрЕГАИС);
    КолМарокЕГАИС   = СЗ.Получить("НовКолМарокЕГАИС");   
    Если КолМаркБаза = 0 Тогда
   ЦСпМарк   = "FONT[" + ПолучитьЦвет(255) + "]";
    Иначе
   ЦСпМарк   = "FONT[" + ПолучитьЦвет(0,0,255) + "]";
    КонецЕсли;         
КонецЕсли;

3. В самой колонке, которую раскрашиваю, и в которой ищу статус:

Функция ПокМарки()
   Если КолМаркБаза = 0 Тогда
      Возврат "Нет марок в нал.";   
   Иначе
      Возврат "Список марок";
   КонецЕсли;   
КонецФункции

4. Поиск ВРег(

(https://content.foto.my.mail.ru/mail/m_w_w/590/h-596.jpg)

Нет там ничего такого, что могло бы так отрабатывать...
Следом за раскрашиваемой колонкой только одна колонка, реквизит, текстовый(правда, максимально-возможной длины 999 символов, так, как в нем содержится список кодов справочника "Марки", которые относятся к этой строке документа, значением в строку с разделителями).
По большому счету, это "странное поведение" не мешает, просто интересно, отчего это происходит...
Похоже, типа "какая-то глобальная переменная сеанса", так, как нигде это не сохраняется при выходе из программы и входе опять - регистр нижний, но, внутри сеанса - если переключилось на верхний регистр, так и остается, пока программу не закроешь... Открыть/закрыть этот документ - не влияет, если переключилось на ВР, то так и остается, и при повторном открытии, уже сразу в верхнем регистре эта колонка....
Название: Re: Меняется регистр шрифта в "раскрашенной" колонке
Отправлено: АЛьФ от 22 ноября 2024, 10:52
А есть возможность попробовать сделать с планом раскраски?
У меня приводится к верхнему регистру буфер при анализе на макрос раскраски. Обратно в таблицу из этого буфера ничего прилетать не должно.
Название: Re: Меняется регистр шрифта в "раскрашенной" колонке
Отправлено: MWW_Ruza от 22 ноября 2024, 23:18
Цитата: АЛьФ от 22 ноября 2024, 10:52А есть возможность попробовать сделать с планом раскраски?

Хм... С планом раскраски пока не разбирался, попробую в выходные заняться...
Если кто примерчиком поделится, сильно упростит задачу...
Название: Re: Меняется регистр шрифта в "раскрашенной" колонке
Отправлено: MWW_Ruza от 23 ноября 2024, 18:16
Пока, времени особо не было, но, почитал, что это такое...
Хорошо Ёпрст еще 10 лет назад описал на мисте: https://forum.mista.ru/topic.php?id=700284
По сути, как я понял, от обычной раскраски не сильно отличается:

1. Метод надо включить.
2. Колонка со скриптом может распологаться в любом месте таблицы, не только перед раскрашиваемой колонкой, как в обычном методе раскраски.
3. Скрипт в ней описывает раскраску всех колонок текущей строки, колонки в круглых скобках по порядку следования в таблице.
4. Все это работает только ПослеОткрытия формы.

Освобожусь, попробую... Если в чем-то не прав, поправьте, пока не начал делать.

Название: Re: Меняется регистр шрифта в "раскрашенной" колонке
Отправлено: Харлампий Дымба от 23 ноября 2024, 18:48
Честно говоря, до сих пор  это была единственная штука, которую я использовал в FormExe -
бухам со зрением очень удобно, если текущая строка в документах и справочниках подсвечивается.
Эх, если бы можно было сделать это не вставляя везде - колонку FormEx_ПланРаскраски было б вообще шикарно.
А так, да - всё написано в теме:
ПриНачалеРаботы:
FormExЗагружен=0;
Если ЗагрузитьВнешнююКомпоненту("FormEx.dll") = 1 Тогда
FormExЗагружен=1;
СервисFormEx = СоздатьОбъект("Сервис");
//разрешаем использование раскраски таблиц
СервисFormEx.ВключитьРаскраскуТаблиц();
КонецЕсли;
В документе добавить колонку с именем FormEx_ПланРаскраски
В ней в формуле прописать в моём случае:
?(FormExЗагружен=0,"","BRUSH_S[13421772]")а для текста в следующей колонке, как я понимаю "(FONT[13421772])" - нужным цветом только.



Название: Re: Меняется регистр шрифта в "раскрашенной" колонке
Отправлено: MWW_Ruza от 23 ноября 2024, 20:07
А еще вопросик...
Метод "ИспользоватьПланРаскраски() объекта Сервис с параметром 1 (соответсвенно, для отключения и перехода на старый принцип раскраски надо вызвать тот же метод, но с параметром 0)"
Можно использовать для текущей открываемой формы? В смысле, что-бы не переделывать, что уже давно работает "по старому", при открытии формы со списком, где нужно использовать ПланРаскраски, его включать, а при закрытии отключать? Это будет распространяться на текущую форму, или только глобально, если включил, то для всех форм?
Просто, много переделывать, того, что сделано раньше, "по старому" не охото...
Название: Re: Меняется регистр шрифта в "раскрашенной" колонке
Отправлено: Злоп от 24 ноября 2024, 12:18
Пишите уже цвета по-человечески ;-) в hex нотации BGR.
Например, выделить текущую строку курсором
BRUSH_S[0xCCCCCC] - серенькая будет
.
отступы от границ колонок еще можно задавать
LEFTPADDING[3]RIGHTPADDING[3]
Название: Re: Меняется регистр шрифта в "раскрашенной" колонке
Отправлено: АЛьФ от 25 ноября 2024, 09:17
Цитата: MWW_Ruza от 23 ноября 2024, 20:07А еще вопросик...
Метод "ИспользоватьПланРаскраски() объекта Сервис с параметром 1 (соответсвенно, для отключения и перехода на старый принцип раскраски надо вызвать тот же метод, но с параметром 0)"
Можно использовать для текущей открываемой формы? В смысле, что-бы не переделывать, что уже давно работает "по старому", при открытии формы со списком, где нужно использовать ПланРаскраски, его включать, а при закрытии отключать? Это будет распространяться на текущую форму, или только глобально, если включил, то для всех форм?
Просто, много переделывать, того, что сделано раньше, "по старому" не охото...


Не надо все сразу переделывать. Просто для теста попробовать с планом раскраски на одной форме, где ловится обсуждаемое поведение.
Название: Re: Меняется регистр шрифта в "раскрашенной" колонке
Отправлено: АЛьФ от 25 ноября 2024, 09:22
Цитата: Харлампий Дымба от 23 ноября 2024, 18:48Эх, если бы можно было сделать это не вставляя везде - колонку FormEx_ПланРаскраски было б вообще шикарно.

Так для этого делалось Сервис::ПланРаскраскиПоУмолчанию(). Как раз чтобы не вставлять колонку, во всех таблицах будет работать.
Название: Re: Меняется регистр шрифта в "раскрашенной" колонке
Отправлено: trdm от 25 ноября 2024, 15:21
Надо изучить.
Название: Re: Меняется регистр шрифта в "раскрашенной" колонке
Отправлено: Харлампий Дымба от 02 декабря 2024, 11:33
Цитата: АЛьФ от 25 ноября 2024, 09:22Так для этого делалось Сервис::ПланРаскраскиПоУмолчанию()
В 148 релизе не было, а дальше я проспал момент, когда это появилось. Отличная штука, переделал так клиенту. Повторно задонатил. Спасибо!
Название: Re: Меняется регистр шрифта в "раскрашенной" колонке
Отправлено: АЛьФ от 02 декабря 2024, 15:00
Спасибо за денежку. Наконец-то могу предметно поблагодарить. А то капает периодически и не знаю кому спасибо сказать.
Название: Re: Меняется регистр шрифта в "раскрашенной" колонке
Отправлено: trdm от 08 декабря 2024, 15:53
Цитата: Харлампий Дымба от 02 декабря 2024, 11:33В 148 релизе не было, а дальше я проспал момент, когда это появилось. Отличная штука, переделал так клиенту.
а как ты совмещаешь выборочную раскраску и план раскраски?
как это правильноделать?
 
Название: Re: Меняется регистр шрифта в "раскрашенной" колонке
Отправлено: Харлампий Дымба от 09 декабря 2024, 14:31
Цитата: АЛьФ от 02 декабря 2024, 15:00Спасибо за денежку. Наконец-то могу предметно поблагодарить.
Благодарность за благодарность? И вообще так нечестно - многие донатят, а спасибо только мне?! Обязуюсь молча поддерживать :) 

Цитата: trdm от 08 декабря 2024, 15:53а как ты совмещаешь выборочную раскраску и план раскраски?
как это правильно делать?
Да у меня собственно и не было задачи сделать выборочную раскраску - как раз наоборот. Единую везде.
Но посмотрел - такой код вполне работает (релиз 198):

глобальник:
Перем глСервисFormEx Экспорт;
Перем глFormExЗагружен Экспорт;                                                 
Процедура ПриНачалеРаботыСистемы()
    глFormExЗагружен=0;
    Если ЗагрузитьВнешнююКомпоненту("FormEx.dll") = 1 Тогда
        глFormExЗагружен=1;
        глСервисFormEx = СоздатьОбъект("Сервис");
        глСервисFormEx.ИспользоватьПланРаскраски(1);
        глСервисFormEx.ПланРаскраскиПоУмолчанию("(BRUSH_S[0xCCCCCC])");
    КонецЕсли;
КонецПроцедуры
//для выборочной раскраски в нужной форме первой вставляем текстовую колонку с заголовком (не идентификатором!) FormEx_ПланРаскраски
и формулой, например
?(глFormExЗагружен=0,"","BRUSH_S[0x0000FF]")Всё работает. С одним нюансом при работе с формами, в которых ещё нет ни одной строки - раскраска по умолчанию красит и первую пустую строку, а выборочная только существующую.
Цвета указал в 16ричной системе для эстетики Злопа, в реальности я пользуюсь десятичными из своей древней обработки.
Цвет фона.ert (https://disk.yandex.ru/d/iBOXMX86c_o9-w)


Название: Re: Меняется регистр шрифта в "раскрашенной" колонке
Отправлено: Злоп от 09 декабря 2024, 15:21
А зачем условие?
В формуле пишем просто "BRUSH_S[0x0000FF]" и все...
Если формекс не загружен - будет просто невидимая колонка с текстом, если загружен - будет раскраска работать 
Название: Re: Меняется регистр шрифта в "раскрашенной" колонке
Отправлено: АЛьФ от 09 декабря 2024, 16:41
Цитата: Харлампий Дымба от 09 декабря 2024, 14:31С одним нюансом при работе с формами, в которых ещё нет ни одной строки - раскраска по умолчанию красит и первую пустую строку, а выборочная только существующую.
Вот это не есть хорошо.
Название: Re: Меняется регистр шрифта в "раскрашенной" колонке
Отправлено: Arbuz от 09 декабря 2024, 17:52
Я так же, когда появилась раскраска по умолчанию, воткнул её при старте и не заморачивался с существующей выборочной — вроде всё работает.
Мне гораздо больше чем не/раскрашиваемая пустая строка мешает невнятная рамка фокуса на активной ячейке. На 10/11 винде её почти не видно.
Название: Re: Меняется регистр шрифта в "раскрашенной" колонке
Отправлено: trdm от 09 декабря 2024, 21:28
Цитата: Arbuz от 09 декабря 2024, 17:52Мне гораздо больше чем не/раскрашиваемая пустая строка мешает невнятная рамка фокуса на активной ячейке. На 10/11 винде её почти не видно.
а уж работать через РДП с 10/11 ваше иногда мука..