Вход | Регистрация

  1  2
1С:Предприятие :: 1С:Предприятие 7.7 и ранее

v7: Formex, СоздатьШрифт, размер - не соответствует...?

v7: Formex, СоздатьШрифт, размер - не соответствует...?
Я
   Злопчинский
 
06.05.18 - 13:11
Formex 2.0.5.120
Делаю шрифт, назначаю на ТЗ на форме
    
КодШрифт  = глСервис.СоздатьШрифт("Arial Narrow",10); 
РасшФормы = СоздатьОбъект("РасширениеФормы");
РасшФормы.ПолучитьАтрибут("ТЗФорма").Шрифт = КодШрифт;
РасшФормы = "";    

Отображается явно не шрифт размером "10", а очень мелкий...
что делаю не так..?

@Альф, приди!
 
 
   Злопчинский
 
101 - 19.05.18 - 17:39
Ап
   АЛьФ
 
102 - 21.05.18 - 10:58
2(98) Есть метод РасширениеФормы::ПолучитьКоординатыЯчейки(). С помощью него и вычисления координат контрола самой ТЗ можно вычислить количество видимых строк.
2(99) Эмпирически вычислить коэффициент нужного шрифта относительно экранных размеров контрола. Будет самым простым.
   Злопчинский
 
103 - 21.05.18 - 11:37
(102)
по (98) учтем
по (99) много шрифтов и вариантов (болд, италик). вдобавок зависит от возможности переноса строк на пробелах. короче: не пойдет ибо слишком муторно
   АЛьФ
 
104 - 21.05.18 - 12:01
2(103) Не вопрос. Предложи другое решение.
   Злопчинский
 
105 - 21.05.18 - 12:19
(104) умный какой... ;-) спрашивал бы я если бы знал другое приемлемое решение...
   Злопчинский
 
106 - 21.05.18 - 12:19
(104) вариант-то есть, менее геморный, но интерфейсно неподходящий и тормозной
   Sserj
 
107 - 21.05.18 - 12:23
Ксати АЛьФ а чем закончилась история с разработкой переноса больших баз в SQL?
Удалось победить или так и осталось в состоянии выгружается, но при загрузке ругается?
   Злопчинский
 
108 - 21.05.18 - 12:30
Кстати, 133 релиз Formex'а имхо работает как-то устойчивее чем предыдущий какой я использовал. По крайней мере у этого нет глюков (пока не наталкивался) с "неотработкой" ПослеОткрытия - на старом формексе регулярно были ситуации когда ПослеОткрытия как-то не так отрабатывал, сейчас - все ожидаемо. Но пока точно непонятно, ибо сейчас разработку веду на домашнем компе, а ранее - на серваке...
   АЛьФ
 
109 - 21.05.18 - 12:36
2(107) Пока осталось в таком состоянии. Если клюнет жареный петух на работе, буду срочно доделывать.
   АЛьФ
 
110 - 21.05.18 - 12:36
2(105) Воооот...
2(106) Так озвучь, может чего покумекаем сообча.
 
 Рекламное место пустует
   Злопчинский
 
111 - 21.05.18 - 12:51
(110) автоподбор шрифта можно выполнить без особых проблем в печатной форме. Например, я так подбираю шрифт для печати всяких складских этикеток, используя тестовый вывод и КоличествоСтраниц().

Может на форму положить некое "текстовое" поле типа Йокселем табличный документ или ТЗ из одной строки с возможностью переноса строки в ячейке ТЗ (такое есть?) - и ширину такого объекта сделать "равной" ширине текстового контрола и выводить в такой контрол текст и смотреть высоту получившейся конструкции (высоту ячейки ТЗ или ячейки Йокселя) и сравнивать ее с размером текстовго контрола...?
   Djelf
 
112 - 21.05.18 - 14:51
(111) Йоксель на форму не обязательно.
Да, так сработает - автоширина области и подбор шрифта, сначала грубо коэффициентом, потом можно точнее.
Только все равно как то оно для шрифтов больше 14 не правильно считает...
   АЛьФ
 
113 - 21.05.18 - 15:50
А может проще будет поискать ActiveX какой-нибудь вместо текста?
   Злопчинский
 
114 - 21.05.18 - 16:36
(113) какой?
   trdm
 
115 - 21.05.18 - 16:41
(109) Ну, dat-файл - это просто текст. Его парсить и выполнять, думаю там работы не особо много.
   Злопчинский
 
