powered by simpleCommunicator - 2.0.50     © 2025 Programmizd 02
Форумы / PowerBuilder [игнор отключен] [закрыт для гостей] / Проблемы со скроллингом в dddw. Do not open by DialUp!
14 сообщений из 14, страница 1 из 1
Проблемы со скроллингом в dddw. Do not open by DialUp!
    #32430286
Dmitry Belousov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Заранее прошу прощения у уважаемого модератора за huge posting.
Просто без приведенного простейшего примера мой вопрос будет выглядеть слишком расплычато и голословно...
So, не гневись ASCRUS!


На PB 6.5 при закачке в dddw достаточно большого значения > 5000
и последующего скролинга по dddw клавишами или мышью/скролбаром приложение стабильно грохает GDI в W2k.
Начинают криво перерисовываться окна приложений... Дальше - больше вплоть до полного провиса системы под холодную перезагрузку.
Проверено разными людьми на разных машинах. Кто-нибудь встречался с чем-нибудь подобным и как боролся, если встречался?



Пример окна:
Код: 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.
41.
42.
43.
44.
45.
46.
47.
48.
49.
50.
51.
52.
53.
54.
55.
56.
57.
58.
59.
60.
61.
62.
63.
64.
65.
66.
67.
68.
69.
70.
71.
72.
73.
74.
75.
76.
77.
78.
79.
80.
81.
82.
83.
84.
85.
86.
87.
88.
89.
90.
91.
92.
93.
94.
95.
96.
97.
98.
99.
100.
101.
102.
103.
104.
105.
106.
107.
108.
109.
110.
111.
112.
113.
114.
115.
116.
117.
118.
119.
120.
121.
122.
123.
124.
125.
126.
127.
128.
129.
130.
131.
132.
133.
134.
135.
136.
137.
138.
139.
140.
141.
142.
143.
144.
145.
146.
147.
148.
149.
150.
151.
152.
153.
154.
155.
156.
157.
158.
159.
160.
161.
162.
163.
164.
165.
166.
167.
168.
169.
170.
171.
172.
173.
174.
175.
176.
$PBExportHeader$w_huge.srw
forward
global type w_huge from Window
end type
type cb_4 from commandbutton within w_huge
end type
type cb_3 from commandbutton within w_huge
end type
type em_1 from editmask within w_huge
end type
type cb_2 from commandbutton within w_huge
end type
type dw_1 from datawindow within w_huge
end type
type cb_1 from commandbutton within w_huge
end type
end forward

global type w_huge from Window
int X= 1056 
int Y= 484 
int Width= 2569 
int Height= 1764 
boolean TitleBar=true
string Title= "Untitled" 
long BackColor= 67108864 
boolean ControlMenu=true
boolean MinBox=true
boolean MaxBox=true
boolean Resizable=true
cb_4 cb_4
cb_3 cb_3
em_1 em_1
cb_2 cb_2
dw_1 dw_1
cb_1 cb_1
end type
global w_huge w_huge

on w_huge.create
this.cb_4=create cb_4
this.cb_3=create cb_3
this.em_1=create em_1
this.cb_2=create cb_2
this.dw_1=create dw_1
this.cb_1=create cb_1
this.Control[]={this.cb_4,&
this.cb_3,&
this.em_1,&
this.cb_2,&
this.dw_1,&
this.cb_1}
end on

on w_huge.destroy
destroy(this.cb_4)
destroy(this.cb_3)
destroy(this.em_1)
destroy(this.cb_2)
destroy(this.dw_1)
destroy(this.cb_1)
end on

type cb_4 from commandbutton within w_huge
int X= 2025 
int Y= 1156 
int Width= 247 
int Height= 108 
int TabOrder= 40 
string Text= "delete" 
int TextSize=- 10 
int Weight= 400 
string FaceName= "Arial" 
FontCharSet FontCharSet=Ansi!
FontFamily FontFamily=Swiss!
FontPitch FontPitch=Variable!
end type

event clicked;dw_1.deleterow( 0 )
end event

type cb_3 from commandbutton within w_huge
int X= 1728 
int Y= 1152 
int Width= 247 
int Height= 108 
int TabOrder= 30 
string Text= "add" 
int TextSize=- 10 
int Weight= 400 
string FaceName= "Arial" 
FontCharSet FontCharSet=Ansi!
FontFamily FontFamily=Swiss!
FontPitch FontPitch=Variable!
end type

event clicked;dw_1.insertrow( 0 )
end event

