Привет всем !
Существует ли какой-то алгоритм (или методика) расчёта ширины строки символов текущим шрифтом ?
Пример:
- В окне показана символьная строка, ширина (Width) строки известна.
- Строке присваиваются различные наименования из БД;
- Требуется на момент показа знать, отобразилось наименование полностью или оно
обрезано из-за недостатка места (ну и вывести предупреждение или поменять цвет строки и т.д.)
Для моноширинного шрифта (Courier, Consolas и т.д.), методом тыка можно подобрать коээфициент
связи кол-ва символов в строке и её ширины. Но что делать с "обычными" Arial, Times и т.д. шрифтами ?
Какой-то тупик. Буду благодарен за любую наводку.
Расчёт ширины строки
Модератор: Дед Пахом
Правила форума
При написании вопроса или обсуждении проблемы, не забывайте указывать версию Clarion который Вы используете.
А так же пользуйтесь спец. тегами при вставке исходников!!!
При написании вопроса или обсуждении проблемы, не забывайте указывать версию Clarion который Вы используете.
А так же пользуйтесь спец. тегами при вставке исходников!!!
- Игорь Столяров
- Ветеран движения
- Сообщения: 7373
- Зарегистрирован: 07 Июль 2005, 10:19
- Откуда: г. Ростов-на-ДоМу
- Благодарил (а): 13 раз
- Поблагодарили: 48 раз
- Дед Пахом
- Старичок
- Сообщения: 3133
- Зарегистрирован: 07 Июль 2005, 16:51
- Откуда: Москва, Россия
- Благодарил (а): 10 раз
- Поблагодарили: 28 раз
- Контактная информация:
Расчёт ширины строки
Вот здесь например: https://stackoverflow.com/questions/172 ... -in-pixels
С уважением, ДП
- Игорь Столяров
- Ветеран движения
- Сообщения: 7373
- Зарегистрирован: 07 Июль 2005, 10:19
- Откуда: г. Ростов-на-ДоМу
- Благодарил (а): 13 раз
- Поблагодарили: 48 раз
Расчёт ширины строки
Как я понял, там та же методика, что в Clarion используется для определения размера картинки.
Т.е. вывести "как есть" и потом получить размер того что вывелось ...
Можно попробовать заюзать это со строкой с шириной Default ...
Даже не представляю, будет менять строка ширину в зависимости от текста или нет.
Буду пробовать. Спасибо !
Т.е. вывести "как есть" и потом получить размер того что вывелось ...
Можно попробовать заюзать это со строкой с шириной Default ...
Даже не представляю, будет менять строка ширину в зависимости от текста или нет.
Буду пробовать. Спасибо !
За теми кто отстал - не возвращаться. (С) Кодекс
- Дед Пахом
- Старичок
- Сообщения: 3133
- Зарегистрирован: 07 Июль 2005, 16:51
- Откуда: Москва, Россия
- Благодарил (а): 10 раз
- Поблагодарили: 28 раз
- Контактная информация:
Расчёт ширины строки
Кстати, можно без всякого API. Создаём строку CREATE(0, create:string), присваиваем ей шрифт и значение, получаем длину, делаем DESTROY.
С уважением, ДП
- Игорь Столяров
- Ветеран движения
- Сообщения: 7373
- Зарегистрирован: 07 Июль 2005, 10:19
- Откуда: г. Ростов-на-ДоМу
- Благодарил (а): 13 раз
- Поблагодарили: 48 раз
Расчёт ширины строки
Спасибо - всё работает.
В моём случае - все параметры строки наследуются из родительского окна:
Код: Выделить всё
i# = Create(0,Create:String)
If i#
i#{Prop:Text} = 'Маленькой ёлочке холодно зимой'
Message(Len(Clip(i#{Prop:Text})) & ' -> ' & i#{Prop:Width})
i#{Prop:Text} = 'ЖШЩЮШШШШWWWMMMMZZZUUUUUФФЫЫЫЫЫ'
Message(Len(Clip(i#{Prop:Text})) & ' -> ' & i#{Prop:Width})
end
Destroy(i#)
За теми кто отстал - не возвращаться. (С) Кодекс