powered by simpleCommunicator - 2.0.61     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / PowerBuilder [игнор отключен] [закрыт для гостей] / изменение высоты колонок при autoSize`е
19 сообщений из 19, страница 1 из 1
изменение высоты колонок при autoSize`е
    #33373651
Дремучий
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Хм... то ли день сегодня какой-то неправильный, то ли я клиню по страшному, то ли это проблема реальна...

Ситуация: У меня есть DW (grid). Я подсвечиваю в нем те строки (в BackGround color каждой колонки прописываю что-то типа if( highlight = 1, 16777152, 16777215 )) где не заполнены обязательные поля. Все бы хорошо, но... в общем я вынужден использовать autoSize = true (на detail и на каждой колонке). Результат (с визуальной точки зрения) ужасен! Подсвечивается только то количество строк, которое заполнено данными в каждой конкретной колонке. Решением (вроде бы) является изменение высоты колонки в зависимости от высоты текущей строки... но ведь autoSize = true для каждой колонки (и я не знаю какая колонка будет в данной строке иметь максимальную высоту).

Кто может подсказать как можно решить эту проблему? Требуемый результат - "красивая" (т.е. ровная) подсветка строки по некому условию.
...
Рейтинг: 0 / 0
изменение высоты колонок при autoSize`е
    #33373778
Фотография AIZ
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Положи во всю длину строки прямоугольник (Send to Back). Задай условие его цвета. Его Height - вычисляемое по высоте Detail - Long(describe('Object.DataWindow.Detail.Height' )). Поля - transparent.
...
Рейтинг: 0 / 0
изменение высоты колонок при autoSize`е
    #33373863
Фотография Ikar
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Эх, боюсь ввести в заблуждение, но, кажется, был такой глюк. Боролись так: если после подстветки сделать перерисовку DW ручками - SetRedraw(false) и сразу SetRedraw(true), то подсветка прорисовывется полностью и нормально...
---
С уважением, IKAR

ikar@ikarhomecenter.ru
IkarHomeCenter
...
Рейтинг: 0 / 0
изменение высоты колонок при autoSize`е
    #33374087
Дремучий
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
2 Ikar
Это не помогает... хотя выглядит, конечно, наиболее заманчиво.

AIZПоложи во всю длину строки прямоугольник (Send to Back). Задай условие его цвета. Его Height - вычисляемое по высоте Detail - Long(describe('Object.DataWindow.Detail.Height' )). Поля - transparent.
Это из рабочего варианта? Если "да", то как решались следующие проблемы
1. Проблема в "выбором строки", т.е. с this.selectRow( currentRow, true ).
2. Long(describe('Object.DataWindow.Detail.Height' )) при autoSize = true (на detail) у меня не работает! Я всегда получаю тот результат, который установлен в painter`е (в моем случае это 72).
...
Рейтинг: 0 / 0
изменение высоты колонок при autoSize`е
    #33374097
Фотография ЗоринАндрей
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
AIZПоложи во всю длину строки прямоугольник (Send to Back). Задай условие его цвета. Его Height - вычисляемое по высоте Detail - Long(describe('Object.DataWindow.Detail.Height' )). Поля - transparent.

Во первых - без Object.
Во вторых - все равно не работает. Describe выдает значение выставленное в painter. Для определения высоты detail использовать функцию RowHeight() и никаких Describe.
В третьих - как это вы себе представляете размещение прямоугольника в detail band во всю длину строки в Grid???
...
Рейтинг: 0 / 0
изменение высоты колонок при autoSize`е
    #33374121
Фотография ЗоринАндрей
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
2 Дремучий
а можно скриншотик или .srd ?
а то я что то не совсем понимаю в чем проблема состоит.
...
Рейтинг: 0 / 0
изменение высоты колонок при autoSize`е
    #33374126
Фотография AIZ
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
C RowHeight() полностью согласен, просто забыл, что использовал именно ееБ а не describe (давно это было). А положить в Grid прямоугольник во всю длину строки не проблема. Только что еще раз проверил
...
Рейтинг: 0 / 0
изменение высоты колонок при autoSize`е
    #33374162