type em_1 from editmask within w_huge
int X= 631 
int Y= 1168 
int Width= 247 
int Height= 100 
int TabOrder= 20 
BorderStyle BorderStyle=StyleLowered!
string Mask= "#####" 
long TextColor= 33554432 
int TextSize=- 10 
int Weight= 400 
string FaceName= "Arial" 
FontCharSet FontCharSet=Ansi!
FontFamily FontFamily=Swiss!
FontPitch FontPitch=Variable!
end type

type cb_2 from commandbutton within w_huge
int X= 256 
int Y= 1160 
int Width= 288 
int Height= 108 
int TabOrder= 50 
string Text= "Fill dddw" 
int TextSize=- 10 
int Weight= 400 
string FaceName= "Arial" 
FontCharSet FontCharSet=Ansi!
FontFamily FontFamily=Swiss!
FontPitch FontPitch=Variable!
end type

event clicked;datawindowchild ldwc
long i,imax
decimal dmax
em_1.getdata(dmax)
imax = dmax
if dw_1.getchild('n_test',ldwc) =  1  then
	ldwc.reset()
	for i =  1  to imax
		ldwc.insertrow( 0 )
		ldwc.setitem(i, "name" ,string(i))
		ldwc.setitem(i, "value" ,i)
	next
end if
end event

type dw_1 from datawindow within w_huge
int X= 160 
int Y= 116 
int Width= 2135 
int Height= 992 
int TabOrder= 10 
string DataObject= "dw_huge_main" 
BorderStyle BorderStyle=StyleLowered!
boolean VScrollBar=true
boolean LiveScroll=true
end type

type cb_1 from commandbutton within w_huge
int X= 1074 
int Y= 1516 
int Width= 247 
int Height= 108 
int TabOrder= 60 
string Text= "close" 
int TextSize=- 10 
int Weight= 400 
string FaceName= "Arial" 
FontCharSet FontCharSet=Ansi!
FontFamily FontFamily=Swiss!
FontPitch FontPitch=Variable!
end type

event clicked;close(parent)
end event



Пример datawindow
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
$PBExportHeader$dw_huge_main.srd
release  6 ;
datawindow(units= 0  timer_interval= 0  color= 16777215  processing= 0  print.documentname= "" print.orientation = 0  print.margin.left =  110  print.margin.right =  110  print.margin.top =  96  print.margin.bottom =  96  print.paper.source =  0  print.paper.size =  0  print.prompt=no print.buttons=no print.preview.buttons=no )
header(height= 72  color=" 536870912  " )
summary(height=0  color=" 536870912  " )
footer(height=0  color=" 536870912  " )
detail(height=84  color=" 536870912  " )
table(column=(type=long updatewhereclause=no name=n_test dbname=" n_test " )
 )
text(band=header alignment="  2  " text=" N Test "border="  0  " color="  0  " x="  5  " y="  4  " height="  64  " width="  219  "  name=n_test_t  font.face=" Arial " font.height=" - 10  " font.weight="  400  "  font.family="  2  " font.pitch="  2  " font.charset="  0  " background.mode="  1  " background.color="  536870912  " )
column(band=detail id=1  alignment=" 1  " tabsequence=10  border=" 0  " color="  0  " x="  5  " y="  4  " height="  76  " width="  219  " format=" [general] "  name=n_test dddw.name=dddw_huge dddw.displaycolumn=name dddw.datacolumn=value dddw.percentwidth=100  dddw.lines= 0  dddw.limit= 0  dddw.allowedit=no dddw.useasborder=yes dddw.case=any dddw.nilisnull=yes dddw.vscrollbar=yes  font.face="Arial " font.height=" - 10  " font.weight="  400  "  font.family="  2  " font.pitch="  2  " font.charset="  0  " background.mode="  1  " background.color="  536870912  " )
htmltable(border="  1  " cellpadding="  0  " cellspacing="  0  " generatecss=" no " nowrap=" yes") 


Пример dddw
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
$PBExportHeader$dddw_huge.srd
release  6 ;
datawindow(units= 0  timer_interval= 0  color= 16777215  processing= 0  print.documentname= "" print.orientation = 0  print.margin.left =  110  print.margin.right =  110  print.margin.top =  96  print.margin.bottom =  96  print.paper.source =  0  print.paper.size =  0  print.prompt=no print.buttons=no print.preview.buttons=no )
header(height= 72  color=" 536870912  " )
summary(height=0  color=" 536870912  " )
footer(height=0  color=" 536870912  " )
detail(height=84  color=" 536870912  " )
table(column=(type=char(10 ) updatewhereclause=yes name=name dbname="name " )
 column=(type=long updatewhereclause=yes name=value dbname=" value " )
 )
