Краткое изложение.
Приложения, написанные для платформы 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 |