Browse header - название

Clarion, Clarion 7

Модератор: Дед Пахом

Правила форума
При написании вопроса или обсуждении проблемы, не забывайте указывать версию Clarion который Вы используете.
А так же пользуйтесь спец. тегами при вставке исходников!!!
Ответить
gopstop2007
✯ Ветеран ✯
Сообщения: 1221
Зарегистрирован: 25 Март 2009, 21:55

Browse header - название

Сообщение gopstop2007 » 06 Апрель 2019, 13:21

Длинное название колонок которые не вмещаются, обрезаются границей колонки.

Код: Выделить всё

Например:              Цена продажи
Стандартный вид:       Цена прод| 
Мне нужно:             Цена п...|
Если ли готовое решение, в виде шаблона, строки кода?
Спасибо за внимание.
“Есть всего 2 типа языков: те, на которые все жалуются и те, которыми никто не пользуется.” — Бьерн Страуструп

kreator
✯ Ветеран ✯
Сообщения: 3256
Зарегистрирован: 28 Май 2009, 14:54
Откуда: Москва

Browse header - название

Сообщение kreator » 06 Апрель 2019, 15:07

Вообще реализация несложная, как мне представляется. Зашить бы в RTL!
We are hard at work… for you. :)

gopstop2007
✯ Ветеран ✯
Сообщения: 1221
Зарегистрирован: 25 Март 2009, 21:55

Browse header - название

Сообщение gopstop2007 » 06 Апрель 2019, 15:14

думал уже есть готовое :) ручками докидывать - геморно
реализация действительно не сложная, при открытии browse и resize column
“Есть всего 2 типа языков: те, на которые все жалуются и те, которыми никто не пользуется.” — Бьерн Страуструп

Аватара пользователя
Дед Пахом
Старичок
Сообщения: 2248
Зарегистрирован: 07 Июль 2005, 15:51
Откуда: Москва, Россия

Browse header - название

Сообщение Дед Пахом » 06 Апрель 2019, 15:15

Есть способ определить, обрезана строка или нет?
С уважением, ДП

gopstop2007
✯ Ветеран ✯
Сообщения: 1221
Зарегистрирован: 25 Март 2009, 21:55

Browse header - название

Сообщение gopstop2007 » 06 Апрель 2019, 15:28

Дед Пахом писал(а):
06 Апрель 2019, 15:15
Есть способ определить, обрезана строка или нет?
а зачем? берем всю строку и width колонки и все
например

Код: Выделить всё

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 типа языков: те, на которые все жалуются и те, которыми никто не пользуется.” — Бьерн Страуструп

Аватара пользователя
Дед Пахом
Старичок
Сообщения: 2248
Зарегистрирован: 07 Июль 2005, 15:51
Откуда: Москва, Россия

Browse header - название

Сообщение Дед Пахом » 06 Апрель 2019, 15:30

я насчитал 3 (три) листа в этом коде: ?list, ?ListSale, ?ListProd.
Вижу, исправлено.
С уважением, ДП

gopstop2007
✯ Ветеран ✯
Сообщения: 1221
Зарегистрирован: 25 Март 2009, 21:55

Browse header - название

Сообщение gopstop2007 » 06 Апрель 2019, 15:37

на коленке, скопировал готовый код :)
“Есть всего 2 типа языков: те, на которые все жалуются и те, которыми никто не пользуется.” — Бьерн Страуструп

Аватара пользователя
Дед Пахом
Старичок
Сообщения: 2248
Зарегистрирован: 07 Июль 2005, 15:51
Откуда: Москва, Россия

Browse header - название

Сообщение Дед Пахом » 06 Апрель 2019, 15:37

А, я прочитал невнимательно, надо ... добавлять в заголовке, а не в ячейке.
gopstop2007 писал(а):
06 Апрель 2019, 15:28
IF LEN(?List{PROPLIST:HEADER,r_num}) > ?List{PROPLIST:width,r_num}
Не понял, сравнивается ширина заголовка в символах с шириной колонки в точках на дюйм?
С уважением, ДП

gopstop2007
✯ Ветеран ✯
Сообщения: 1221
Зарегистрирован: 25 Март 2009, 21:55

Browse header - название

Сообщение gopstop2007 » 06 Апрель 2019, 16:05

мда, лажа, поспешил :(
“Есть всего 2 типа языков: те, на которые все жалуются и те, которыми никто не пользуется.” — Бьерн Страуструп

kreator
✯ Ветеран ✯
Сообщения: 3256
Зарегистрирован: 28 Май 2009, 14:54
Откуда: Москва

Browse header - название

Сообщение kreator » 06 Апрель 2019, 17:59

Ну уж не так просто. Я бы предложил вот так. Создаётся невидимое поле типа String на окне с шириной default. В него пишется строка заголовка столбца. Сравнивается получившаяся ширина этого поля и ширина столбца. В цикле убирается по одной букве с конца до тех пор пока не влезет. Но, если заголовок многострочный, нужно использовать поле Text, разбивать его на строки и подгонять каждую строку.
Можно попроще, если использовать моноширенный шрифт. Но это не универсально.
We are hard at work… for you. :)

Yufil
Ветеран движения
Сообщения: 1109
Зарегистрирован: 16 Май 2006, 13:34
Контактная информация:

Browse header - название

Сообщение Yufil » 06 Апрель 2019, 22:42

Если используется шрифт по умолчанию, всё проще - каждый символ имеет ширину 4 . Поэтому поле @s20, например, должно иметь ширину 80. И ещё могут быть заданы отступы текста от начала поля ( например, 1 с каждой стороны ) . Насчёт многострочных я не занимался, а подгонку листбокса по ширине полей делал...

Ответить