Полный текст модуля

 

 

//=====================================================

// Laborat_om

//=====================================================

Shell(False)

Public F , iflag, colcol , rowrow , vkl_otkl

 

iflag = 0

colcol=0 && текущие значения горизонтальной координаты указателя мыши

rowrow = 0 && текущие значения вертикальной координаты указателя мыши

vkl_otkl = false && состояние рубильника (первоначально выключен)

 

#Include "Win32api_my.h"

 

//======================================= 1 ============

Define Form F Property metric 6 , top 20 , left 100 , ;

width 800 , height 600 , ;

mdi false , ; && форма не обладает свойством MDI

minimize false , ; && Форма не может быть свернуто в иконку

maximize false , ; && форма не может быть развернута на весь экран

escexit false , ; && клавища ESC - отключена

text ' ' , ; && текст в строке заголовка окна отсутствует

sizeable false , ; && форма не может изменять своих размеров

moveable true , ; && форма не может перемещаться в пределах экрана

background "file scene.jpg" , ; && графический файл в виде фона окна

onmousemove rubilnik , ; && метод при перемещении указателя мыши

onleftmouseup on_off && метод при нажатии или отпускании левой кнопки

//=======================================================

// Тексты метки реостатов =========== 2 ========

Define Text TXR1_1 of F property metric 6 , top 80 , left 250 , ;

width 100 , height 30 , ;

fontbold true , ; && утолщенный шрифт

text "R1" , ; && собственная надпись

colornormal "W*" , ; && цвет - белый

fontsize 18 , ; && размер шрифта

transparent true && установка прозрачности текста

//======================================= 3 ========

Define Text TXR1_2 of F property metric 6 , top 320 , left 700 , ;

width 100 , height 30 , fontbold true , text "R1" , colornormal "W*" , ;

fontsize 18 , transparent true

//======================================= 4 ===========

Define Text TXR2_1 of F property metric 6 , top 200 , left 250 , ;

width 100 , height 30 , fontbold true , text "R2" , colornormal "W*" , ;

fontsize 18 , transparent true

//======================================= 5 ============

Define Text TXR2_2 of F property metric 6 , top 400 , left 310 , ;

width 100 , height 30 , fontbold true , text "R2" , colornormal "W*" , ;

fontsize 18 , transparent true

//======================================= 6 ==========

// Показания амперметра

Define text tx_1 of F property metric 6 , top 456 , left 64 , ;

height 27 , width 120 , ;

borderstyle 3 , ; && отсутствие границы объекта

fontsize 18, ; && размер шрифта

fontbold true , ; && шрифт утолщенный

text " " , ; && первоначально текста нет

transparent true , ; && текст со свойством прозрачности

colornormal "0xffffff" && цвет текста - белый

//======================================= 7 ===========

// Показания вольтметра

Define text tx_2 of F property metric 6 , top 526 , left 64 , ;

height 27 , width 120 , borderstyle 3 , ;

fontsize 18, fontbold true , text " " , ;

transparent true , colornormal "0xffffff"

//======================================== 8 ===========

// Показание левого реостата

Define text tx_2R of F property metric 6 , top 466 , left 319, ;

height 27 , width 140 , borderstyle 3 , ;

fontsize 18, fontbold true , text " " , ;

transparent true , colornormal "0xffffff"

//========================================= 9 ===========

// Показание правого реостата

Define text tx_2RR of F property metric 6 , top 398 , left 584, ;

height 27 , width 140 , borderstyle 3 , ;

fontsize 18, fontbold true , text " " , ;

transparent true , colornormal "0xffffff"

//========================================= 10 ============

// Левый слайдер - имитатор ползунка для изменения сопротивления

Define slider sdd of F property metric 6 , top 430 , left 308 , ;

width 135 , height 30 , ;

borderstyle 3 , ; && отсутсвие отрисовка прямоугольной области

tics 2 , ; && отсутствие отрисовки шкалы и цены деления

colornormal "0x00ff4c/0x87114c" , ; && цвет ползунка

rangemin 1.0 , rangemax 1000.0 , ; && минимальное и максимальное значения

onchange change_sdd && функция метода при изменении значения

//========================================= 11 ==========

Define slider sds of F property metric 6 , left 568 , top 364 , ;

width 135 , height 30 , ;

borderstyle 3 , tics 2 , colornormal "0x00ff4c/0x87114c" , ;

rangemin 1.0 , rangemax 1000.0 , ;

onchange change_sds

//========================================== 12 ==========

// Изображение включенного состояния рубильника. Его первоначальное

// состояние выключено. Когда это изображение видимо, его при помощи

// указателя мыши можно перемещать в пределах экрана.

Define image img of F property metric 6 , top 436 , left 546 , ;

datasource 'file key.gif' , width 160 , height 94 , ;

OnLeftMouseDown {; SendMessage( F.img.Hwnd , 0x00A1 , 2 , 0) ; } , ;

borderstyle 3 , visible false , onmousemove rubilnik

 

F.open()

 

//======================================

procedure on_off (iflag, colcol , rowrow)

if colcol > 552 .and. colcol < 741 .and. rowrow > 453 .and. rowrow < 554

f.img.visible = .not. f.img.visible

vkl_otkl = .not. vkl_otkl

endif

// Вызов данных процедур осуществляется для обновления отрисовки

do change_sdd

do change_sds

return

//================================================

procedure change_sdd

// Метод для левого реостата

// При каждом изменении значения сопротивления обновляется

// визуализация значения текущего сопротивления.

f.tx_2R.text = ltrim(rtrim(str((f.sdd.value),7,3))) + ' ом'

// Если рубильник выключен - тока в цепи нет, нет и показаний

// амперметра и вольтметра

if vkl_otkl = false

f.tx_1.text = ' '

f.tx_2.text = ' '

return

endif

// Обновление значений амперметра и вольтметра .

// Здесь эти показания рассчитываются случайным образом и

// изменение расчетных

// формул может быть обучаемыми произведено самостоятельно.

f.tx_1.text = ltrim(rtrim(str((f.sdd.value)*random(-0.3)*0.00010 * ;

f.sds.value,7,3))) + ' A '

f.tx_2.text = ltrim(rtrim(str((f.sds.value)*random(-0.3)*0.0010 * ;

f.sdd.value,7,3))) + ' V '

return

//=================================================

procedure change_sds

f.tx_2RR.text = ltrim(rtrim(str((f.sds.value),7,3))) + ' ом'

 

if vkl_otkl = false

f.tx_1.text = ' '

f.tx_2.text = ' '

return

endif

 

f.tx_1.text = ltrim(rtrim(str((f.sdd.value)*random(0.3)*0.10 * ;

f.sds.value,7,3))) + ' A '

f.tx_2.text = ltrim(rtrim(str((f.sds.value)*random(0.3)*0.10 * ;

f.sdd.value,7,3))) + ' V '

return

//=======================================

procedure rubilnik (iflag, colcol , rowrow)

// Переключение рубильника может быть осуществлено лишь в том случае,

// когда указатель мыши находится строго в пределах прямоугольника

// 552 < x < 741 453 < y < 554

// При этом будет изменяться вид курсора - с обычной стрелки на рисунок ладони

if colcol > 552 .and. colcol < 741 .and. rowrow > 453 .and. rowrow < 554

F.mousepointer= 13

else

F.mousepointer= 0

endif

return