Форум » GUI » ProgressBar и индексация » Ответить

ProgressBar и индексация

Dr. Oldwarez: Подскажите, пожалуйста, как сделать так, чтобы ProgressBar показывал реиндексацию CDX индекса и обновление автоматически заполняемых полей. Для расчёта полей применяются запросы к другой таблице. Почему-то если в качестве источника значения использовать RECNO, прогрессбар стоит на месте. Что делать, чтобы он правильно реагировал на передвижение по таблице? Цикл заполнения вычисляемых полей DO WHILE !(EOF()).... DBSKIP() ENDDO

Ответов - 3

gfilatov2002: Dr. Oldwarez пишет: как сделать так, чтобы ProgressBar показывал Посмотри следующий рабочий пример (тонкость состоит в использовании команды DO EVENTS ) #include "minigui.ch" Function Main define window sample at 0,0 width 640 height 480 main define button b1 row 10 col 10 caption "Press Me" action showprogressbar() end button end window sample.center sample.activate Return nil function showprogressbar define progressbar p1 row 100 col 100 width 200 parent sample rangemin 1 rangemax 90 value 0 end progressbar define textbox t1 parent sample row 240 col 10 width 100 numeric .t. rightalign .t. value 0 end textbox define textbox t2 parent sample row 270 col 10 width 100 numeric .t. rightalign .t. value 0 end textbox For i := 1 to 100 sample.t1.value := i for j := 1 to 200 sample.t2.value := j do events next j sample.p1.value := i next i inkey(1) sample.p1.release sample.t1.release sample.t2.release return nil

Andrey: Классный пример. А можно сделать так, чтобы ProgressBar показывался в отдельном окне поверх программы и после завершения окно закрывалось ? А то я никак правильно такую простую вещь сделать не могу....

Dr. Oldwarez: Не проблема. После завершения цикла обработки просто поставьте wndProgressBar.release [pre2] DEFINE WINDOW wndProgressBar AT 30,0; WIDTH 365 HEIGHT 245; TITLE "ИДЕТ ОБРАБОТКА ДАННЫХ"; ON INIT DataCalc(nMaxLen) @ 70,31 PROGRESSBAR ProgressCalc ; RANGE 0,nMaxLen ; WIDTH 300 HEIGHT 26 ; TOOLTIP "ProgressBar" wndProgressBar.TextTable.Enabled := .F. END WINDOW CENTER WINDOW wndProgressBar ACTIVATE WINDOW wndProgressBar PROCEDURE DATACALC(nMaxLen) FOR i=1 TO MAXLEN /* тело цикла*/ wndProgressBar.ProgressCalc.Value:=i NEXT i wndProgressBar.Release RETURN[/pre2]




полная версия страницы