Краткое изложение.
Приложения, написанные для платформы Windows очень часто используют полоску термоментра для визуального представления хода исполнения какой-либо задачи. Эта статья показывает пример создания термометра общего назначения, который вы можете использовать в новых или существующих приложениях Visual FoxPro.
Образец кода.
- Создайте в Visual FoxPro программный файл.
- Скопируйте в него код, приведенный ниже:
Скопировать код | |
|---|---|
PUBLIC othermometer
othermometer = CreateObject('thermometer')
othermometer.Visible = .T.
DEFINE CLASS thermometer AS form
Height = 73
Width = 385
DoCreate = .T.
AutoCenter = .T.
Caption = ""
Closable = .F.
ControlBox = .F.
MaxButton = .F.
MinButton = .F.
Movable = .F.
Name = "Form1"
ADD OBJECT shape2 AS shape WITH ;
Height = 25, ;
Left = 24, ;
Top = 24, ;
Width = 336, ;
Name = "Shape2"
ADD OBJECT shape1 AS shape WITH ;
BackColor = RGB(0,0,255), ;
Height = 25, ;
Left = 24, ;
Top = 24, ;
Width = 0, ;
Name = "Shape1"
ADD OBJECT timer1 AS timer WITH ;
Top = 0, ;
Left = 0, ;
Height = 23, ;
Width = 23, ;
Interval = 100, ;
Name = "Timer1"
PROCEDURE timer1.Timer
IF This.Parent.shape1.Width<336
This.Parent.shape1.Width=This.Parent.shape1.Width+2
ELSE
WAIT WINDOW 'Finished!'
Thisform.Release
ENDIF
ENDPROC
ENDDEFINE
| |
- Сохраните и запустите созданный программный файл.
- Должна отобразиться форма и полоска термометра будет расти, пока не завершится процесс.
Другой пример.
В предыдущем примере для симуляции процесса использовался таймер. Этот пример показывает, как внедрить такой термометр в цикл. Команда WAIT TIMEOUT внутри цикла представляет место, в котором разработчик мог бы разместить код, подходящий для своего приложения.
Общая длина полоски термометра равна 300 пикселям. Поскольку код в цикле исполняется 100 раз, ширина термометра увеличивается на 3 пикселя за один раз для достижения общей длины термометра. Значение увеличения широко меняется в зависимости от числа проходов в цикле.
Скопировать код | |
|---|---|
PUBLIC othermometer
othermometer = CreateObject('thermometer')
othermometer.Visible = .T.
i=0
SET CONSOLE OFF
DO WHILE i<100
WAIT TIMEOUT 1 && Place application-specific code here
othermometer.update()
i=i+1
ENDDO
WAIT WINDOW 'Finished'
othermometer.Release
DEFINE CLASS thermometer AS form
Height = 73
Width = 349
DoCreate = .T.
AutoCenter = .T.
Caption = ""
Closable = .F.
ControlBox = .F.
MaxButton = .F.
MinButton = .F.
Movable = .F.
Name = "Form1"
ADD OBJECT shape2 AS shape WITH ;
Height = 25, ;
Left = 24, ;
Top = 24, ;
Width = 300, ;
Name = "Shape2"
ADD OBJECT shape1 AS shape WITH ;
BackColor = RGB(0,0,255), ;
Height = 25, ;
Left = 24, ;
Top = 24, ;
Width = 0, ;
Name = "Shape1"
ADD OBJECT timer1 AS timer WITH ;
Top = 0, ;
Left = 0, ;
Height = 23, ;
Width = 23, ;
Interval = 100, ;
Name = "Timer1"
PROCEDURE update
This.shape1.Width=This.shape1.Width+3
ENDPROC
ENDDEFINE
| |
Скопировать код