Полный текст модуля
//=====================================================
// 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