powered by simpleCommunicator - 2.0.61     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / PowerBuilder [игнор отключен] [закрыт для гостей] / Слои
25 сообщений из 25, страница 1 из 1
Слои
    #33493639
sboyko
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Уважаемые коллеги!
Есть ПБ10, МС2003.
В поле ДВ, раздел Position->
есть BAND
FOREGROUND
BACKGROUND.
ЕСли нажать правой клавишей мыши на поле то имеем-
bring TO BACK
BRING TO FRONT.
Экспериментально(так как не нашел описания) обнаружено что FOREGROUND/BACKGROUND позволяют гонять поле по всему ДВ. BAND позволяет двигаться внутри той BAND в кот находится поле(хотя в run time пренеприятнейшим образом поле из detail band попадало header band.
Вычисление координат поля в BAND считается относительно строки а в FOREGROUND абсолютные координаты.
ВОПРОС
1.Правильно ли я понимаю этот механизм?
2.как понимать bring TO BACK /BRING TO FRONT?
3.как вычислять FOREGROUND/BACKGROUND координаты объекта(прямоугольника) чтобы попадать в ЛЮБУЮ строку detail band ?
НУЖНО помещать в любую строку detail band неопределенное количество цветных прямоугольников произвольной длины и ширины.
...
Рейтинг: 0 / 0
Слои
    #33493864
Фотография Dmitry.
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
1. все правильно
2. bting to back/front это Z-order обьектов внутри одного бенда. т.е. если сделать to front на обьекте который находится в background бенде то он становится выше всех кото в том-же бенде.

3. точного механизма нет. надо прибавлять height от всех хедеров и всех строк чтобы получить абсолютную Y координату строки. (хотя может я ошибаюсь но для версии 7 мы делали так)
...
Рейтинг: 0 / 0
Слои
    #33493938
sboyko
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Непонятно что bring to front /send to back не меняет layer(band, foreground, background). Я еле еле понял layer, а как осмыслить bring to front /send не понимаю. Где это описано?
Должны ж быть какие то функции по определению высоты какогото бэнда! А там можно и считать высоту строк.
...
Рейтинг: 0 / 0
Слои
    #33494306
Локшин Марк
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
авторЯ еле еле понял layer, а как осмыслить bring to front /send не понимаю. Где это описано?
А что здесь понимать? Контролы должны быть отрисованы в каком-то порядке. Если они не перекрываются, то визуально этот порядок не имеет значения, а если перекрываются - то имеет (кто кого будет перекрывать). Вот эти самые bring to front /send и меняют этот порядок. В Windows используется аналогичный подход.
Найти можно, например, в описании BringToTop(...)
...
Рейтинг: 0 / 0
Слои
    #33494546
sboyko
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Локшин Марк авторЯ еле еле понял layer, а как осмыслить bring to front /send не понимаю. Где это описано?
А что здесь понимать? Контролы должны быть отрисованы в каком-то порядке. Если они не перекрываются, то визуально этот порядок не имеет значения, а если перекрываются - то имеет (кто кого будет перекрывать). Вот эти самые bring to front /send и меняют этот порядок. В Windows используется аналогичный подход.
Найти можно, например, в описании BringToTop(...)
Согласен!
Но теперь хочется понять взаимодействие этого механизма с LAYER <-> BAND/foreground/background. Или они совсем не связаны?
...
Рейтинг: 0 / 0
Слои
    #33494643
Локшин Марк
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
sboykoНо теперь хочется понять взаимодействие этого механизма с LAYER <-> BAND/foreground/background. Или они совсем не связаны?
Нет, не связаны.
...
Рейтинг: 0 / 0
Слои
    #33494661
Локшин Марк
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Они действуют в пределах слоя.
...
Рейтинг: 0 / 0
Слои
    #33494710
sboyko
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Остался совсем один маленький вопрос-
как все же пересчитать из BAND системы координат в систему FOREGROUND?
...
Рейтинг: 0 / 0
Слои
    #33495155
Фотография Dmitry.
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
28.
29.
30.
31.
32.
33.
34.
35.
36.
37.
38.
39.
40.
function integer of_getdwlinepos (datawindow ad_dwo, long al_line, string as_dwoname)

long ll_line
int li_Y
int li_index
int li_rowheight
int li_header1height
int li_header2height
int li_next_line

ll_line = long(ad_dwo.describe("DataWindow.FirstRowOnPage"))
li_Y = integer(ad_dwo.Describe("DataWindow.Header.Height"))

li_header1height = integer(ad_dwo.Describe("DataWindow.Header.1.Height"))
if li_header1height >  0  then
	li_next_line = ll_line
	DO WHILE (li_next_line >  0 ) and (li_next_line <= al_line)
		li_Y += li_header1height
		li_next_line++
		li_next_line = ad_dwo.FindGroupChange(li_next_line,  1 )
	LOOP

	li_header2height = integer(ad_dwo.Describe("DataWindow.Header.2.Height"))
	if li_header2height >  0  then
		li_next_line = ll_line
		DO WHILE (li_next_line >  0 ) and (li_next_line <= al_line)
			li_Y += li_header2height
			li_next_line++
			li_next_line = ad_dwo.FindGroupChange(li_next_line,  2 )
		LOOP
	end if
end if

FOR li_index = ll_line TO al_line -  1  
	li_rowheight = long(ad_dwo.Describe("evaluate('RowHeight()'," + string(li_index) + ")"))
	li_Y += li_rowheight
NEXT

li_Y += long(ad_dwo.Describe(as_dwoname + ".Y")) + (long(ad_dwo.Describe(as_dwoname + ".height")) /  2 )
return li_y
...
Рейтинг: 0 / 0
Слои
    #33495170
Фотография Dmitry.
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
но в этом примере нет футера групп
...
Рейтинг: 0 / 0
Слои
    #33496045
sboyko
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
2 Dmitry
Большое спасибо за пример! Буду изучать!
Пример самодостаточен или там где то есть грабли?
...
Рейтинг: 0 / 0
Слои
    #33496756
Фотография Dmitry.
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
там нет просчета футера груп и не тредполагается более 2-х групп.
(у нас футеры групп просто не используются)

для ускорения (если у вас статическая высота строк) можно вместо последнего цикла поставить detail.height * (al_line - 1)

а так этот алгоритм работал.
...
Рейтинг: 0 / 0
Слои
    #33498442
sboyko
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
2 Dmitry
большое спасибо
...
Рейтинг: 0 / 0
Слои
    #33499445
sboyko
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
2 Dmitry

Ура" Работает!
Спасибо.
Сразу возник след.вопрос-
аппетит приходит ...
как сделать в run-time прямоугольники в строках ДВ, похожие на поля в ДВ, которые можно растягивать, если тянуть за края этого поля. То есть не только размещать прямоугольники внутри ДВ а как в DESIGN работать с этими прямоугольниками. Работать - чтобы оператор мог растягивать прямоугольники и перемещать?
Если вы конечно этим занимались!
...
Рейтинг: 0 / 0
Слои
    #33499542
Локшин Марк
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
sboykoкак сделать в run-time прямоугольники в строках ДВ, похожие на поля в ДВ, которые можно растягивать, если тянуть за края этого поля. То есть не только размещать прямоугольники внутри ДВ а как в DESIGN работать с этими прямоугольниками. Работать - чтобы оператор мог растягивать прямоугольники и перемещать?
Свойства:
Moveable - двигать,
Resizeable - изменять размер
можно вручную обрабатывать нажатие и отпускание клавиши мыши...
...
Рейтинг: 0 / 0
Слои
    #33499903
sboyko
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Локшин Марк sboykoкак сделать в run-time прямоугольники в строках ДВ, похожие на поля в ДВ, которые можно растягивать, если тянуть за края этого поля. То есть не только размещать прямоугольники внутри ДВ а как в DESIGN работать с этими прямоугольниками. Работать - чтобы оператор мог растягивать прямоугольники и перемещать?
Свойства:
Moveable - двигать,
Resizeable - изменять размер
можно вручную обрабатывать нажатие и отпускание клавиши мыши...
Это понятно в принципе(как сделать пока не знаю). Основной вопрос философии - как зацепиться за края прямоугольника. В обычной жизни - курсор на них(краях) меняется на 2 параллельные полоски. Как это проделать?
...
Рейтинг: 0 / 0
Слои
    #33499959
Локшин Марк
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
sboykoЭто понятно в принципе(как сделать пока не знаю). Основной вопрос философии - как зацепиться за края прямоугольника. В обычной жизни - курсор на них(краях) меняется на 2 параллельные полоски. Как это проделать?
Не, ну это, Вы в состоянии прочесть написаное?
Локшин МаркСвойства:
Moveable - двигать,
Resizeable - изменять размер
Закладка Properites, на ней закладка Position...
...
Рейтинг: 0 / 0
Слои
    #33499969
Локшин Марк
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
sboykoВ обычной жизни - курсор на них(краях) меняется на 2 параллельные полоски. Как это проделать?
Код: plaintext
SetPointer ( type )
...
Рейтинг: 0 / 0
Слои
    #33499990
sboyko
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Локшин Марк sboykoЭто понятно в принципе(как сделать пока не знаю). Основной вопрос философии - как зацепиться за края прямоугольника. В обычной жизни - курсор на них(краях) меняется на 2 параллельные полоски. Как это проделать?
Не, ну это, Вы в состоянии прочесть написаное?
Локшин МаркСвойства:
Moveable - двигать,
Resizeable - изменять размер
Закладка Properites, на ней закладка Position...
Дело в том что в строках ДВ динамически создаются полоски с нужной координатой и длиной-которые представляют собой рабочее время водителя а само ДВ - нечто вроде календаря. Задача в том чтобы после указания рейса иметь возможность корректировать его по факту и для будущего улучшенного планирования загрузки водителей. То есть уменьшать планируемые простои.
...
Рейтинг: 0 / 0
Слои
    #33500015
Локшин Марк
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
авторДело в том что в строках ДВ динамически создаются полоски с нужной координатой и длиной-которые представляют собой рабочее время водителя а само ДВ - нечто вроде календаря. Задача в том чтобы после указания рейса иметь возможность корректировать его по факту и для будущего улучшенного планирования загрузки водителей. То есть уменьшать планируемые простои.
Чем вас не устраивает предложенное решение? У Вас в каждой строке должна быть независимая длина этой полоски? Ну так сделайте 2 полоски - одну видимую всегда, кроме текущей строки с нужным размером, а вторую растягиваемую, но видимую только в текущей строке и на rowfocuschanging немного обработать.
Можно самому смотреть где мышь, нажата она или нет, и соотв. изменять координаты и форму курсора.
...
Рейтинг: 0 / 0
Слои
    #33500038
sboyko
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
2 МАРК
Все устраивает. Теоретическая база ясна. А где зюйд зюйд вест неясно. Указующего пальца не хватает. Кроме всего полоски создаются ДИНАМИЧЕСКИ и их несколько штук в строке. И неясно где события типа OnMouseMove, OnMouseOver и событие пересечения границы.
...
Рейтинг: 0 / 0
Слои
    #33500089
Локшин Марк
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
sboykoВсе устраивает. Теоретическая база ясна. А где зюйд зюйд вест неясно. Указующего пальца не хватает. Кроме всего полоски создаются ДИНАМИЧЕСКИ и их несколько штук в строке.
То что они создаются динамически, и что их несколько штук на строке - ровным счетом ничего не меняет.
sboykoИ неясно где события типа OnMouseMove, OnMouseOver и событие пересечения границы.
pbm_mousemove
pbm_lbuttondown
pbm_lbuttonup
...
Рейтинг: 0 / 0
Слои
    #33500112
sboyko
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Локшин Марк sboykoВсе устраивает. Теоретическая база ясна. А где зюйд зюйд вест неясно. Указующего пальца не хватает. Кроме всего полоски создаются ДИНАМИЧЕСКИ и их несколько штук в строке.
То что они создаются динамически, и что их несколько штук на строке - ровным счетом ничего не меняет.
sboykoИ неясно где события типа OnMouseMove, OnMouseOver и событие пересечения границы.
pbm_mousemove
pbm_lbuttondown
pbm_lbuttonup
Вот это и есть руководящая и направляющая роль ГУРУ в жизни советского человека!
Спасибо Марк!
...
Рейтинг: 0 / 0
Слои
    #33500764
Фотография Dmitry.
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
На самом деле я - бы не создавал полоски динамически. я-бы создал статически в детайле с шириной зависимой от какого-то скрытого поля. и ничего не надо рисовать.
ресайз: по правому краю полоски поставить узкую полосочку с курсором SizeWE!
и менеджить указанные события для этой узкой полоски.
...
Рейтинг: 0 / 0
Слои
    #33502126
sboyko
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Dmitry.На самом деле я - бы не создавал полоски динамически. я-бы создал статически в детайле с шириной зависимой от какого-то скрытого поля. и ничего не надо рисовать.
ресайз: по правому краю полоски поставить узкую полосочку с курсором SizeWE!
и менеджить указанные события для этой узкой полоски.
Так поначалу и было. НО.. Колчество полосок заранее неизвестно, значит нужно забить по максимуму. Область видимости календаря-то есть количество дней и точность(1 час, полчаса..) тоже неизвестно. Три дня хотя бы часу - уже 72 часа - 72 Computed fields, плюс 36 полосок выполняемых рейсов - мне кажется что СЛИШКОМ много полей на одну страницу. Нужен неплохой компьютер у клиента. Следующие задачи по оптимизации потребуют доп мощности.
Поэтому я и перешел на динамическое формирование объектов и сразу получил вопросы которые вам и задаю. Работает быстрее но возросли трудности - а опыта такого нет.
...
Рейтинг: 0 / 0
25 сообщений из 25, страница 1 из 1
Форумы / PowerBuilder [игнор отключен] [закрыт для гостей] / Слои
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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