Фотография AIZ
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Ну, а что касается подсветки прямоугольника, то
If(CurrentRow() = GetRow(),RGB(150,200,250),Long(describe("DataWindow.Color")))
в Brush Color
...
Рейтинг: 0 / 0
изменение высоты колонок при autoSize`е
    #33374208
Дремучий
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Это исходная проблема
...
Рейтинг: 0 / 0
изменение высоты колонок при autoSize`е
    #33374217
Дремучий
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
А это проблема с прямоугольником и "выбором строки", т.е. с this.selectRow( currentRow, true ).
...
Рейтинг: 0 / 0
изменение высоты колонок при autoSize`е
    #33374432
Nikulitsa A.
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
ДремучийСитуация: У меня есть DW (grid). Я подсвечиваю в нем те строки (в BackGround color каждой колонки прописываю что-то типа if( highlight = 1, 16777152, 16777215 )) где не заполнены обязательные поля.
Если необходимо подсвечивать всю строку, то свойство Background надо устанавливать для Detail, а не для отдельных колонок.
P.S. Только фоновый цвет полей поставить Transparent
...
Рейтинг: 0 / 0
изменение высоты колонок при autoSize`е
    #33374478
White Owl
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Nikulitsa A. ДремучийСитуация: У меня есть DW (grid). Я подсвечиваю в нем те строки (в BackGround color каждой колонки прописываю что-то типа if( highlight = 1, 16777152, 16777215 )) где не заполнены обязательные поля.
Если необходимо подсвечивать всю строку, то свойство Background надо устанавливать для Detail, а не для отдельных колонок.
P.S. Только фоновый цвет полей поставить Transparent
Фоновый цвет полей тоже надо красить. Иначе можно получить черные прямоугольники вместо полей.
Цвет фона в Detail считается по формуле и на строке есть редактируемые поля с прозрачным фоном. Начинаешь редактировать одно поле, все остальные редактируемые поля в этой строке чернеют. Переходишь на другую строку - цвет восстанавливается. Лечится запретом на прозрачный фон :)
...
Рейтинг: 0 / 0
изменение высоты колонок при autoSize`е
    #33374541
Фотография ЗоринАндрей
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ДремучийА это проблема с прямоугольником и "выбором строки", т.е. с this.selectRow( currentRow, true ).
Странно... selected row должна выделяться системными highlight text/background и что-то там цветом выделять бесполезно. разве что зюку какую повесить в первой колонке с Visible expression = if ( isSelected ( getrow() ) , if ( <надо выделить> , 1 , 0 ) , 0 )
...
Рейтинг: 0 / 0
изменение высоты колонок при autoSize`е
    #33376364
Дремучий
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
В общем я решил свою проблему. Отталкивался совета:
AIZПоложи во всю длину строки прямоугольник (Send to Back). Задай условие его цвета. Его Height - вычисляемое по высоте Detail - Long(describe('Object.DataWindow.Detail.Height' )). Поля - transparent.
Сделано было так:
Кидался прямоугольник на всю ширину строки. На Brush Color вешалось:
Код: plaintext
if( CurrentRow() = GetRow(), RGB( 0 ,  0 ,  96 ), if( highlight =  1 ,  16777152 ,  16777215  ))
на width прямоугольника вешалось (это имхо, очевидно):
Код: plaintext
long( describe( "{последняя колонка}.width" )) + long( describe( "{последняя колонка}.x" ))
на height прямоугольника вешалось (это имхо, тоже очевидно):
Код: plaintext
rowHeight() -  8 

на каждую колонку для textColor вешалось:
Код: plaintext
if( CurrentRow() = GetRow(), RGB( 255 ,  255 ,  255 ), RGB( 0 ,  0 ,  0 ))

Кроме того, везде пришлось отключать (по понятным причинам :() this.selectRow( currentRow, true ). Учитывая, что у нас это прописывалось в базовых объектах ;) пришлось где нужно добавлять this.selectRow( 0, false )

