Инфо-Предприятие - Форум
ПрограммыПоддержкаКупитьПартнерам

Вернуться   Инфо-Предприятие - Форум > Платформа разработки > Общий
Регистрация Обмен опытом Справка Пользователи Календарь Поиск Сообщения за день Все разделы прочитаны

Ответ
 
Опции темы Поиск в этой теме Опции просмотра
  #1  
Старый 30.11.2024, 00:58
Михаил,Тверь Михаил,Тверь вне форума
Гуру
 
Регистрация: 21.01.2008
Адрес: Тверь
Сообщений: 4,125
По умолчанию Изменение шрифта в бланке

Не получается использовать объект ШРИФТ с многократно изменяемыми полями. Функции ВЫВЕСТИ получают параметр с заданными полями, но при выводе используются последние значения полей. На рисунке видно, со 2-й по 10 строку в цикле выводятся разные значения цвета и размера шрифта в функции ВЫВЕСТИ, но выводятся все строки синим цветом с размером 12. Ниже, в строках с 11 по 20 , в другом цикле, используются 2 разных, однократно заданных в бланке шрифта. Там и вывод ожидаемый. Но иногда бывает удобней установить параметры шрифта по условию, а вывод общий сделать. Никак не заставить бланк так работать?
Код:
// Описания общих переменных и функций
ПЕРЕМ ШРИФТ: ш012
ВЫЧИСЛИТЬ    
// Предрасчетная часть бланка
ВВЕСТИ      
нст=2
ВСТАВИТЬ_СТРОКУ(нст,30)  
ш1.цвет=цвКрасный                                                                   
ш1.размер=15                       
ш2.цвет=цвСиний
ш2.размер=12
     
ЦИКЛ ДЛЯ (и=2,10)          // в этом цикле поочередно меняем размер и цвет шрифта ш0, 
                          //но при выводе все строки выводятся синим цветом, размером 12
   ЕСЛИ ОСТ(и,2)=1 ТО
     ш0.цвет=цвКрасный     
     ш0.размер=15                                                              
   ИНАЧЕ     
     ш0.цвет=цвСиний     
     ш0.размер=12     
   КОНЕЦ_ЕСЛИ                                                                                   
   ВЫВЕСТИ(1,нст,СТР(и)+"   "+СТР(ш0.цвет)+"  "+СТР(ш0.размер),ш0)
   нст++
КОНЕЦ_ЦИКЛА
ЦИКЛ ДЛЯ (и=11,20)   // в этом цикле используются шрифты с однократно заданными полями. 
                     //Всё печатается, как ожидалось
   ЕСЛИ ОСТ(и,2)=1 ТО
    ВЫВЕСТИ(1,нст,СТР(и)+"   "+СТР(ш1.цвет)+"  "+СТР(ш1.размер),ш1)            
   ИНАЧЕ
    ВЫВЕСТИ(1,нст,СТР(и)+"   "+СТР(ш2.цвет)+"  "+СТР(ш2.размер),ш2)            
   КОНЕЦ_ЕСЛИ
   нст++                                                      
КОНЕЦ_ЦИКЛА
        
КОНЕЦ
Миниатюры
Нажмите на изображение для увеличения
Название: 29_11_2024.jpg
Просмотров: 16
Размер:	44.7 Кб
ID:	16704  
Ответить с цитированием
  #2  
Старый 30.11.2024, 11:15
Виталий Виталий вне форума
Завсегдатай
 
Регистрация: 10.01.2008
Адрес: Пермь
Сообщений: 1,163
По умолчанию

Цитата:
Сообщение от Михаил,Тверь Посмотреть сообщение
Не получается использовать объект ШРИФТ с многократно изменяемыми полями. Функции ВЫВЕСТИ получают параметр с заданными полями, но при выводе используются последние значения полей.Но иногда бывает удобней установить параметры шрифта по условию, а вывод общий сделать. Никак не заставить бланк так работать?
Этот момент давно заметил. Обходим через переприсваивание имени объекта ШРИФТ для ВЫВЕСТИ

Код:
ЦИКЛ ДЛЯ (и=2,10)          
   ЕСЛИ ОСТ(и,2)=1 ТО 
     ш0 ЭТО ШРИФТ
     ш0.цвет=цвКрасный     
     ш0.размер=15  
     ш!и = ш0 
   ИНАЧЕ 
     ш0 ЭТО ШРИФТ    
     ш0.цвет=цвСиний       
     ш0.размер=12                   
     ш!и = ш0
   КОНЕЦ_ЕСЛИ                                                                                   
   ВЫВЕСТИ(1,нст,СТР(и)+"   "+СТР(ш0.цвет)+"  "+СТР(ш0.размер),ш!и)
   нст++                                                        
КОНЕЦ_ЦИКЛА
Ответить с цитированием
  #3  
Старый 30.11.2024, 12:02
Михаил,Тверь Михаил,Тверь вне форума
Гуру
 
Регистрация: 21.01.2008
Адрес: Тверь
Сообщений: 4,125
По умолчанию

Цитата:
Сообщение от Виталий Посмотреть сообщение
Этот момент давно заметил. Обходим через переприсваивание имени объекта ШРИФТ для ВЫВЕСТИ

Код:
ЦИКЛ ДЛЯ (и=2,10)          
   ЕСЛИ ОСТ(и,2)=1 ТО 
     ш0 ЭТО ШРИФТ
     ш0.цвет=цвКрасный     
     ш0.размер=15  
     ш!и = ш0 
   ИНАЧЕ 
     ш0 ЭТО ШРИФТ    
     ш0.цвет=цвСиний       
     ш0.размер=12                   
     ш!и = ш0
   КОНЕЦ_ЕСЛИ                                                                                   
   ВЫВЕСТИ(1,нст,СТР(и)+"   "+СТР(ш0.цвет)+"  "+СТР(ш0.размер),ш!и)
   нст++                                                        
КОНЕЦ_ЦИКЛА
Пригодится . Если по другому никак.
Ответить с цитированием
Ответ


Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск
Опции просмотра

Ваши права в разделе
Вы не можете создавать темы
Вы не можете отвечать на сообщения
Вы не можете прикреплять файлы
Вы не можете редактировать сообщения

BB коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.

Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Размер шрифта на чеке virus267 Торговый склад 7 07.05.2018 14:28
Использование ключевого слово ИЗМЕНЕНИЕ в бланке infosystems Общий 0 16.09.2014 11:49
Возможно ли изменение цвета (подсветки) шрифта или фона на лету? Сергей Общий 1 27.10.2012 10:24


Часовой пояс GMT +4, время: 19:56.


vBulletin® Version 3.6.8.
Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
Перевод: zCarot
© 1999 Новасофт