#Singleinstance force
SetTitleMatchMode 2
DetectHiddenWindows On
SetControlDelay -1
global hGui1, moved, CROSS_CursorHandle, OCR_NORMAL
OCR_NORMAL := 32512 ; обычный курсор в виде стрелки
OCR_CROSS := 32646 ; курсор в виде креста
WM_ACTIVATE := 0x0006
NORMAL_CursorHandle := DllCall( "LoadCursor", Uint,0, Int, OCR_NORMAL) ; загрузить системный OCR_NORMAL-курсор
CROSS_CursorHandle := DllCall( "LoadCursor", Uint,0, Int, OCR_CROSS) ; загрузить системный OCR_CROSS-курсор
Choice1 := "+3000|+2000|+1000|+800|+700|+600|+500|+400|+300|+200|+100|0000"
Choice2 := "+3000|+2000|+1000|+800|+700|+600|+500|+400|+300|+200|+100|0000|-100|-200|-300|-400|-500|-600|-700|-800|-1000|-1500"
Choice3 := "+10000|+2000|+800|+500|+300|+100|+10.0|+1.00|0.001|0.0001|0000|-10.0|-20"
Choice4 := "+3000|+2000|+1000|+800|+700|+600|+500|+400|+300|+200|+100|0000|-100|-200|-300|-400|-500|-600|-700|-800|-1000|-1500"
boxChoice:={5:"Автомасштаб", 6:"Дополнит. сетка", 0:"Lg I"}
ShowHide:=1
Menu, Tray, add, ShowHide, ShowHide
Menu, Tray, Default, ShowHide
Menu, tray, NoStandard
Menu, tray, Standard
Menu, Tray, Click, 1
/*
;TFloatEdit4 - ось х, минимум
;TFloatEdit3 - ось х, максимум
;TFloatEdit2 - ось y, минимум
;TFloatEdit1 - ось y, максимум
E4 - xMin
E3 - xMin
E2 - yMin
E1 - yMin
E5 - Масштаб
E6 - Дополнит. сетка
E0 - Lg
E7 - график U(T)
E8 - график I(U)
E9 - график U(I)
*/
Gui, +AlwaysOnTop +LastFound -Caption +Toolwindow +Border -E0x08000000 hwndhGUI1 ; окно поверх всего, без рамок,границ,заголовия
Gui, Margin, 4, 4
Gui, Font, underline
;по клику на текст xMin происходит обновление значений всех полей в Gui.
Gui, Add, Text, w30 y6 gCheck Center cBlue, xMin
Gui, Font, norm
Gui, Add, ComboBox, x+ yp-4 w70 gGo vE4, %Choice2%
Gui, Add, Text, x+10 y6 w30 ,yMin
Gui, Add, ComboBox, x+ yp-4 w70 gGo vE2 section, %Choice2%
Gui, Add, Text, x4 y+5 w30 ,xMax
Gui, Add, ComboBox, x+ yp-4 w70 gGo vE3, %Choice2%
Gui, Add, Text, x+10 yp+5 w30 ,yMax
Gui, Add, ComboBox, x+ yp-4 w70 gGo vE1, %Choice2%
Gui, Add, Checkbox, x10 y+10 vE5 gGo, АвтоМасштаб
Gui, Add, Checkbox, x+6 w50 vE6 gGo, Сетка
Gui, Add, Checkbox, x+10 w50 vE0 gGo, Lg
Gui, Font, bold
Gui, Color, silver
Gui, Add, Button, vE7 gGo w50 ys x+0, U(T)
Gui, Add, Button, vE8 gGo w50, I(U)
Gui, Add, Button, vE9 gGo w50, U(I)
Gui, Show, % "xCenter y10"
GoSub, Check
Return ;=======================================================================================================================
ShowHide:
Gui, % (ShowHide:=1-ShowHide) ? "Show":"Hide"
Return
Go:
WinMove(WinID,A_GuiControl)
if moved
return
;определение номера активированного элемента Gui
Index:= % SubStr(A_GuiControl, 0)
;из-за номера активной страницы TPage зависит номер элементов TFloatEdit
ControlGet, TabActive, Tab, , TPageControl1, ahk_class TAxis_Dlg
;отсылание команды в целевое окно согласно изменениям в активированном элементе
if (index=1 || index=2 || index=3 || index=4) {
GuiControlGet, E%Index%,
ControlSetText, % "TFloatEdit" Index+2-TabActive, % E%Index% , ahk_class TAxis_Dlg
}
else if (index=5 || index=6 || index=0) {
ControlClick, % boxChoice[index], ahk_class TAxis_Dlg
}
else if (index=7|| index=8 || index=9) {
ControlClick, TToolbar1, ahk_class TAxis_Dlg, , , , % "X" (Index-7)*70+130 " Y30"
j:=index-6
k:=index-5
GuiControl, , E4, % "|" Choice%j%
GuiControl, , E3, % "|" Choice%j%
GuiControl, , E2, % "|" Choice%k%
GuiControl, , E1, % "|" Choice%k%
ControlClick, TBitBtn2, ahk_class TAxis_Dlg
;обновление значений чекбоксов, т.к. целевое окно почемуто не сохраняет их значений
GuiControlGet, E5
GuiControlGet, E6
GuiControlGet, E0
Control, % E5 ? "Check" : "Uncheck",, Автомасштаб, ahk_class TAxis_Dlg
Control, % E6 ? "Check" : "Uncheck",, Дополнит. сетка, ahk_class TAxis_Dlg
Control, % E0 ? "Check" : "Uncheck",, Lg I, ahk_class TAxis_Dlg
}
;обновление значений в окне Gui согласно данным в целевом овне
Check:
ControlClick, TBitBtn2, ahk_class TAxis_Dlg
Sleep, 50
ControlGet, TabActive, Tab, , TPageControl1, ahk_class TAxis_Dlg
loop, 4
{
ControlGetText, E%A_Index%, % "TFloatEdit" A_Index+2-TabActive , ahk_class TAxis_Dlg
GuiControl, Text, E%A_Index%, % E%A_Index%
ControlGet, Z%A_Index%, Enabled, , % "TFloatEdit" A_Index+2-TabActive , ahk_class TAxis_Dlg
GuiControl, % Z%A_Index% ? "Enable" : "Disable" , E%A_Index%
}
ControlGet, E5, Checked, , Автомасштаб, ahk_class TAxis_Dlg
ControlGet, E6, Checked, , Дополнит. сетка, ahk_class TAxis_Dlg
ControlGet, E0, Checked, , Lg I, ahk_class TAxis_Dlg
GuiControl, , E5, % E5 ? 1 : 0
GuiControl, , E6, % E6 ? 1 : 0
GuiControl, , E0, % E0 ? 1 : 0
ControlGet, Z, Enabled, , Автомасштаб, ahk_class TAxis_Dlg
GuiControl, % Z ? "Enable" : "Disable" , E5
ControlGet, Z, Enabled, , Дополнит. сетка, ahk_class TAxis_Dlg
GuiControl, % Z ? "Enable" : "Disable" , E6
ControlGet, Z, Enabled, , Lg I, ahk_class TAxis_Dlg
GuiControl, % Z ? "Enable" : "Disable" , E0
return
;передвижение окна правой клавишей мышки
~RButton::
MouseGetPos,,, WinID, A_GC
if (WinID = hGui1)
WinMove(WinID, A_GC)
return
WinMove(WinID, A_GC)
{
CoordMode, Mouse
SetWinDelay, -1
SetBatchLines, -1
MouseGetPos, Start_X, Start_Y
WinGetPos, X_Win, Y_Win,,, ahk_id %WinID%
While GetKeyState("RButton", "P")
{
if !hand ;изменение вида курсора при перетягивании окна
DllCall("SetSystemCursor", UInt, CROSS_CursorHandle, Int, OCR_NORMAL) , hand:=1
MouseGetPos, Current_X, Current_Y
moved := (Current_X != Start_X || Current_Y != Start_Y) ? 1 : ""
WinMove, ahk_id %WinID%,, X_Win + Current_X - Start_X, Y_Win + Current_Y - Start_Y
Sleep, 10
}
if (hand) ;изменение вида курсора при окончании перетягивания окна
DllCall("SystemParametersInfo", UInt, SPI_SETCURSORS:=0x57, UInt, 0, UInt, 0, UInt, 0), hand:=""
}
Return