В принципе, проблема решена... но мне решение не нравится. Если есть какое-нибудь иное решение, то мне будет интересно его узнать.
...
Рейтинг: 0 / 0
изменение высоты колонок при autoSize`е
    #33376704
Фотография ЗоринАндрей
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Дремучий
на width прямоугольника вешалось (это имхо, очевидно):
Код: plaintext
long( describe( "{последняя колонка}.width" )) + long( describe( "{последняя колонка}.x" ))

Что происходит с прямоугольником при перетаскивании и изменении ширины колонок в гриде?
...
Рейтинг: 0 / 0
изменение высоты колонок при autoSize`е
    #33377412
Дремучий
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ЗоринАндрейЧто происходит с прямоугольником при перетаскивании и изменении ширины колонок в гриде?
Перетаскивания колонок у нас отключено ;). А при изменении ширины все нормально. Работает как должно. :)
Были проблемы с сортировкой по клику на заголовке... но это были проблемы из-за особенностей реализации сортировки и к сабжу это имеет слабое отношение.
...
Рейтинг: 0 / 0
изменение высоты колонок при autoSize`е
    #33377589
rcryo
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
авторФоновый цвет полей тоже надо красить. Иначе можно получить черные прямоугольники вместо полей.
ничего такого не встречал. PB9 - 10.2.8100
по заданному вопросу: проблема решается очень просто, как уже писал Nikulitsa A. Все поля в DW прозрачные, а цвет фона по условию:
Код: plaintext
dw_1.Modify("DataWindow.Detail.Color= 'if( highlight = 1, 16777152, 16777215 )'")
и добавляете в событие rowfocuschanged строку: SetRedraw(True)
на скриншоте поля с авторесайзом: подсвечены четные строки, текущая строка - желтая (тоже по условию)
...
Рейтинг: 0 / 0
изменение высоты колонок при autoSize`е
    #33380323
Tea-pot
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Ya reshila etu problemu pomestiv "compute field" pozadi togo polya, kotoroe Autosize

I nikakih zamorochek s redraw ne ponadobilos'

Код: plaintext
1.
2.
3.
4.
5.
6.
7.
 column=(type=char( 500 ) update=yes updatewhereclause=yes name=attrib_text dbname="preinvoice_std_text.attrib_text" )
 column=(type=char( 0 ) updatewhereclause=yes name=compute_0005 dbname="compute_0005" )

column(band=detail id= 5  alignment="0" tabsequence= 0  border="5" color="33554432" x="1001" y="4" height="56" width="2080" format="[general]" html.valueishtml="0"  name=compute_0005 visible="1" edit.limit= 0  edit.case=any edit.focusrectangle=no edit.autoselect=no edit.imemode= 0  edit.displayonly=yes  font.face="Arial" font.height="-8" font.weight="400"  font.family="2" font.pitch="2" font.charset="0" background.mode="2" background.color="1073741824" )

column(band=detail id= 3  alignment="0" tabsequence= 30  border="5" color="33554432" x="1001" y="4" height="56" width="2080" format="[general]" html.valueishtml="0"  name=attrib_text visible="1" height.autosize=yes edit.limit= 0  edit.case=any edit.focusrectangle=no edit.autoselect=yes edit.nilisnull=yes edit.autovscroll=yes edit.imemode= 0  edit.vscrollbar=yes  font.face="Arial" font.height="-8" font.weight="400"  font.family="2" font.pitch="2" font.charset="0" background.mode="2" background.color="1073741824" )

...
Рейтинг: 0 / 0
изменение высоты колонок при autoSize`е
    #33384965
rcryo
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
как там с работой на PB в австралии?
мейл в профиле
...
Рейтинг: 0 / 0
19 сообщений из 19, страница 1 из 1
Форумы / PowerBuilder [игнор отключен] [закрыт для гостей] / изменение высоты колонок при autoSize`е
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]