Добро пожаловать в форум, Guest  >>   Войти | Регистрация | Поиск | Правила | В избранное | Подписаться
Все форумы / FoxPro, Visual FoxPro Новый топик    Ответить
 Визуализация процентов выполнения работы шкала либо прогресс бар.  [new]
p672
Member

Откуда:
Сообщений: 158
Интересует визуализация процентов количества строк в таблице в Visual Fox Pro по условию.
Допустим есть таблица с двумя полями: rabota c(100) и vipoln с(2)
ячейки с непустым rabota - 200 строк
ячейки с заполненным среди них vipoln = "да" - 140 строк - это 70% от всех строк
нужно рассчитать процент заполненных vipoln = "да" и визуализировать это НА ФОРМЕ в Visual Fox Pro в виде шкалы на весь экран
то есть на форме отобразить шкалу заполненную на 70% либо прогресс бар.
По мере заполнения vipoln при нажатии кнопки "обновить" шкала будет изменяться.

Как лучше это сделать?

Отчёты и диаграммы не предлагать.
Это будет висеть в цехе и на телевизоре отображаться.
11 окт 18, 11:18    [21701318]     Ответить | Цитировать Сообщить модератору
 Re: Визуализация процентов выполнения работы шкала либо прогресс бар.  [new]
Dima T
Member

Откуда:
Сообщений: 13023
Можешь виндовый прогрессбар использовать через ole, можешь свой контрол нарисовать из двух прямоугольников.
11 окт 18, 11:27    [21701335]     Ответить | Цитировать Сообщить модератору
 Re: Визуализация процентов выполнения работы шкала либо прогресс бар.  [new]
ВладимирМ
Member

Откуда: г. Москва
Сообщений: 7813
Кладешь на форму объект Shape в виде прямоугольника. Для него указываешь свойство BackColor, чтобы задать цвет фона. Собственно изменение - это динамическое изменение длины. Т.е. свойство Width пересчитывается и обновляется при нажатии кнопки "Обновить"

Чтобы сделать это более..менее универсальным, можно сделать собственный класс-контейнер, внутри которого этот Shape и расположить. Пересчет длины делать относительно текущей длины этого контейнера, который принять за 100%
11 окт 18, 23:13    [21702041]     Ответить | Цитировать Сообщить модератору
 Re: Визуализация процентов выполнения работы шкала либо прогресс бар.  [new]
Погодин
Member

Откуда:
Сообщений: 116
Когда то делал с помощью win32api.

В основной программе:

+

STORE 0 TO m.hwndPB && дескриптор прогресс-бара

*** константы win32api ***
*m.PBM_SETRANGE=1025
m.PBM_SETRANGE32=1030
m.PBM_SETPOS=1026
m.PROGRESS_CLASS='msctls_progress32'
m.lpWindowName=.null.
m.WS_CHILD=1073741824
m.WS_VISIBLE=268435456
DECLARE LONG CreateWindowEx IN win32api LONG dwExStyle,STRING @lpClassName,STRING @lpWindowName,;
 LONG dwStyle,LONG x,LONG y,LONG nWidth,LONG nHeight,LONG hWndParent,LONG hMenu,LONG hInstance,LONG lpParam
DECLARE LONG SendMessage IN win32api LONG hwnd,LONG msg,LONG wParam,LONG lParam
DECLARE LONG DestroyWindow IN win32api LONG hwnd
*** константы win32api ***



В событии формы Form.Load:

+

m.hwndPB=CreateWindowEx(0,@m.PROGRESS_CLASS,@m.lpWindowName,BITOR(m.WS_CHILD,m.WS_VISIBLE),;
  10,70,380,19,this.hwnd,0,0,0)
SendMessage(m.hwndPB2,m.PBM_SETRANGE32,0,12)



Перерисовка прогресс-бара:

+

m.ncurpos="№ текущей позиции"
...
SendMessage(m.hwndPB,m.PBM_SETPOS,m.ncurpos,0)
...



Form.UnLoad:

+

DestroyWindow(m.hwndPB)



Выход из программы:

+

CLEAR DLLS

12 окт 18, 15:41    [21702674]     Ответить | Цитировать Сообщить модератору
Все форумы / FoxPro, Visual FoxPro Ответить