Процедура ПоигратьсяСоШрифтамиОбласти(ТабДокумент,ИмяОбласти,знач МинимальныйШрифт=5,знач МаксимальныйШрифт=80) Экспорт
ВремТабДокумент = Новый ТабличныйДокумент;
ВремТабДокумент.Вывести(ТабДокумент.ПолучитьОбласть(ИмяОбласти));
ВремОбласть = ВремТабДокумент.Область(ИмяОбласти);
Надпись = ВремТабДокумент.Рисунки.Добавить(ТипРисункаТабличногоДокумента.Текст);
Надпись.Расположить(ВремОбласть);
МинимальныйШрифт = Мин(МинимальныйШрифт,ВремОбласть.Шрифт.Размер);
МаксимальныйШрифт = Макс(МаксимальныйШрифт,ВремОбласть.Шрифт.Размер);
ВысотаИсходная = Надпись.Высота;
ВремОбласть.АвтоВысотаСтроки = Истина;
ВремОбласть.ВысотаСтроки = 0;
Высота = Надпись.Высота;
Если ВысотаИсходная < Высота Тогда // Попробуем уменьшить
Пока 1=1 Цикл
Если Высота <= ВысотаИсходная Тогда
ТабДокумент.Область(ИмяОбласти).Шрифт = Новый Шрифт(ВремОбласть.Шрифт,,ВремОбласть.Шрифт.Размер);
Возврат;
КонецЕсли;
Если ВремОбласть.Шрифт.Размер <= МинимальныйШрифт Тогда
ТабДокумент.Область(ИмяОбласти).Шрифт = Новый Шрифт(ВремОбласть.Шрифт,,МинимальныйШрифт);
Возврат;
КонецЕсли;
ВремОбласть.Шрифт = Новый Шрифт(ВремОбласть.Шрифт,,ВремОбласть.Шрифт.Размер-1);
Высота = Надпись.Высота;
КонецЦикла;
ИначеЕсли Высота < ВысотаИсходная Тогда // Попробуем увеличить
Пока 1=1 Цикл
Если ВысотаИсходная < Высота Тогда
ТабДокумент.Область(ИмяОбласти).Шрифт = Новый Шрифт(ВремОбласть.Шрифт,,ВремОбласть.Шрифт.Размер-1);
Возврат;
КонецЕсли;
Если МаксимальныйШрифт <= ВремОбласть.Шрифт.Размер Тогда
ТабДокумент.Область(ИмяОбласти).Шрифт = Новый Шрифт(ВремОбласть.Шрифт,,МаксимальныйШрифт);
Возврат;
КонецЕсли;
ВремОбласть.Шрифт = Новый Шрифт(ВремОбласть.Шрифт,,ВремОбласть.Шрифт.Размер+1);
Высота = Надпись.Высота;
КонецЦикла;
КонецЕсли;
КонецПроцедуры
|