Гость
Целевая тема:
Создать новую тему:
Автор:
Форумы / PowerBuilder [игнор отключен] [закрыт для гостей] / Слои / 25 сообщений из 25, страница 1 из 1
20.01.2006, 11:23
    #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
20.01.2006, 12:19
    #33493864
Dmitry.
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Слои
1. все правильно
2. bting to back/front это Z-order обьектов внутри одного бенда. т.е. если сделать to front на обьекте который находится в background бенде то он становится выше всех кото в том-же бенде.

3. точного механизма нет. надо прибавлять height от всех хедеров и всех строк чтобы получить абсолютную Y координату строки. (хотя может я ошибаюсь но для версии 7 мы делали так)
...
Рейтинг: 0 / 0
20.01.2006, 12:38
    #33493938
sboyko
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Слои
Непонятно что bring to front /send to back не меняет layer(band, foreground, background). Я еле еле понял layer, а как осмыслить bring to front /send не понимаю. Где это описано?
Должны ж быть какие то функции по определению высоты какогото бэнда! А там можно и считать высоту строк.
...
Рейтинг: 0 / 0
20.01.2006, 14:02
    #33494306
Локшин Марк
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Слои
авторЯ еле еле понял layer, а как осмыслить bring to front /send не понимаю. Где это описано?
А что здесь понимать? Контролы должны быть отрисованы в каком-то порядке. Если они не перекрываются, то визуально этот порядок не имеет значения, а если перекрываются - то имеет (кто кого будет перекрывать). Вот эти самые bring to front /send и меняют этот порядок. В Windows используется аналогичный подход.
Найти можно, например, в описании BringToTop(...)
...
Рейтинг: 0 / 0
20.01.2006, 15:15
    #33494546
sboyko
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Слои
Локшин Марк авторЯ еле еле понял layer, а как осмыслить bring to front /send не понимаю. Где это описано?
А что здесь понимать? Контролы должны быть отрисованы в каком-то порядке. Если они не перекрываются, то визуально этот порядок не имеет значения, а если перекрываются - то имеет (кто кого будет перекрывать). Вот эти самые bring to front /send и меняют этот порядок. В Windows используется аналогичный подход.
Найти можно, например, в описании BringToTop(...)
Согласен!
Но теперь хочется понять взаимодействие этого механизма с LAYER <-> BAND/foreground/background. Или они совсем не связаны?
...
Рейтинг: 0 / 0
20.01.2006, 15:57
    #33494643
Локшин Марк
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Слои
sboykoНо теперь хочется понять взаимодействие этого механизма с LAYER <-> BAND/foreground/background. Или они совсем не связаны?
Нет, не связаны.
...
Рейтинг: 0 / 0
20.01.2006, 16:02
    #33494661
Локшин Марк
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Слои
Они действуют в пределах слоя.
...
Рейтинг: 0 / 0
20.01.2006, 16:18
    #33494710
sboyko
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Слои
Остался совсем один маленький вопрос-
как все же пересчитать из BAND системы координат в систему FOREGROUND?
...
Рейтинг: 0 / 0
20.01.2006, 19:32
    #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
20.01.2006, 19:44
    #33495170
Dmitry.
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Слои
но в этом примере нет футера групп
...
Рейтинг: 0 / 0
22.01.2006, 13:12
    #33496045
sboyko
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Слои
2 Dmitry
Большое спасибо за пример! Буду изучать!
Пример самодостаточен или там где то есть грабли?
...
Рейтинг: 0 / 0
23.01.2006, 11:19
    #33496756
Dmitry.
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Слои
там нет просчета футера груп и не тредполагается более 2-х групп.
(у нас футеры групп просто не используются)

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

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

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


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