text(band=header alignment="  2  " text=" Name "border="  0  " color="  0  " x="  5  " y="  4  " height="  64  " width="  274  "  name=name_t  font.face=" Arial " font.height=" - 10  " font.weight="  400  "  font.family="  2  " font.pitch="  2  " font.charset="  0  " background.mode="  1  " background.color="  536870912  " )
text(band=header alignment="  2  " text=" Value "border="  0  " color="  0  " x="  283  " y="  4  " height="  64  " width="  219  "  name=value_t  font.face=" Arial " font.height=" - 10  " font.weight="  400  "  font.family="  2  " font.pitch="  2  " font.charset="  0  " background.mode="  1  " background.color="  536870912  " )
column(band=detail id=1  alignment=" 0  " tabsequence=10  border=" 0  " color="  0  " x="  5  " y="  4  " height="  76  " width="  274  " format=" [general] "  name=name edit.limit=0  edit.case=any edit.autoselect=yes edit.autohscroll=yes  font.face="Arial " font.height=" - 10  " font.weight="  400  "  font.family="  2  " font.pitch="  2  " font.charset="  0  " background.mode="  1  " background.color="  536870912  " )
column(band=detail id=2  alignment=" 1  " tabsequence=20  border=" 0  " color="  0  " x="  283  " y="  4  " height="  76  " width="  219  " format=" [general] "  name=value edit.limit=0  edit.case=any edit.autoselect=yes edit.autohscroll=yes  font.face="Arial " font.height=" - 10  " font.weight="  400  "  font.family="  2  " font.pitch="  2  " font.charset="  0  " background.mode="  1  " background.color="  536870912  " )
htmltable(border="  1  " cellpadding="  0  " cellspacing="  0  " generatecss=" no " nowrap=" yes") 
...
Рейтинг: 0 / 0
Проблемы со скроллингом в dddw. Do not open by DialUp!
    #32430305
Фотография Филипп
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Больше чем 60 строк в dddw - дурной юзер интерфейс.
Какой юзер будет скролать через 5К строк?
Какова цель этого упражнения?
...
Рейтинг: 0 / 0
Проблемы со скроллингом в dddw. Do not open by DialUp!
    #32430351
Dmitry Belousov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Код: plaintext
1.
Какой юзер будет скролать через 5К строк? 
Какова цель этого упражнения?
Филипп, мне было бы очень интересно выслушать ваше мнение по сути заданного вопроса. Что касается вашей реплики, то могу пояснить следующее:
Почему, кто и когда выбрал такое решение - не знаю. При том объеме системы с которым приходится иметь дело нашей малочисленной команде на такие вопросы не всегда удаётся найти ответ. Факт в том, что в настоящий момент это system critical piece of codes.

Насколько я понимаю, пользователи никогда не выбирают из него записи поиском. Почему им там позволено скроллироваться, признаться, не вникал.
...
Рейтинг: 0 / 0
Проблемы со скроллингом в dddw. Do not open by DialUp!
    #32430358
Фотография Филипп
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
По сути вопроса я уже всё сказал.
Теперь не по сути. Всё содержится в вашем вопросе. Под WIN2K трудно runout of GDI handles, но возможно. Возможно, что и PB 6.5 leakает GDI handles.

Вместо того, чтобы гордо говорить типа не вникал , лучше вникнуть и исправить, в особенности с учётом того, что PB 6.5 ВООБЩЕ не поддержанный продукт.
...
Рейтинг: 0 / 0
Проблемы со скроллингом в dddw. Do not open by DialUp!
    #32430853
Dmitry Belousov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
2Филипп
Превод ответа в наезд совершенно, IMHO, напрасен. Если ни с чем подобным не встечались то так и скажите. "Гордиться" или наоборот посыпать себе голову пеплом здесь не к чему - сотни PBL которые в разное время писали разные люди... Решать каждую подобную проблему перепроектированием (иначе говоря - "вникать") означает прекратить текущую разработку. Вопрос как раз в этом и состоял - можно ли закрыть тему локально или требуются глобальные изменения - изменения алгоритмов, версии PB, etc... Не очень понимаю, что вас задело, но, в любом случае, обидеть вас я не стремился...

2All На Pb 8.0 + Nt4 вышеприведенный пример работает на ура. Соотв. вопрос либо в версии билдера, либо в 6.5 + W2k. Буду благодарен за любые конструктивные идеи.

BTW, на маленьких dddw (rowcount() < 30) ситуация тоже воспроизводится, только после более долгого скроллинга.
...
Рейтинг: 0 / 0
Проблемы со скроллингом в dddw. Do not open by DialUp!
    #32430969