116 - 21.05.18 - 16:43
(112) то есть ты предлагаешь примерно так:
1. имеем форму с контролом "Текст" ширины Текст.Ш и высоты Текст.В
2. пристегиваем к форме таблицу Таб с единственной секцией и единственной ячейкой, автовысота=1, автоперенос=1
3. Выводим Таб, в нее секцию (без показа на экран)
3. Считываем ширину Текст.Ш
4. Устанавливаем ширину столбца Таб = Ш
5. Выводим в Таб наш произвольный текст
6. Считываем получившуюся высоту секции таблицы (как? и без вывода на экран сработает?
7. Сравниваем высоту секции с Текст.В
8. Если п.7 не удовлетворяет - меняем размер шритфа в выведенной секции и см. снова с п.6
9. Если удовлетворяет - имеем примерный достаточно точный размер шрифта и назначаем его на Текст на форме - так?
   Djelf
 
117 - 22.05.18 - 09:14
(116) Да, примерно так. В йокселе расчеты сработают и без показа на экран.
Но как я и говорил считает как то не совсем точно.
В коде все строго по mfc, я проверял.
Но и excel точно так же (по виду) считает.
   Djelf
 
118 - 22.05.18 - 09:25
А вот пример реализации подбора размера на mfc: https://stackoverflow.com/questions/29825498/sizing-font-to-fit-in-a-rectangle
Примерно то же самое и на йокселе получится.
   Злопчинский
 
119 - 22.05.18 - 19:03
(118) ок. попробую.
а как соотносится высота текстовго контрола на форме и высота ячейки таблицы йокселя? 1-к-1..?
   Djelf
 
120 - 22.05.18 - 19:19
(119) Увы, в твипах! http://yoksel.net.ru/Ob'ektyVstroennogoJazyka/Oblast'TablichnogoDokumenta/Rasschitat'Razmery
Но пересчитать не сильно сложно
https://ru.wikipedia.org/wiki/Твип
подогнать коэффициент чтобы чуток с запасом влезало и, имхо, срастется.
   MadDAD
 
121 - 24.05.18 - 10:34
(98)     
Функция ВидимыхСтрокТЗ(ИмяТЗ, Форма)
    Высота = 0;
    Верх = 0;
    Низ = 0;

    
    РасшФормы = СоздатьОбъект("РасширениеФормы");
    РасшФормы.УстановитьФорму(Форма);

    РасшФормы.ПолучитьАтрибут(ИмяТЗ).ПолучитьКоординаты(0, 0, 0, Высота);
    РасшФормы.ПолучитьКоординатыЯчейки(ИмяТЗ, 1, 1, верх, 0, Низ, 0, 0);
    
    Высота = Высота - 7;    
    ВысотаСтроки = Низ - Верх + 1;
    КоличествоСтрок = (Высота - ВысотаСтроки) / ВысотаСтроки;
    Возврат КоличествоСтрок;
КонецПроцедуры
   Злопчинский
 
122 - 25.05.18 - 17:57
(121) А количество строк многострочной части списка (журанала, списка справочника, ТЧ документа) - получить так можно?
   Злопчинский
 
123 - 25.05.18 - 18:05
(121) а что за волшебный оператор (остальное понятно)
Высота = Высота - 7;

???
   Злопчинский
 
124 - 25.05.18 - 18:13
(121) считает в целом вроде норм... даже для многострочных ТЗ (устанавливаемых через формекс)

но..
вот например выдается такая цифра
18:10:51: после открытия: количество строк 
 = 5.02083333333333333333

.
здесь как бы понятно.. для точного значения можно добавить 0.5 и взять ЦЕЛ
.
а вот если получится, например, = 4.98
- это неточно посчиталось (можно принять как 5) или действительно влазит полностью всего 4 строки..?
   MadDAD
 
125 - 28.05.18 - 08:22
(124)
"Высота = Высота - 7;" пояивлось после того как я взял экранную линейку и сравнил в пикселях то что возвращает РасшФормы.ПолучитьАтрибут(ИмяТЗ).ПолучитьКоординаты(0, 0, 0, Высота) и то что я вижу на линейке.
Разница в 7 пикселей, за счет рамок, теней и чего-то еще.

Если получиться 4.98, это будет означать что ячейка будет видна почти полностью, но текст в ней не отрисован, т.к. 1С считает что, он не влез. Т.е. по факту это 4 с текстом.

Так что самый правильный вариант брать Цел()
   MadDAD
 
126 - 28.05.18 - 08:24
(122) А тут хз, не пробовал. Если получится с многострочной частью работать как с ТЗ, то думаю, получится
   Злопчинский
 
127 - 17.06.18 - 19:45
@Альф, на dorex.pro лежит 131 версия, а у меня внезапно 133 обнаружилась.. это верно, что 133 есть уже?
   Злопчинский
 
128 - 19.06.18 - 14:33
Правильные размеры шрифтов дает 133
  1  2

Список тем форума
Рекламное место пустует  Рекламное место пустует
ВНИМАНИЕ! Если вы потеряли окно ввода сообщения, нажмите Ctrl-F5 или Ctrl-R или кнопку "Обновить" в браузере.
Тема не обновлялась длительное время, и была помечена как архивная. Добавление сообщений невозможно.
Но вы можете создать новую ветку и вам обязательно ответят!
Каждый час на Волшебном форуме бывает более 2000 человек.
Рекламное место пустует