Здравствуйте! Я хотел бы написать скрипт для автоматического ввода массива/матрицы в LaTeX'е, но столкнулся с несколькими непонятным для меня моментами. Не могли бы вы мне объяснить, в чем мои ошибки? Меня так же интересует, ошибаюсь ли я концептуально, т. е. так в принципе нельзя делать в автоите или все же можно, хоть и, возможно нежелательно: это признак дурного тона и т. д.
Первая проблема, которую я хотел бы обсудить, следующая. Вот я написал скрипт:
Он работает так, как и было задумано, все хорошо. Там глобально объявляются переменные, которые я пропишу впоследствии. Но уже при попытке выполнения следующего скрипта
Начинают происходить вещи, которые я местами могу понять лишь частично, а местами не понимаю и вовсе. А именно: при открытии первого окна число в тултипе начинает бешено убывать на 1. Но, мне кажется, я понимаю, почему это происходит: это из-за объявления $otmena_1 в самом начале. Правильно? Хотя вот сейчас я попробовал закомментировать эту кнопку в гуе 1 - так програ вообще перестала закрываться - тоже вещь для меня совершенно загадочная. Ладно. Допустим, эта кнопка не закомментена. Жму кнопку $ok_1. Число в тултипе останавливается, По нажатию кнопки $otmena_1 начинает на 1 уменьшаться, все ОК. Но... Програ перестает закрываться. А это почему так? Не могли бы вы мне пояснить?
Первая проблема, которую я хотел бы обсудить, следующая. Вот я написал скрипт:
Код:
#include <GDIPlus.au3>
#include <WinAPI.au3>
#include <GuiConstantsEx.au3>
#include <GUIConstants.au3>
#include <Misc.au3>
Global $GUI_1, $otmena_1, $ok_1, $otmena_2, $ok_2, $radio1, $radio2, $radio3, $vyrav, $abrakadabra
$GUI_0 = GUICreate("0Ввод окружения array", 300, 170) ;1
GUICtrlCreateLabel("Введите множество индексов столбцов", 10, 5)
$ok_0 = GUICtrlCreateButton("OK", 10, 130, 88, 28, $BS_DEFPUSHBUTTON) ;
GUICtrlCreateGroup("", 200, 128, 92, 32)
$otmena_0 = GUICtrlCreateButton("Cancel", 202, 130, 88, 28)
$stolb = GUICtrlCreateCombo('1, 2, \ldots, i-1, i, i+1, \ldots, j-1, j, j+1, \ldots, n', 10, 65, 280, 21)
GUICtrlSetData($stolb, '1, 2, \ldots, i-1, i, i+1, \ldots, n-1, n|1, 2, \ldots, k-1, k, k+1, \ldots, n-1, n')
ControlFocus("Ввод окружения array", "", $stolb)
GUISetState()
Global $a = 0
While 1
$msg = GUIGetMsg()
Switch $msg
Case $GUI_EVENT_CLOSE
ExitLoop
Case $ok_0
$a = $a-1
ToolTip ($a, 0, 0)
Case $otmena_0
$a = $a+1
ToolTip ($a, 0, 0)
EndSwitch
WEnd
Он работает так, как и было задумано, все хорошо. Там глобально объявляются переменные, которые я пропишу впоследствии. Но уже при попытке выполнения следующего скрипта
Код:
#include <GDIPlus.au3>
#include <WinAPI.au3>
#include <GuiConstantsEx.au3>
#include <GUIConstants.au3>
#include <Misc.au3>
Global $GUI_1, $otmena_1, $ok_1, $otmena_2, $ok_2, $radio1, $radio2, $radio3, $vyrav, $abrakadabra
$GUI_0 = GUICreate("0Ввод окружения array", 300, 170) ;1
GUICtrlCreateLabel("Введите множество индексов столбцов", 10, 5)
$ok_0 = GUICtrlCreateButton("OK", 10, 130, 88, 28, $BS_DEFPUSHBUTTON) ;
GUICtrlCreateGroup("", 200, 128, 92, 32)
$otmena_0 = GUICtrlCreateButton("Cancel", 202, 130, 88, 28)
$stolb = GUICtrlCreateCombo('1, 2, \ldots, i-1, i, i+1, \ldots, j-1, j, j+1, \ldots, n', 10, 65, 280, 21)
GUICtrlSetData($stolb, '1, 2, \ldots, i-1, i, i+1, \ldots, n-1, n|1, 2, \ldots, k-1, k, k+1, \ldots, n-1, n')
ControlFocus("Ввод окружения array", "", $stolb)
GUISetState()
Func Massiv_1()
GUIDelete($GUI_0)
$GUI_1 = GUICreate("1Ввод окружения array", 300, 170) ;1
GUICtrlCreateLabel("Введите множество индексов строк", 10, 5)
$ok_1 = GUICtrlCreateButton("OK", 10, 130, 88, 28, $BS_DEFPUSHBUTTON) ;
$otmena_1 = GUICtrlCreateButton("Cancel", 202, 130, 88, 28)
$strok = GUICtrlCreateCombo('1, 2, \ldots, i-1, i, i+1, \ldots, j-1, j, j+1, \ldots, n', 10, 65, 280, 21)
GUICtrlSetData($strok, '1, 2, \ldots, i-1, i, i+1, \ldots, n-1, n|1, 2, \ldots, k-1, k, k+1, \ldots, n-1, n')
ControlFocus("Ввод окружения array", "", $strok)
GUISetState()
EndFunc
Global $a = 0
While 1
$msg = GUIGetMsg()
Switch $msg
Case $ok_0
Massiv_1()
Case $otmena_0
$a = $a+1
ToolTip ($a, 0, 0)
Case $otmena_1
$a = $a-1
ToolTip ($a, 0, 0)
EndSwitch
WEnd
Начинают происходить вещи, которые я местами могу понять лишь частично, а местами не понимаю и вовсе. А именно: при открытии первого окна число в тултипе начинает бешено убывать на 1. Но, мне кажется, я понимаю, почему это происходит: это из-за объявления $otmena_1 в самом начале. Правильно? Хотя вот сейчас я попробовал закомментировать эту кнопку в гуе 1 - так програ вообще перестала закрываться - тоже вещь для меня совершенно загадочная. Ладно. Допустим, эта кнопка не закомментена. Жму кнопку $ok_1. Число в тултипе останавливается, По нажатию кнопки $otmena_1 начинает на 1 уменьшаться, все ОК. Но... Програ перестает закрываться. А это почему так? Не могли бы вы мне пояснить?