Гость
Целевая тема:
Создать новую тему:
Автор:
Форумы / PowerBuilder [игнор отключен] [закрыт для гостей] / Progress meter / 8 сообщений из 8, страница 1 из 1
04.01.2007, 11:15
    #34236559
Владимир2
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Progress meter
Power Builder9

Progress meter хорошо работает при значении
Объема работ не более 30 000 строк или записей.
Если не сложно выслать,
На компакт диске( которого у меня нет
и не в кого достать), поставляемом с
Книгой по PB 5.0
Есть пример (так в книге написано) на этот вопрос.

Код: 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.
Long  li_quantity_lines	
li_quantity_lines  =  32000  
//++- li_quantity_lines  =  100000  // хотя аварийно НЕ ЗАВЕРШАЕТСЯ, первый раз заполняет
// весь  прямоугольник, а потом слева перед началом, но полоса выводится
// от левого края влево, не попадает в прямоугольник с начала в правую сторону
// значение счетчика  кол-ва считанных  строк
long li_end
li_end = li_quantity_lines
UO_ProgressMeter.uf_initialize (  li_quantity_lines )// функция пользовательского объекта
integer li_part_of_job
li_part_of_job = li_end /  100 
integer li_count // может иметь max value  100 , сколько раз т.е. какой процент работы сделано
li_count= 0  
// MessageBox("определение работы в 1 %","24.li_part_of_job = " + string(li_part_of_job))

li_quantity_lines =  0   // обнуляю счетчик кол-ва считанных  строк, записей - т.е. 
integer li_delta
li_delta =  0  
do 
	li_quantity_lines	++	//кол-во обработанных записей - счетчик кол-ва 
	if li_quantity_lines	= li_part_of_job	THEN
	//	Uo_ProgressMeter.uf_advance ( li_quantity_lines * li_count)
		Uo_ProgressMeter.uf_advance ( li_quantity_lines * li_delta)
	li_count ++ // может иметь max value  100 , сколько раз т.е. какой процент работы сделано
		li_quantity_lines =  0 
		li_delta ++
		IF uo_progressmeter.R_innerbox.Width >  1634  THEN
			//uo_progressmeter.R_innerbox.Width =  0  
	MessageBox("","width of ractangle = " + string(uo_progressmeter.R_innerbox.Width)) //  1539 
			li_delta =  0 
	END IF
//	IF uo_progressmeter.R_innerbox.Width >  1634  THEN  1634 -это ширина прямоугольника
//		uo_progressmeter.R_innerbox.Width =  0 
//	END IF
	IF li_count =  100  THEN EXIT 
LOOP WHILE true
Пользовательский видимый объект U_progressmeter
содержит 2 функции:

Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
function  "uf_advance" :
Real lr_ratio
Integer li_percent
String  ls_value_of_job	// вывод для пользователя кол-во строк во входном файле
string li_percent_old,li_percent_new

ls_value_of_job = "Подлежит ( ало ) обрабтке " + string( ir_finalcount) + " строк." 
lr_ratio = al_count / ir_finalcount	// кол-во обработанных строк разделить на ВСЕГО СТРОК,
				//	подлежащих обработке
li_percent = Round(lr_ratio *  100 , 0 )
li_percent_old=st_1.text
li_percent_new = "Обработано " + string(li_percent)+" %" + " из  100 %"
if li_percent_old<>li_percent_new then
  st_1.text = li_percent_new
  st_2.text = ls_value_of_job	//вывод для пользователя кол-во строк во входном файле
end if
r_innerbox.Width = r_outbox.Width*lr_ratio
// MessageBox("","width of ractangle = " + string(r_innerbox.Width)) //  1539 
// ВЫводило  0 ,  16 	/  15 . - 1  /  14 , - 2  и т.д.

//if r_innerbox.Width >  1634  then
//	r_innerbox.Width =  0 
//end if

Код: plaintext
1.
2.
функция  "UF_INITIALIZE"
ir_finalcount = al_finalcount   // ir_finalcount - объектная переменная 
uf_advance( 0 )	// установка нулевого значение счетчика.
СПАСИБО
...
Рейтинг: 0 / 0
04.01.2007, 12:30
    #34236680
Anatoly Moskovsky
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Progress meter
Используйте HProgressBar, встроенный в PB9.

PS. А приведенный пример не работает для 100000 наверное из-за использования для расчетов типа данных int, который имеет диапазон значений -+32768
...
Рейтинг: 0 / 0
04.01.2007, 14:32
    #34236934
Riska
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Progress meter
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
IF ll_file_length >  65535  THEN // Max value in the control "HProgressBar"
ldec_proportion = ll_file_length /  65535 
ll_file_length =  65535 
ELSE
ldec_proportion =  1 
END IF
hpb_1.MaxPosition =ll_file_length
dec_step = Round(ll_file_length / li_read_file / ldec_proportion,  0 )
IF ldec_step <  1  THEN ldec_step =  1 
hpb_1.setstep = ldec_step
Это кусочек скрипта. Болше, чем 65535 Progress не принимает.
Гораздо лучше работает ctMeter Control
Находится в OLE объектах во вкладке InsertControl
...
Рейтинг: 0 / 0
05.01.2007, 11:05
    #34237985
Владимир2
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Progress meter
Anatoly Moskovsky


авторИспользуйте HProgressBar, встроенный в PB9.

PS. А приведенный пример не работает для 100000 наверное из-за использования для расчетов типа данных int, который имеет диапазон значений -+32768

ВЧЕРА ПРОВЕРЯЛ, ПОСТАВИЛ
LONG
НЕ ИЗМЕНИЛОСЬ
...
Рейтинг: 0 / 0
09.01.2007, 13:26
    #34242696
sboyko
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Progress meter
Попробуйте масштабирование.
Делите имеющееся у вас число на 32767 (чтобы найти шаг) и сдвигайте progress meter
...
Рейтинг: 0 / 0
11.01.2007, 11:06
    #34247851
Владимир2
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Progress meter
СПАСИБО,
Код: plaintext
1.
2.
3.
4.
я нашёл хороший пример для PB9. 0 
'pbexamw3.pbl' window 'w_uo_sampler'
PS: работает даже при значении  32   000   000   000 
А не только при  32   000 
Кому надо - ИСПОЛЬЗУЙТЕ.
...
Рейтинг: 0 / 0
06.02.2007, 20:17
    #34310623
Vlad_iIslav
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Progress meter
Я новичок. (4 дня) А как его использовать в окне? Подскажите пожалуйста, а то книг по PB нет негде.
...
Рейтинг: 0 / 0
07.02.2007, 12:20
    #34312083
Ikar
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Progress meter
Vlad_iIslavЯ новичок. (4 дня) А как его использовать в окне? Подскажите пожалуйста, а то книг по PB нет негде.
http://www.sql.ru/forum/actualthread.aspx?tid=392270#3737688
...
Рейтинг: 0 / 0
Форумы / PowerBuilder [игнор отключен] [закрыт для гостей] / Progress meter / 8 сообщений из 8, страница 1 из 1
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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