powered by simpleCommunicator - 2.0.61     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / PowerBuilder [игнор отключен] [закрыт для гостей] / Progress meter
8 сообщений из 8, страница 1 из 1
Progress meter
    #34236559
Владимир2
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
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
Progress meter
    #34236680
Фотография Anatoly Moskovsky
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Используйте HProgressBar, встроенный в PB9.

PS. А приведенный пример не работает для 100000 наверное из-за использования для расчетов типа данных int, который имеет диапазон значений -+32768
...
Рейтинг: 0 / 0
Progress meter
    #34236934
Фотография Riska
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Код: 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
Progress meter
    #34237985
Владимир2
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Anatoly Moskovsky


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

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

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


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