Правила форума
При написании вопроса или обсуждении проблемы, не забывайте указывать версию Clarion который Вы используете.
А так же пользуйтесь спец. тегами при вставке исходников!!!
Loop r_num = 1 to ?List{PropList:Exists,0} by 1
IF ?List{PropList:Exists,r_num} = True
IF LEN(?List{PROPLIST:HEADER,r_num}) > ?List{PROPLIST:width,r_num}
?List{PROPLIST:HEADER,r_num} = SUB( ?List{PROPLIST:HEADER,r_num}, 1, ?List{PROPLIST:width,r_num}-4) &'...'
END
END
END
“Есть всего 2 типа языков: те, на которые все жалуются и те, которыми никто не пользуется.” — Бьерн Страуструп
Ну уж не так просто. Я бы предложил вот так. Создаётся невидимое поле типа String на окне с шириной default. В него пишется строка заголовка столбца. Сравнивается получившаяся ширина этого поля и ширина столбца. В цикле убирается по одной букве с конца до тех пор пока не влезет. Но, если заголовок многострочный, нужно использовать поле Text, разбивать его на строки и подгонять каждую строку.
Можно попроще, если использовать моноширенный шрифт. Но это не универсально.
Если используется шрифт по умолчанию, всё проще - каждый символ имеет ширину 4 . Поэтому поле @s20, например, должно иметь ширину 80. И ещё могут быть заданы отступы текста от начала поля ( например, 1 с каждой стороны ) . Насчёт многострочных я не занимался, а подгонку листбокса по ширине полей делал...