Фотография Ikar
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
2 Dmitry Belousov:
Сталкивались с такой проблемой. РВ6.5 на w2k. При скролле не только dddw, но и просто dw (grid) были ситуации от GPF приложения, до "зависания" и самоперезагрузки системы. В чем причина конкретно - так и не поняли. Проблему решали множественными экспериментами по изменению набора Shared-ов от РВ. В конечном итоге получили "конгламерат" ил версий 6.0, 6.5 и 6.5fix... Сейчас пререшли на РВ8.0.3 и проблема не вернулась.
---
С уважением, IKAR
ikarhomecenter@narod.ru
IkarHomeCenter
...
Рейтинг: 0 / 0
Проблемы со скроллингом в dddw. Do not open by DialUp!
    #32431074
Dmitry Belousov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
2Ikar Спасибо!
В конечном итоге получили "конгламерат" ил версий 6.0, 6.5 и 6.5fix... Правильно я вас понял, что речь идёт об ошибке PB 6.5?
...
Рейтинг: 0 / 0
Проблемы со скроллингом в dddw. Do not open by DialUp!
    #32431392
Фотография Ikar
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
2 Dmitry Belousov:
Ну, утверждать это "официально" я не берусь, но мы пришли именно к такому мнению...
---
С уважением, IKAR
ikarhomecenter@narod.ru
IkarHomeCenter
...
Рейтинг: 0 / 0
Проблемы со скроллингом в dddw. Do not open by DialUp!
    #32431787
Фотография Филипп
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
А никакого перевода в наезд и не было.
Просто авторв настоящий момент это system critical piece of codes и авторне вникал в одном абзаце звучит эээ..., подозрительно.
...
Рейтинг: 0 / 0
Проблемы со скроллингом в dddw. Do not open by DialUp!
    #32431863
Dmitry Belousov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
2Филипп
Немного передергиваете, батенька - про system critical и про "не вникал" это несколько из разных огородов было... Не важно. Не имею желания пререкаться. Предприму, если вы не возражаете, ещё одну попытку обратиться к вашим знаниям, а не к характеру. :-)
Предположим, что вышеописанную проблему требуется решить не прибегая к перепроектированию или к миграции версии. Чтобы вы посоветовали для поиска причины проблемы или её обхода?
...
Рейтинг: 0 / 0
Проблемы со скроллингом в dddw. Do not open by DialUp!
    #32431903
Фотография Филипп
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Посоветовать нечего. Не прибегая к перепроектированию или к миграции версии вы проблему не решите.
Где то в PBVM, в рутинах делающих графику, есть код, который leakaет GDI handles, типа GetDC(...) есть, а ReleaseDC(...) нет.
...
Рейтинг: 0 / 0
Проблемы со скроллингом в dddw. Do not open by DialUp!
    #32431908
Dmitry Belousov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
2Филипп
Спасибо!
...
Рейтинг: 0 / 0
Проблемы со скроллингом в dddw. Do not open by DialUp!
    #32431912
Локшин Марк
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
to Dmitry Belousov
Я вот что подумал по поводу вашей проблемы. Если это у вас действительно авторsystem critical piece of codes
то, возможно, вам следует обратить внимание на событие pbm_dwndropdown. А именно - не позволять выводить внутреннее окно PowerBuilder'а для DDDW, а написать свое и выводить его вместо стандартного окна DDDW. Если это для вас действительно такая большая проблема, то один день потраченный на разработку такого окна (а ведь правда, что у вас все DataWindow в проекте имеют общего предка :) ?) не покажется для вас обременительным. Ко всему прочему вы сможете расширить функциональность стандартного DDDW (к примеру - фильтрация по первым введенным буквам, что бывает весьма удобно, особенно при вашем случае большого количества строк в DDDW).
...
Рейтинг: 0 / 0
Проблемы со скроллингом в dddw. Do not open by DialUp!
    #32431921
Dmitry Belousov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
2Локшин Марк
Была такая идея... Но пока решили воздержаться. В любом случае, спасибо за идею. Будем думать.

BTW, кроме упомянутых вами дополнительных профитов от переопределения dddw, весьма удобно редактировать "на лету" простые справочники (этакий drilldown lite) и весьма прикольно получаются dddwtreeview.
...
Рейтинг: 0 / 0
14 сообщений из 14, страница 1 из 1
Форумы / PowerBuilder [игнор отключен] [закрыт для гостей] / Проблемы со скроллингом в dddw. Do not open by DialUp!
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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