Народ подскажите как задать HomeDir или WorkDir для autoit или приложения которое он запускает?, просто это приложение создаёт мне документы, которые вообще-то не нужны, но лучше скидывать их в папку с этим приложением, перемещение это туповато )
» AutoIT
Pravokonst
Смотри описание макросов в справке, в разделе Directory macros
Смотри описание макросов в справке, в разделе Directory macros
[q][/q]
там нельзя задавать, только получать значение
там нельзя задавать, только получать значение
Цитата:
Код:#include <Array.au3>
$sIniFile = "BASELIST.ini"
;Читаем имена всех секции в файле
$aSectNames = IniReadSectionNames($sIniFile)
If Not @error Then
;Читаем в массив каждую секцию в файле BASELIST.ini
For $i = 1 To UBound($aSectNames)-1
Assign("aSection_" & $i, IniReadSection($sIniFile, $aSectNames[$i]), 2)
$aTmpArr = Eval("aSection_" & $i)
;Отображаем только что созданный массив содержащий записи текущей секции - для проверки
_ArrayDisplay($aTmpArr, "Section: [" & $aSectNames[$i] & "]")
Next
;Выводим на экран ключ и значение первого элемента в первой секции
MsgBox(64, "", $aSection_1[1][0] & "=" & $aSection_1[1][1])
;Выводим на экран ключ и значение первого элемента во второй секции
MsgBox(64, "", $aSection_2[1][0] & "=" & $aSection_2[1][1])
;Теперь каждая переменная $aSection_N содержит массив с секциями, этих переменных столько, сколько секции в ини файле
;Их колчество можно определить по $aSectNames[0]
ConsoleWrite($aSectNames[0])
EndIf
ViSiToR
Спасибо за помощь !
Pravokonst 12:42 15-09-2008
Цитата:
Для самого скрипта используется FileChangeDir(@HomeDrive).
Для запускаемого приложение используется второй параметр в команде Run:
Код:
FileChangeDir(@HomeDrive)
Run("SomProgram.exe", @WorkingDir) ;Тут @WorkingDir это @HomeDrive, т.к мы его задали функцией выше
Цитата:
как задать HomeDir или WorkDir для autoit или приложения которое он запускает?
Для самого скрипта используется FileChangeDir(@HomeDrive).
Для запускаемого приложение используется второй параметр в команде Run:
Код:
FileChangeDir(@HomeDrive)
Run("SomProgram.exe", @WorkingDir) ;Тут @WorkingDir это @HomeDrive, т.к мы его задали функцией выше
ViSiToR , спасибо, ты похоже один реально рубишь здесь, или я нифига не понимаю ).
Подскажите пожалуста как можно сделать такое:
Необходимо при нажатии на кнопку "Печать" вывести диологовое окно выбора принтера, а потом на выбраном принтере распечатать зарание указанный фаил.
Зарание благодарен за помощь.
Необходимо при нажатии на кнопку "Печать" вывести диологовое окно выбора принтера, а потом на выбраном принтере распечатать зарание указанный фаил.
Зарание благодарен за помощь.
XpycTMD 15:31 15-09-2008
Цитата:
Код: #include <GuiConstantsEx.au3>
#include <ButtonConstants.au3>
$sFile = "C:\test.txt"
$GUI = GUICreate("Print Test", 300, 100)
GUICtrlCreateLabel("File Path:", 20, 22)
$Input = GUICtrlCreateInput($sFile, 80, 20, 200, 20)
$Print_Button = GUICtrlCreateButton("Print", 20, 50, 260, 32, $BS_ICON)
GUICtrlSetImage(-1, "shell32.dll", -17)
GUISetState(@SW_SHOW, $GUI)
While 1
Switch GUIGetMsg()
Case $GUI_EVENT_CLOSE
Exit
Case $Print_Button
$sFile = GUICtrlRead($Input)
Run('Rundll32.exe "' & @SystemDir & '\mshtml.dll",PrintHTML "' & $sFile & '"', @SystemDir)
EndSwitch
WEnd
Цитата:
Необходимо при нажатии на кнопку "Печать" вывести диологовое окно выбора принтера
Код: #include <GuiConstantsEx.au3>
#include <ButtonConstants.au3>
$sFile = "C:\test.txt"
$GUI = GUICreate("Print Test", 300, 100)
GUICtrlCreateLabel("File Path:", 20, 22)
$Input = GUICtrlCreateInput($sFile, 80, 20, 200, 20)
$Print_Button = GUICtrlCreateButton("Print", 20, 50, 260, 32, $BS_ICON)
GUICtrlSetImage(-1, "shell32.dll", -17)
GUISetState(@SW_SHOW, $GUI)
While 1
Switch GUIGetMsg()
Case $GUI_EVENT_CLOSE
Exit
Case $Print_Button
$sFile = GUICtrlRead($Input)
Run('Rundll32.exe "' & @SystemDir & '\mshtml.dll",PrintHTML "' & $sFile & '"', @SystemDir)
EndSwitch
WEnd
Вопрос #2
А как легче получать название последней папки в указанном пути FileOpenDialog ?
т.е. надо название конечной папки вернуть в строку.
А как легче получать название последней папки в указанном пути FileOpenDialog ?
т.е. надо название конечной папки вернуть в строку.
alex832008 16:31 15-09-2008
Цитата:
Эта функция устанавливает рабочую папку (папка в который были выбраны файлы), поэтому @WorkingDir это и есть последняя папка
Цитата:
Только имя папки?
Код:
$sFile = FileOpenDialog("Title", "", "All (*.*)")
$sDirName = StringRegExpReplace(@WorkingDir, "^.*\\", "")
MsgBox(64, "Results", StringFormat("Выбранный файл: %s\nРабочая папка: %s\nИмя папки: %s", $sFile, @WorkingDir, $sDirName))
Цитата:
как легче получать название последней папки в указанном пути FileOpenDialog ?
Эта функция устанавливает рабочую папку (папка в который были выбраны файлы), поэтому @WorkingDir это и есть последняя папка
Цитата:
надо название конечной папки вернуть в строку
Только имя папки?
Код:
$sFile = FileOpenDialog("Title", "", "All (*.*)")
$sDirName = StringRegExpReplace(@WorkingDir, "^.*\\", "")
MsgBox(64, "Results", StringFormat("Выбранный файл: %s\nРабочая папка: %s\nИмя папки: %s", $sFile, @WorkingDir, $sDirName))
alex832008
Цитата:
Вариант 1
Код: $sFile = FileOpenDialog("Select File...", "", "All (*.*)")
If @error Then Exit
$sFolder = StringRegExpReplace($sFile, "^.*\\(.*)\\.*$", "\1")
If @extended = 0 Then $sFolder = StringRegExpReplace($sFile, "(^.*\\).*", "\1")
MsgBox(0, "", $sFolder)
Цитата:
получать название последней папки в указанном пути FileOpenDialog
Вариант 1
Код: $sFile = FileOpenDialog("Select File...", "", "All (*.*)")
If @error Then Exit
$sFolder = StringRegExpReplace($sFile, "^.*\\(.*)\\.*$", "\1")
If @extended = 0 Then $sFolder = StringRegExpReplace($sFile, "(^.*\\).*", "\1")
MsgBox(0, "", $sFolder)
ViSiToR
Цитата:
немного унифицировал твой вариант:
Код: #include <GuiConstantsEx.au3>
#include <StaticConstants.au3>
#include <WindowsConstants.au3>
$Main_GUI = GUICreate("Wizard Demo!", 400, 300)
$Img_Path = @SystemDir & "\oobe\images\wpakey.jpg" ;@SystemDir & "\Setup.bmp"
$iStep = 1
Global $Main_Ctrls[10][4] = [ _
[_GUICtrlCreateSeperator(0, 2, 265, 3, 396), 0, 0, 0], _
[GUICtrlCreateButton("<<Back", 170, 270, 60), $GUI_DISABLE, $GUI_ENABLE, $GUI_ENABLE], _
[GUICtrlCreateButton("Next>>", 240, 270, 60), $GUI_ENABLE, $GUI_ENABLE, $GUI_DISABLE], _
[GUICtrlCreateButton("Exit", 325, 270, 60), 0, 0, 0], _
[GUICtrlCreatePic($Img_Path, 2, 2, 160, 263, $SS_SUNKEN, $WS_EX_STATICEDGE+$WS_EX_CLIENTEDGE), $GUI_SHOW, $GUI_HIDE, $GUI_HIDE], _
[GUICtrlCreateLabel("Wellcome!", 240, 20, 150), $GUI_SHOW, $GUI_HIDE, $GUI_HIDE], _
[GUICtrlCreateInput("Some input", 10, 20, 180, 20), $GUI_HIDE, $GUI_SHOW, $GUI_HIDE], _
[GUICtrlCreateCheckbox("Some checkbox", 10, 50), $GUI_HIDE, $GUI_SHOW, $GUI_HIDE], _
[GUICtrlCreateEdit("Some Edit", 10, 20, 180, 220), $GUI_HIDE, $GUI_HIDE, $GUI_SHOW], _
[GUICtrlCreateLabel("Some Label", 220, 20), $GUI_HIDE, $GUI_HIDE, $GUI_SHOW] _
]
GUICtrlSetFont($Main_Ctrls[5][0], 12, 800)
GUISetState(@SW_SHOW, $Main_GUI)
_Elements_SetState($iStep)
While 1
$Msg = GUIGetMsg()
Switch $Msg
Case $Main_Ctrls[3][0], $GUI_EVENT_CLOSE
$Ask = MsgBox(256+52, "Attention", "Are you sure you want to exit the Wizard now?", 0, $Main_GUI)
If $Ask <> 6 Then ContinueLoop
Exit
Case $Main_Ctrls[2][0]
$iStep += 1
_Elements_SetState($iStep)
Case $Main_Ctrls[1][0]
$iStep -= 1
_Elements_SetState($iStep)
EndSwitch
WEnd
Func _GUICtrlCreateSeperator($Direction, $Left, $Top, $Width=3, $Lenght=25)
If $Direction Then Return GUICtrlCreateLabel("", $Left, $Top, $Width, $Lenght, $SS_SUNKEN)
Return GUICtrlCreateLabel("", $Left, $Top, $Lenght, $Width, $SS_SUNKEN)
EndFunc
Func _Elements_SetState($iStep)
For $i=1 To UBound($Main_Ctrls,1)-1
GUICtrlSetState($Main_Ctrls[$i][0], $Main_Ctrls[$i][$iStep])
Next
EndFunc
Цитата:
Вот
немного унифицировал твой вариант:
Код: #include <GuiConstantsEx.au3>
#include <StaticConstants.au3>
#include <WindowsConstants.au3>
$Main_GUI = GUICreate("Wizard Demo!", 400, 300)
$Img_Path = @SystemDir & "\oobe\images\wpakey.jpg" ;@SystemDir & "\Setup.bmp"
$iStep = 1
Global $Main_Ctrls[10][4] = [ _
[_GUICtrlCreateSeperator(0, 2, 265, 3, 396), 0, 0, 0], _
[GUICtrlCreateButton("<<Back", 170, 270, 60), $GUI_DISABLE, $GUI_ENABLE, $GUI_ENABLE], _
[GUICtrlCreateButton("Next>>", 240, 270, 60), $GUI_ENABLE, $GUI_ENABLE, $GUI_DISABLE], _
[GUICtrlCreateButton("Exit", 325, 270, 60), 0, 0, 0], _
[GUICtrlCreatePic($Img_Path, 2, 2, 160, 263, $SS_SUNKEN, $WS_EX_STATICEDGE+$WS_EX_CLIENTEDGE), $GUI_SHOW, $GUI_HIDE, $GUI_HIDE], _
[GUICtrlCreateLabel("Wellcome!", 240, 20, 150), $GUI_SHOW, $GUI_HIDE, $GUI_HIDE], _
[GUICtrlCreateInput("Some input", 10, 20, 180, 20), $GUI_HIDE, $GUI_SHOW, $GUI_HIDE], _
[GUICtrlCreateCheckbox("Some checkbox", 10, 50), $GUI_HIDE, $GUI_SHOW, $GUI_HIDE], _
[GUICtrlCreateEdit("Some Edit", 10, 20, 180, 220), $GUI_HIDE, $GUI_HIDE, $GUI_SHOW], _
[GUICtrlCreateLabel("Some Label", 220, 20), $GUI_HIDE, $GUI_HIDE, $GUI_SHOW] _
]
GUICtrlSetFont($Main_Ctrls[5][0], 12, 800)
GUISetState(@SW_SHOW, $Main_GUI)
_Elements_SetState($iStep)
While 1
$Msg = GUIGetMsg()
Switch $Msg
Case $Main_Ctrls[3][0], $GUI_EVENT_CLOSE
$Ask = MsgBox(256+52, "Attention", "Are you sure you want to exit the Wizard now?", 0, $Main_GUI)
If $Ask <> 6 Then ContinueLoop
Exit
Case $Main_Ctrls[2][0]
$iStep += 1
_Elements_SetState($iStep)
Case $Main_Ctrls[1][0]
$iStep -= 1
_Elements_SetState($iStep)
EndSwitch
WEnd
Func _GUICtrlCreateSeperator($Direction, $Left, $Top, $Width=3, $Lenght=25)
If $Direction Then Return GUICtrlCreateLabel("", $Left, $Top, $Width, $Lenght, $SS_SUNKEN)
Return GUICtrlCreateLabel("", $Left, $Top, $Lenght, $Width, $SS_SUNKEN)
EndFunc
Func _Elements_SetState($iStep)
For $i=1 To UBound($Main_Ctrls,1)-1
GUICtrlSetState($Main_Ctrls[$i][0], $Main_Ctrls[$i][$iStep])
Next
EndFunc
SysLam 06:10 16-09-2008
Цитата:
Неплохо! правда для разбора будет немного неудобно, но идея хорошая.
Цитата:
немного унифицировал твой вариант
Неплохо! правда для разбора будет немного неудобно, но идея хорошая.
Как получить в переменной имя последнего по дате создания файла *.txt в папке где есть куча других? FileFindNextFile вроде по имени сортирует.
Цитата:
Цитата:как легче получать название последней папки в указанном пути FileOpenDialog ?
Эта функция устанавливает рабочую папку (папка в который были выбраны файлы), поэтому @WorkingDir это и есть последняя папка
Цитата:надо название конечной папки вернуть в строку
Только имя папки?
Код:
$sFile = FileOpenDialog("Title", "", "All (*.*)")
$sDirName = StringRegExpReplace(@WorkingDir, "^.*\\", "")
MsgBox(64, "Results", StringFormat("Выбранный файл: %s\nРабочая папка: %s\nИмя папки: %s", $sFile, @WorkingDir, $sDirName))
А если это будет FileSelectFolder
И насколько я понял, FileSelectFolder @WorkingDir уже не устанавливает ?
Tipulatoid
Попробуй так:
Код: #include <File.au3>
$sPath = "c:\test"
$aFiles = _FileListToArray($sPath, "*.txt", 1)
If @error Then Exit
$sample = $sPath & "\" & $aFiles[1]
For $i = 2 To $aFiles[0]
If FileGetTime($sPath & "\" & $aFiles[$i], 1, 1) > FileGetTime($sample, 1, 1) Then $sample = $sPath & "\" & $aFiles[$i]
Next
MsgBox(0, "Last file", $sample)
Попробуй так:
Код: #include <File.au3>
$sPath = "c:\test"
$aFiles = _FileListToArray($sPath, "*.txt", 1)
If @error Then Exit
$sample = $sPath & "\" & $aFiles[1]
For $i = 2 To $aFiles[0]
If FileGetTime($sPath & "\" & $aFiles[$i], 1, 1) > FileGetTime($sample, 1, 1) Then $sample = $sPath & "\" & $aFiles[$i]
Next
MsgBox(0, "Last file", $sample)
Цитата:
Цитата:А если это будет FileSelectFolder
ViSiToR ведь показал тебе пример, нужно его немного изменить:
Код:$sFolder = FileSelectFolder("Select Folder...", "")
If @error Then Exit
$sLastDir = StringRegExpReplace($sFolder, "^.*\\", "")
MsgBox(0, "", StringFormat("Выбранная папка: %s\nИмя папки: %s", $sFolder, $sLastDir))
Пасиб
ViSiToR
Цитата:
добавить переменную для индивидуальной работы с контролом всегда можно
кстати, обнаружил что WinList() находит почему-то не все окна
Цитата:
для разбора будет немного неудобно
добавить переменную для индивидуальной работы с контролом всегда можно
кстати, обнаружил что WinList() находит почему-то не все окна
Maza Faka
Thnx
Thnx
ViSiToR
Спасибо за помощь
Спасибо за помощь
Можно ли как то досрочно перейти к новому витку цикла пропустив при определённых обстоятельствах часть кода и при этом не используя многострочные условия с вложенным в них кодом.
Я хочу это потому что многострочные условные конструкции вытянутые на несколько страниц, а тем более с ещё несколькими такими же, вложенными друг в друга визуально усложняют код, становится всё трудней понять где чьё окончание (endif) находится.
Хотелось бы минимизировать в разумных пределах при возможности.
вот например так:
For $var in $arr
код
код
код
If true then
сразу отсюда начать следующий цикл что то типа goto или jump к строке for или next
endif
код
код
код
Next
Добавлено:
Я тут вспомнил про ContinueLoop
Вот только то ли это что нужно, сохранится ли прогресс перечисления?
Я хочу это потому что многострочные условные конструкции вытянутые на несколько страниц, а тем более с ещё несколькими такими же, вложенными друг в друга визуально усложняют код, становится всё трудней понять где чьё окончание (endif) находится.
Хотелось бы минимизировать в разумных пределах при возможности.
вот например так:
For $var in $arr
код
код
код
If true then
сразу отсюда начать следующий цикл что то типа goto или jump к строке for или next
endif
код
код
код
Next
Добавлено:
Я тут вспомнил про ContinueLoop
Вот только то ли это что нужно, сохранится ли прогресс перечисления?
NORIO
Цитата:
Переходим
Цитата:
Код: For $i = 1 To 10
If $i = 5 Then ContinueLoop
ConsoleWrite($i & @LF)
Next
Цитата:
Я тут вспомнил про ContinueLoop. сохранится ли прогресс перечисления?
Переходим
Цитата:
к новому витку цикла пропустивцифру 5
Код: For $i = 1 To 10
If $i = 5 Then ContinueLoop
ConsoleWrite($i & @LF)
Next
ViSiToR
Цитата:
уфф, извиняюсь - сегодня окно нашлось, может вчера глюк какой был?
пробывал твою UDF поиска окна по процессу
Цитата:
Например?
уфф, извиняюсь - сегодня окно нашлось, может вчера глюк какой был?
пробывал твою UDF поиска окна по процессу
Поправьте плиз. Нужно:
1. Чтобы в $Input4_1_1 НЕЛЬЗЯ было с клавиатуры забить любые нецифры и любое число больше 36. Иначе можно вбить 1000000 и будет скрипт пытаться столько вкладок нарисовать.
2. Чтобы при изменении содержимого $Input4_1_2 имена вкладок менялись "на лету" а не как сейчас при клике на другом элементе GUI
Untitled3.au3 [строка 1] : [more]
Код: #include <GuiConstantsEx.au3>
#include <WindowsConstants.au3>
#include <StaticConstants.au3>
#include <EditConstants.au3>
#include <GUIConstants.au3>
#include <file.au3>
#include <guitab.au3>
#include <string.au3>
#include <Array.au3>
; Определяем ini-файл куда будут писаться или откуда будут читаться настройки
$inifile = "champ2.ini"
; Рисуем четвертый диалог мастера
$ChildGui_4 = GUICreate("", 493, 325, 1, 1, $WS_POPUP)
$Label4_1_1 = GUICtrlCreateLabel("Шаг 3/10: Ввод сведений о командах", 24, 8, 200, 17)
$Checkbox4_1_1 = GUICtrlCreateCheckbox("Многогрупповая игра", 32, 29, 125, 17)
If IniRead($inifile, "General", "MultiGame", "0") = 0 Then
GUICtrlSetState($Checkbox4_1_1, $GUI_UNCHECKED)
$MultiGame = 0
Else
GUICtrlSetState($Checkbox4_1_1, $GUI_CHECKED)
$MultiGame = 1
EndIf
$Button4_1_1 = GUICtrlCreateButton("Указать папку", 160, 30, 90, 17)
$Icon4_1_1 = GUICtrlCreateIcon("inetcpl.cpl", -23, 255, 30, 15, 15)
$Icon4_1_2 = GUICtrlCreateIcon("inetcpl.cpl", -22, 260, 30, 15, 15)
If Not IniRead($inifile, "General", "MultiGamePath", "") = "" Then
$multi_group_path = IniRead($inifile, "General", "MultiGamePath", "")
Else
$multi_group_path = ""
EndIf
If not $multi_group_path = "" Then
$Label4_1_2 = GUICtrlCreateLabel($multi_group_path, 34, 47, 225, 33)
Else
$Label4_1_2 = GUICtrlCreateLabel("", 34, 47, 225, 33)
EndIf
GUICtrlSetColor(-1, 0x335EA8)
If GUICtrlRead($Checkbox4_1_1) = $GUI_UNCHECKED Then
GUICtrlSetState($Button4_1_1, $GUI_DISABLE)
GUICtrlSetState($Icon4_1_1, $GUI_HIDE)
GUICtrlSetState($Icon4_1_2, $GUI_HIDE)
GUICtrlSetState($Label4_1_2, $GUI_HIDE)
Else
GUICtrlSetState($Button4_1_1, $GUI_ENABLE)
If not $multi_group_path = "" Then
GUICtrlSetState($Icon4_1_1, $GUI_HIDE)
GUICtrlSetState($Icon4_1_2, $GUI_SHOW)
GUICtrlSetState($Label4_1_2, $GUI_SHOW)
Else
GUICtrlSetState($Icon4_1_1, $GUI_SHOW)
GUICtrlSetState($Icon4_1_2, $GUI_HIDE)
EndIf
EndIf
$Label4_1_3 = GUICtrlCreateLabel ("Кол-во групп (1-6/36):", 290, 31, 130, 17)
$Input4_1_1 = GUICtrlCreateInput (IniRead ($inifile, "General", "GroupQuan", "6"), 405, 30, 40,17)
$UpDown4_1_1 = GUICtrlCreateUpdown($Input4_1_1, $UDS_ARROWKEYS)
If $MultiGame = 0 Then
GUICtrlSetLimit(-1, 36, 1)
Else
GUICtrlSetLimit(-1, 6, 1)
EndIf
$Icon4_2_1 = GUICtrlCreateIcon("inetcpl.cpl", -23, 457, 30, 15, 15)
$Icon4_2_2 = GUICtrlCreateIcon("inetcpl.cpl", -22, 463, 30, 15, 15)
$Label4_1_4 = GUICtrlCreateLabel ("Название группы:", 290, 57, 95, 17)
$Input4_1_2 = GUICtrlCreateInput (IniRead ($inifile, "General", "GroupName", "Сетка"), 386, 56, 60,17)
$Icon4_3_1 = GUICtrlCreateIcon("inetcpl.cpl", -23, 457, 56, 15, 15)
$Icon4_3_2 = GUICtrlCreateIcon("inetcpl.cpl", -22, 463, 56, 15, 15)
$Tab4_2_1 = GUICtrlCreateTab (30, 80, 450, 247)
_DrawTabChildGui4 ()
; Вызываем функцию проверки элементов Input
_CheckInputsProc()
GUISetState(@SW_SHOW, $ChildGui_4)
While 1
$Msg = GUIGetMsg(1)
Switch $Msg[0]
Case $Checkbox4_1_1
If GUICtrlRead ($Checkbox4_1_1) = $GUI_UNCHECKED Then
$MultiGame = 0
_CheckInputsProc(1)
GUICtrlSetState ($Button4_1_1, $GUI_DISABLE)
GuiCtrlSetState ($Label4_1_2, $GUI_HIDE)
GUICtrlSetState ($Icon4_1_1, $GUI_HIDE)
GUICtrlSetState ($Icon4_1_2, $GUI_HIDE)
GuiCtrlSetLimit ($UpDown4_1_1, 36, 1)
Else
$MultiGame = 1
_CheckInputsProc(1)
GUICtrlSetState ($Button4_1_1, $GUI_ENABLE)
GUICtrlSetState ($Label4_1_2, IniRead ($inifile, "General", "MultiGamePath", ""))
GuiCtrlSetLimit ($UpDown4_1_1, 6, 1)
If GUICtrlRead ($Input4_1_1) > 6 Then GUICtrlSetData ($Input4_1_1, "6")
If Not $multi_group_path = "" Then
GuiCtrlSetState ($Label4_1_2, $GUI_SHOW)
GUICtrlSetState ($Icon4_1_1, $GUI_HIDE)
GUICtrlSetState ($Icon4_1_2, $GUI_SHOW)
Else
GuiCtrlSetState ($Label4_1_2, $GUI_HIDE)
GUICtrlSetState ($Icon4_1_1, $GUI_SHOW)
GUICtrlSetState ($Icon4_1_2, $GUI_HIDE)
EndIf
EndIf
Case $Button4_1_1
_CheckInputsProc(1)
$probably_multi_group_path =FileSelectFolder ("Выберите папку c многогрупповой игрой", "", 1, @ScriptDir & "\games")
If Not FileExists ($probably_multi_group_path & "\params2.dal" ) Then
MsgBox (0,"Ошибка", "В указанной папке многогрупповая игра не обнаружена!")
$multi_group_path = ""
_CheckInputsProc(1)
GUICtrlSetData($Label4_1_2, $multi_group_path)
GUICtrlSetState ($Label4_1_2, $GUI_HIDE)
GUICtrlSetState ($Icon4_1_1, $GUI_SHOW)
GUICtrlSetState ($Icon4_1_2, $GUI_HIDE)
Else
$multi_group_path = $probably_multi_group_path
_CheckInputsProc(1)
GUICtrlSetData($Label4_1_2, $multi_group_path)
GUICtrlSetState ($Label4_1_2, $GUI_SHOW)
GUICtrlSetState ($Icon4_1_1, $GUI_HIDE)
GUICtrlSetState ($Icon4_1_2, $GUI_SHOW)
EndIf
Case $Input4_1_2
_DrawTabChildGui4()
Case $Input4_1_1
_DrawTabChildGui4()
EndSwitch
WEnd
Func _CheckInputsProc($iCheckNextButton=0)
If $MultiGame = 0 Then
If StringIsInt (GUICtrlRead($Input4_1_1)) = 0 Or GUICtrlRead($Input4_1_1) < 1 Or GUICtrlRead($Input4_1_1) > 36 Then
GUICtrlSetState($Icon4_2_1, $GUI_SHOW)
GUICtrlSetState($Icon4_2_2, $GUI_HIDE)
Else
GUICtrlSetState($Icon4_2_1, $GUI_HIDE)
GUICtrlSetState($Icon4_2_2, $GUI_SHOW)
EndIf
Else
If StringIsInt (GUICtrlRead($Input4_1_1)) = 0 Or GUICtrlRead($Input4_1_1) < 1 Or GUICtrlRead($Input4_1_1) > 6 Then
GUICtrlSetState($Icon4_2_1, $GUI_SHOW)
GUICtrlSetState($Icon4_2_2, $GUI_HIDE)
Else
GUICtrlSetState($Icon4_2_1, $GUI_HIDE)
GUICtrlSetState($Icon4_2_2, $GUI_SHOW)
EndIf
EndIf
If GUICtrlRead($Input4_1_2) = "" Then
_GUICtrlSetState($Icon4_3_1, $GUI_SHOW)
_GUICtrlSetState($Icon4_3_2, $GUI_HIDE)
Else
_GUICtrlSetState($Icon4_3_1, $GUI_HIDE)
_GUICtrlSetState($Icon4_3_2, $GUI_SHOW)
EndIf
EndFunc ;==>_CheckInputsProc
; Рисуем Tabitems на шаге 3 ($ChildGui_4)
Func _DrawTabChildGui4 ()
;надо прочеcть перед удалением всё что будет в tabitems в массивы
_GUICtrlTab_DeleteAllItems ($Tab4_2_1)
For $g=1 to GUICtrlRead ($Input4_1_1)
$TabItem4_2_1_0 = GUICtrlCreateTabItem(GUICtrlRead ($Input4_1_2) & " " & $g)
Next
EndFunc
Func _GUICtrlSetState($nCtrl, $iState)
If BitAND(GUICtrlGetState($nCtrl), $iState) <> $iState Then GUICtrlSetState($nCtrl, $iState)
EndFunc
1. Чтобы в $Input4_1_1 НЕЛЬЗЯ было с клавиатуры забить любые нецифры и любое число больше 36. Иначе можно вбить 1000000 и будет скрипт пытаться столько вкладок нарисовать.
2. Чтобы при изменении содержимого $Input4_1_2 имена вкладок менялись "на лету" а не как сейчас при клике на другом элементе GUI
Untitled3.au3 [строка 1] : [more]
Код: #include <GuiConstantsEx.au3>
#include <WindowsConstants.au3>
#include <StaticConstants.au3>
#include <EditConstants.au3>
#include <GUIConstants.au3>
#include <file.au3>
#include <guitab.au3>
#include <string.au3>
#include <Array.au3>
; Определяем ini-файл куда будут писаться или откуда будут читаться настройки
$inifile = "champ2.ini"
; Рисуем четвертый диалог мастера
$ChildGui_4 = GUICreate("", 493, 325, 1, 1, $WS_POPUP)
$Label4_1_1 = GUICtrlCreateLabel("Шаг 3/10: Ввод сведений о командах", 24, 8, 200, 17)
$Checkbox4_1_1 = GUICtrlCreateCheckbox("Многогрупповая игра", 32, 29, 125, 17)
If IniRead($inifile, "General", "MultiGame", "0") = 0 Then
GUICtrlSetState($Checkbox4_1_1, $GUI_UNCHECKED)
$MultiGame = 0
Else
GUICtrlSetState($Checkbox4_1_1, $GUI_CHECKED)
$MultiGame = 1
EndIf
$Button4_1_1 = GUICtrlCreateButton("Указать папку", 160, 30, 90, 17)
$Icon4_1_1 = GUICtrlCreateIcon("inetcpl.cpl", -23, 255, 30, 15, 15)
$Icon4_1_2 = GUICtrlCreateIcon("inetcpl.cpl", -22, 260, 30, 15, 15)
If Not IniRead($inifile, "General", "MultiGamePath", "") = "" Then
$multi_group_path = IniRead($inifile, "General", "MultiGamePath", "")
Else
$multi_group_path = ""
EndIf
If not $multi_group_path = "" Then
$Label4_1_2 = GUICtrlCreateLabel($multi_group_path, 34, 47, 225, 33)
Else
$Label4_1_2 = GUICtrlCreateLabel("", 34, 47, 225, 33)
EndIf
GUICtrlSetColor(-1, 0x335EA8)
If GUICtrlRead($Checkbox4_1_1) = $GUI_UNCHECKED Then
GUICtrlSetState($Button4_1_1, $GUI_DISABLE)
GUICtrlSetState($Icon4_1_1, $GUI_HIDE)
GUICtrlSetState($Icon4_1_2, $GUI_HIDE)
GUICtrlSetState($Label4_1_2, $GUI_HIDE)
Else
GUICtrlSetState($Button4_1_1, $GUI_ENABLE)
If not $multi_group_path = "" Then
GUICtrlSetState($Icon4_1_1, $GUI_HIDE)
GUICtrlSetState($Icon4_1_2, $GUI_SHOW)
GUICtrlSetState($Label4_1_2, $GUI_SHOW)
Else
GUICtrlSetState($Icon4_1_1, $GUI_SHOW)
GUICtrlSetState($Icon4_1_2, $GUI_HIDE)
EndIf
EndIf
$Label4_1_3 = GUICtrlCreateLabel ("Кол-во групп (1-6/36):", 290, 31, 130, 17)
$Input4_1_1 = GUICtrlCreateInput (IniRead ($inifile, "General", "GroupQuan", "6"), 405, 30, 40,17)
$UpDown4_1_1 = GUICtrlCreateUpdown($Input4_1_1, $UDS_ARROWKEYS)
If $MultiGame = 0 Then
GUICtrlSetLimit(-1, 36, 1)
Else
GUICtrlSetLimit(-1, 6, 1)
EndIf
$Icon4_2_1 = GUICtrlCreateIcon("inetcpl.cpl", -23, 457, 30, 15, 15)
$Icon4_2_2 = GUICtrlCreateIcon("inetcpl.cpl", -22, 463, 30, 15, 15)
$Label4_1_4 = GUICtrlCreateLabel ("Название группы:", 290, 57, 95, 17)
$Input4_1_2 = GUICtrlCreateInput (IniRead ($inifile, "General", "GroupName", "Сетка"), 386, 56, 60,17)
$Icon4_3_1 = GUICtrlCreateIcon("inetcpl.cpl", -23, 457, 56, 15, 15)
$Icon4_3_2 = GUICtrlCreateIcon("inetcpl.cpl", -22, 463, 56, 15, 15)
$Tab4_2_1 = GUICtrlCreateTab (30, 80, 450, 247)
_DrawTabChildGui4 ()
; Вызываем функцию проверки элементов Input
_CheckInputsProc()
GUISetState(@SW_SHOW, $ChildGui_4)
While 1
$Msg = GUIGetMsg(1)
Switch $Msg[0]
Case $Checkbox4_1_1
If GUICtrlRead ($Checkbox4_1_1) = $GUI_UNCHECKED Then
$MultiGame = 0
_CheckInputsProc(1)
GUICtrlSetState ($Button4_1_1, $GUI_DISABLE)
GuiCtrlSetState ($Label4_1_2, $GUI_HIDE)
GUICtrlSetState ($Icon4_1_1, $GUI_HIDE)
GUICtrlSetState ($Icon4_1_2, $GUI_HIDE)
GuiCtrlSetLimit ($UpDown4_1_1, 36, 1)
Else
$MultiGame = 1
_CheckInputsProc(1)
GUICtrlSetState ($Button4_1_1, $GUI_ENABLE)
GUICtrlSetState ($Label4_1_2, IniRead ($inifile, "General", "MultiGamePath", ""))
GuiCtrlSetLimit ($UpDown4_1_1, 6, 1)
If GUICtrlRead ($Input4_1_1) > 6 Then GUICtrlSetData ($Input4_1_1, "6")
If Not $multi_group_path = "" Then
GuiCtrlSetState ($Label4_1_2, $GUI_SHOW)
GUICtrlSetState ($Icon4_1_1, $GUI_HIDE)
GUICtrlSetState ($Icon4_1_2, $GUI_SHOW)
Else
GuiCtrlSetState ($Label4_1_2, $GUI_HIDE)
GUICtrlSetState ($Icon4_1_1, $GUI_SHOW)
GUICtrlSetState ($Icon4_1_2, $GUI_HIDE)
EndIf
EndIf
Case $Button4_1_1
_CheckInputsProc(1)
$probably_multi_group_path =FileSelectFolder ("Выберите папку c многогрупповой игрой", "", 1, @ScriptDir & "\games")
If Not FileExists ($probably_multi_group_path & "\params2.dal" ) Then
MsgBox (0,"Ошибка", "В указанной папке многогрупповая игра не обнаружена!")
$multi_group_path = ""
_CheckInputsProc(1)
GUICtrlSetData($Label4_1_2, $multi_group_path)
GUICtrlSetState ($Label4_1_2, $GUI_HIDE)
GUICtrlSetState ($Icon4_1_1, $GUI_SHOW)
GUICtrlSetState ($Icon4_1_2, $GUI_HIDE)
Else
$multi_group_path = $probably_multi_group_path
_CheckInputsProc(1)
GUICtrlSetData($Label4_1_2, $multi_group_path)
GUICtrlSetState ($Label4_1_2, $GUI_SHOW)
GUICtrlSetState ($Icon4_1_1, $GUI_HIDE)
GUICtrlSetState ($Icon4_1_2, $GUI_SHOW)
EndIf
Case $Input4_1_2
_DrawTabChildGui4()
Case $Input4_1_1
_DrawTabChildGui4()
EndSwitch
WEnd
Func _CheckInputsProc($iCheckNextButton=0)
If $MultiGame = 0 Then
If StringIsInt (GUICtrlRead($Input4_1_1)) = 0 Or GUICtrlRead($Input4_1_1) < 1 Or GUICtrlRead($Input4_1_1) > 36 Then
GUICtrlSetState($Icon4_2_1, $GUI_SHOW)
GUICtrlSetState($Icon4_2_2, $GUI_HIDE)
Else
GUICtrlSetState($Icon4_2_1, $GUI_HIDE)
GUICtrlSetState($Icon4_2_2, $GUI_SHOW)
EndIf
Else
If StringIsInt (GUICtrlRead($Input4_1_1)) = 0 Or GUICtrlRead($Input4_1_1) < 1 Or GUICtrlRead($Input4_1_1) > 6 Then
GUICtrlSetState($Icon4_2_1, $GUI_SHOW)
GUICtrlSetState($Icon4_2_2, $GUI_HIDE)
Else
GUICtrlSetState($Icon4_2_1, $GUI_HIDE)
GUICtrlSetState($Icon4_2_2, $GUI_SHOW)
EndIf
EndIf
If GUICtrlRead($Input4_1_2) = "" Then
_GUICtrlSetState($Icon4_3_1, $GUI_SHOW)
_GUICtrlSetState($Icon4_3_2, $GUI_HIDE)
Else
_GUICtrlSetState($Icon4_3_1, $GUI_HIDE)
_GUICtrlSetState($Icon4_3_2, $GUI_SHOW)
EndIf
EndFunc ;==>_CheckInputsProc
; Рисуем Tabitems на шаге 3 ($ChildGui_4)
Func _DrawTabChildGui4 ()
;надо прочеcть перед удалением всё что будет в tabitems в массивы
_GUICtrlTab_DeleteAllItems ($Tab4_2_1)
For $g=1 to GUICtrlRead ($Input4_1_1)
$TabItem4_2_1_0 = GUICtrlCreateTabItem(GUICtrlRead ($Input4_1_2) & " " & $g)
Next
EndFunc
Func _GUICtrlSetState($nCtrl, $iState)
If BitAND(GUICtrlGetState($nCtrl), $iState) <> $iState Then GUICtrlSetState($nCtrl, $iState)
EndFunc
Товарищи, помогите разобраться.
Второй день копаюсь в autoit и никак не могу понять почему не работает простейший скрипт
$Title = "Test"
MsgBox(64, $Title, "")
WinWait($Title, "")
If Not WinActive($Title, "") Then WinActivate($Title, "")
WinActivate($Title, "")
Send("{ENTER}")
окошко появляется, а не закрывается =( понимаю, что что-то простое, но как заело... не могу никак понять чего
спасибо
Второй день копаюсь в autoit и никак не могу понять почему не работает простейший скрипт
$Title = "Test"
MsgBox(64, $Title, "")
WinWait($Title, "")
If Not WinActive($Title, "") Then WinActivate($Title, "")
WinActivate($Title, "")
Send("{ENTER}")
окошко появляется, а не закрывается =( понимаю, что что-то простое, но как заело... не могу никак понять чего
спасибо
Tipulatoid 13:28 17-09-2008
Цитата:
Для $Input4_1_1 можно задать стиль:
Код: $Input4_1_1 = GUICtrlCreateInput (IniRead ($inifile, "General", "GroupQuan", "6"), 405, 30, 40,17, BitOR($ES_LEFT, $ES_AUTOHSCROLL, $ES_READONLY))
Цитата:
Чтобы в $Input4_1_1 НЕЛЬЗЯ было с клавиатуры забить любые нецифры и любое число больше 36
Для $Input4_1_1 можно задать стиль:
Код: $Input4_1_1 = GUICtrlCreateInput (IniRead ($inifile, "General", "GroupQuan", "6"), 405, 30, 40,17, BitOR($ES_LEFT, $ES_AUTOHSCROLL, $ES_READONLY))
ViSiToR
традиционное спасибо. Однако с этими изменениями стало тормозить не подетски и даже зависать. Видно, слишком уж это ресурсоемкая вещь - перерисовка GUI "на лету". Придется наверное ввести кнопку "нарисовать вкладки" после того, как все изменения в инпуты внесены. В связи с этим вопрос - как поместить иконку на кнопку?
традиционное спасибо. Однако с этими изменениями стало тормозить не подетски и даже зависать. Видно, слишком уж это ресурсоемкая вещь - перерисовка GUI "на лету". Придется наверное ввести кнопку "нарисовать вкладки" после того, как все изменения в инпуты внесены. В связи с этим вопрос - как поместить иконку на кнопку?
Tipulatoid 17:08 17-09-2008
Цитата:
У меня [more=нормально]
Код: #include <GuiConstantsEx.au3>
#include <WindowsConstants.au3>
#include <StaticConstants.au3>
#include <EditConstants.au3>
#include <UpDownConstants.au3>
#include <file.au3>
#include <guitab.au3>
#include <string.au3>
#include <Array.au3>
; Определяем ini-файл куда будут писаться или откуда будут читаться настройки
$inifile = "champ2.ini"
; Рисуем четвертый диалог мастера
$ChildGui_4 = GUICreate("", 493, 325, 1, 1, $WS_POPUP)
$Label4_1_1 = GUICtrlCreateLabel("Шаг 3/10: Ввод сведений о командах", 24, 8, 200, 17)
$Checkbox4_1_1 = GUICtrlCreateCheckbox("Многогрупповая игра", 32, 29, 125, 17)
If IniRead($inifile, "General", "MultiGame", "0") = 0 Then
GUICtrlSetState($Checkbox4_1_1, $GUI_UNCHECKED)
$MultiGame = 0
Else
GUICtrlSetState($Checkbox4_1_1, $GUI_CHECKED)
$MultiGame = 1
EndIf
$Button4_1_1 = GUICtrlCreateButton("Указать папку", 160, 30, 90, 17)
$Icon4_1_1 = GUICtrlCreateIcon("inetcpl.cpl", -23, 255, 30, 15, 15)
$Icon4_1_2 = GUICtrlCreateIcon("inetcpl.cpl", -22, 260, 30, 15, 15)
If Not IniRead($inifile, "General", "MultiGamePath", "") = "" Then
$multi_group_path = IniRead($inifile, "General", "MultiGamePath", "")
Else
$multi_group_path = ""
EndIf
If Not $multi_group_path = "" Then
$Label4_1_2 = GUICtrlCreateLabel($multi_group_path, 34, 47, 225, 33)
Else
$Label4_1_2 = GUICtrlCreateLabel("", 34, 47, 225, 33)
EndIf
GUICtrlSetColor(-1, 0x335EA8)
If GUICtrlRead($Checkbox4_1_1) = $GUI_UNCHECKED Then
GUICtrlSetState($Button4_1_1, $GUI_DISABLE)
GUICtrlSetState($Icon4_1_1, $GUI_HIDE)
GUICtrlSetState($Icon4_1_2, $GUI_HIDE)
GUICtrlSetState($Label4_1_2, $GUI_HIDE)
Else
GUICtrlSetState($Button4_1_1, $GUI_ENABLE)
If Not $multi_group_path = "" Then
GUICtrlSetState($Icon4_1_1, $GUI_HIDE)
GUICtrlSetState($Icon4_1_2, $GUI_SHOW)
GUICtrlSetState($Label4_1_2, $GUI_SHOW)
Else
GUICtrlSetState($Icon4_1_1, $GUI_SHOW)
GUICtrlSetState($Icon4_1_2, $GUI_HIDE)
EndIf
EndIf
$Label4_1_3 = GUICtrlCreateLabel("Кол-во групп (1-6/36):", 290, 31, 130, 17)
$Input4_1_1 = GUICtrlCreateInput(IniRead($inifile, "General", "GroupQuan", "6"), 405, 30, 40, 17, _
BitOR($ES_LEFT, $ES_AUTOHSCROLL, $ES_READONLY))
$UpDown4_1_1 = GUICtrlCreateUpdown($Input4_1_1, $UDS_ARROWKEYS)
GUICtrlSetLimit(-1, 36, 1)
If $MultiGame = 0 Then
GUICtrlSetLimit(-1, 36, 1)
Else
GUICtrlSetLimit(-1, 6, 1)
EndIf
$Icon4_2_1 = GUICtrlCreateIcon("inetcpl.cpl", -23, 457, 30, 15, 15)
$Icon4_2_2 = GUICtrlCreateIcon("inetcpl.cpl", -22, 463, 30, 15, 15)
$Label4_1_4 = GUICtrlCreateLabel("Название группы:", 290, 57, 95, 17)
$Input4_1_2 = GUICtrlCreateInput(IniRead($inifile, "General", "GroupName", "Сетка"), 386, 56, 60, 17)
$Icon4_3_1 = GUICtrlCreateIcon("inetcpl.cpl", -23, 457, 56, 15, 15)
$Icon4_3_2 = GUICtrlCreateIcon("inetcpl.cpl", -22, 463, 56, 15, 15)
$Tab4_2_1 = GUICtrlCreateTab(30, 80, 450, 247)
_DrawTabChildGui4()
; Вызываем функцию проверки элементов Input
_CheckInputsProc()
GUISetState(@SW_SHOW, $ChildGui_4)
GUIRegisterMsg($WM_COMMAND, "WM_COMMAND")
While 1
$Msg = GUIGetMsg(1)
Switch $Msg[0]
Case $Checkbox4_1_1
If GUICtrlRead($Checkbox4_1_1) = $GUI_UNCHECKED Then
$MultiGame = 0
_CheckInputsProc(1)
GUICtrlSetState($Button4_1_1, $GUI_DISABLE)
GUICtrlSetState($Label4_1_2, $GUI_HIDE)
GUICtrlSetState($Icon4_1_1, $GUI_HIDE)
GUICtrlSetState($Icon4_1_2, $GUI_HIDE)
GUICtrlSetLimit($UpDown4_1_1, 36, 1)
Else
$MultiGame = 1
_CheckInputsProc(1)
GUICtrlSetState($Button4_1_1, $GUI_ENABLE)
GUICtrlSetState($Label4_1_2, IniRead($inifile, "General", "MultiGamePath", ""))
GUICtrlSetLimit($UpDown4_1_1, 6, 1)
If GUICtrlRead($Input4_1_1) > 6 Then GUICtrlSetData($Input4_1_1, "6")
If Not $multi_group_path = "" Then
GUICtrlSetState($Label4_1_2, $GUI_SHOW)
GUICtrlSetState($Icon4_1_1, $GUI_HIDE)
GUICtrlSetState($Icon4_1_2, $GUI_SHOW)
Else
GUICtrlSetState($Label4_1_2, $GUI_HIDE)
GUICtrlSetState($Icon4_1_1, $GUI_SHOW)
GUICtrlSetState($Icon4_1_2, $GUI_HIDE)
EndIf
EndIf
Case $Button4_1_1
_CheckInputsProc(1)
$probably_multi_group_path = FileSelectFolder("Выберите папку c многогрупповой игрой", "", 1, @ScriptDir & "\games")
If Not FileExists($probably_multi_group_path & "\params2.dal") Then
MsgBox(0, "Ошибка", "В указанной папке многогрупповая игра не обнаружена!")
$multi_group_path = ""
_CheckInputsProc(1)
GUICtrlSetData($Label4_1_2, $multi_group_path)
GUICtrlSetState($Label4_1_2, $GUI_HIDE)
GUICtrlSetState($Icon4_1_1, $GUI_SHOW)
GUICtrlSetState($Icon4_1_2, $GUI_HIDE)
Else
$multi_group_path = $probably_multi_group_path
_CheckInputsProc(1)
GUICtrlSetData($Label4_1_2, $multi_group_path)
GUICtrlSetState($Label4_1_2, $GUI_SHOW)
GUICtrlSetState($Icon4_1_1, $GUI_HIDE)
GUICtrlSetState($Icon4_1_2, $GUI_SHOW)
EndIf
EndSwitch
WEnd
Func _CheckInputsProc($iCheckNextButton = 0)
If $MultiGame = 0 Then
If StringIsInt(GUICtrlRead($Input4_1_1)) = 0 Or GUICtrlRead($Input4_1_1) < 1 Or GUICtrlRead($Input4_1_1) > 36 Then
GUICtrlSetState($Icon4_2_1, $GUI_SHOW)
GUICtrlSetState($Icon4_2_2, $GUI_HIDE)
Else
GUICtrlSetState($Icon4_2_1, $GUI_HIDE)
GUICtrlSetState($Icon4_2_2, $GUI_SHOW)
EndIf
Else
If StringIsInt(GUICtrlRead($Input4_1_1)) = 0 Or GUICtrlRead($Input4_1_1) < 1 Or GUICtrlRead($Input4_1_1) > 6 Then
GUICtrlSetState($Icon4_2_1, $GUI_SHOW)
GUICtrlSetState($Icon4_2_2, $GUI_HIDE)
Else
GUICtrlSetState($Icon4_2_1, $GUI_HIDE)
GUICtrlSetState($Icon4_2_2, $GUI_SHOW)
EndIf
EndIf
If GUICtrlRead($Input4_1_2) = "" Then
_GUICtrlSetState($Icon4_3_1, $GUI_SHOW)
_GUICtrlSetState($Icon4_3_2, $GUI_HIDE)
Else
_GUICtrlSetState($Icon4_3_1, $GUI_HIDE)
_GUICtrlSetState($Icon4_3_2, $GUI_SHOW)
EndIf
EndFunc ;==>_CheckInputsProc
; Рисуем Tabitems на шаге 3 ($ChildGui_4)
Func _DrawTabChildGui4()
;надо прочеcть перед удалением всё что будет в tabitems в массивы
_GUICtrlTab_DeleteAllItems($Tab4_2_1)
For $g = 1 To GUICtrlRead($Input4_1_1)
$TabItem4_2_1_0 = GUICtrlCreateTabItem(GUICtrlRead($Input4_1_2) & " " & $g)
Next
EndFunc ;==>_DrawTabChildGui4
Func _GUICtrlSetState($nCtrl, $iState)
If BitAND(GUICtrlGetState($nCtrl), $iState) <> $iState Then GUICtrlSetState($nCtrl, $iState)
EndFunc ;==>_GUICtrlSetState
Func WM_COMMAND($hWnd, $Msg, $wParam, $lParam)
Local $nNotifyCode = BitShift($wParam, 16)
Local $nID = BitAND($wParam, 0xFFFF)
Local $hCtrl = $lParam
Switch $nNotifyCode
Case $EN_CHANGE, $EN_UPDATE
Switch $nID
Case $Input4_1_1, $Input4_1_2
_DrawTabChildGui4()
EndSwitch
EndSwitch
Return $GUI_RUNDEFMSG
EndFunc ;==>WM_COMMAND
Цитата:
с этими изменениями стало тормозить не подетски
У меня [more=нормально]
Код: #include <GuiConstantsEx.au3>
#include <WindowsConstants.au3>
#include <StaticConstants.au3>
#include <EditConstants.au3>
#include <UpDownConstants.au3>
#include <file.au3>
#include <guitab.au3>
#include <string.au3>
#include <Array.au3>
; Определяем ini-файл куда будут писаться или откуда будут читаться настройки
$inifile = "champ2.ini"
; Рисуем четвертый диалог мастера
$ChildGui_4 = GUICreate("", 493, 325, 1, 1, $WS_POPUP)
$Label4_1_1 = GUICtrlCreateLabel("Шаг 3/10: Ввод сведений о командах", 24, 8, 200, 17)
$Checkbox4_1_1 = GUICtrlCreateCheckbox("Многогрупповая игра", 32, 29, 125, 17)
If IniRead($inifile, "General", "MultiGame", "0") = 0 Then
GUICtrlSetState($Checkbox4_1_1, $GUI_UNCHECKED)
$MultiGame = 0
Else
GUICtrlSetState($Checkbox4_1_1, $GUI_CHECKED)
$MultiGame = 1
EndIf
$Button4_1_1 = GUICtrlCreateButton("Указать папку", 160, 30, 90, 17)
$Icon4_1_1 = GUICtrlCreateIcon("inetcpl.cpl", -23, 255, 30, 15, 15)
$Icon4_1_2 = GUICtrlCreateIcon("inetcpl.cpl", -22, 260, 30, 15, 15)
If Not IniRead($inifile, "General", "MultiGamePath", "") = "" Then
$multi_group_path = IniRead($inifile, "General", "MultiGamePath", "")
Else
$multi_group_path = ""
EndIf
If Not $multi_group_path = "" Then
$Label4_1_2 = GUICtrlCreateLabel($multi_group_path, 34, 47, 225, 33)
Else
$Label4_1_2 = GUICtrlCreateLabel("", 34, 47, 225, 33)
EndIf
GUICtrlSetColor(-1, 0x335EA8)
If GUICtrlRead($Checkbox4_1_1) = $GUI_UNCHECKED Then
GUICtrlSetState($Button4_1_1, $GUI_DISABLE)
GUICtrlSetState($Icon4_1_1, $GUI_HIDE)
GUICtrlSetState($Icon4_1_2, $GUI_HIDE)
GUICtrlSetState($Label4_1_2, $GUI_HIDE)
Else
GUICtrlSetState($Button4_1_1, $GUI_ENABLE)
If Not $multi_group_path = "" Then
GUICtrlSetState($Icon4_1_1, $GUI_HIDE)
GUICtrlSetState($Icon4_1_2, $GUI_SHOW)
GUICtrlSetState($Label4_1_2, $GUI_SHOW)
Else
GUICtrlSetState($Icon4_1_1, $GUI_SHOW)
GUICtrlSetState($Icon4_1_2, $GUI_HIDE)
EndIf
EndIf
$Label4_1_3 = GUICtrlCreateLabel("Кол-во групп (1-6/36):", 290, 31, 130, 17)
$Input4_1_1 = GUICtrlCreateInput(IniRead($inifile, "General", "GroupQuan", "6"), 405, 30, 40, 17, _
BitOR($ES_LEFT, $ES_AUTOHSCROLL, $ES_READONLY))
$UpDown4_1_1 = GUICtrlCreateUpdown($Input4_1_1, $UDS_ARROWKEYS)
GUICtrlSetLimit(-1, 36, 1)
If $MultiGame = 0 Then
GUICtrlSetLimit(-1, 36, 1)
Else
GUICtrlSetLimit(-1, 6, 1)
EndIf
$Icon4_2_1 = GUICtrlCreateIcon("inetcpl.cpl", -23, 457, 30, 15, 15)
$Icon4_2_2 = GUICtrlCreateIcon("inetcpl.cpl", -22, 463, 30, 15, 15)
$Label4_1_4 = GUICtrlCreateLabel("Название группы:", 290, 57, 95, 17)
$Input4_1_2 = GUICtrlCreateInput(IniRead($inifile, "General", "GroupName", "Сетка"), 386, 56, 60, 17)
$Icon4_3_1 = GUICtrlCreateIcon("inetcpl.cpl", -23, 457, 56, 15, 15)
$Icon4_3_2 = GUICtrlCreateIcon("inetcpl.cpl", -22, 463, 56, 15, 15)
$Tab4_2_1 = GUICtrlCreateTab(30, 80, 450, 247)
_DrawTabChildGui4()
; Вызываем функцию проверки элементов Input
_CheckInputsProc()
GUISetState(@SW_SHOW, $ChildGui_4)
GUIRegisterMsg($WM_COMMAND, "WM_COMMAND")
While 1
$Msg = GUIGetMsg(1)
Switch $Msg[0]
Case $Checkbox4_1_1
If GUICtrlRead($Checkbox4_1_1) = $GUI_UNCHECKED Then
$MultiGame = 0
_CheckInputsProc(1)
GUICtrlSetState($Button4_1_1, $GUI_DISABLE)
GUICtrlSetState($Label4_1_2, $GUI_HIDE)
GUICtrlSetState($Icon4_1_1, $GUI_HIDE)
GUICtrlSetState($Icon4_1_2, $GUI_HIDE)
GUICtrlSetLimit($UpDown4_1_1, 36, 1)
Else
$MultiGame = 1
_CheckInputsProc(1)
GUICtrlSetState($Button4_1_1, $GUI_ENABLE)
GUICtrlSetState($Label4_1_2, IniRead($inifile, "General", "MultiGamePath", ""))
GUICtrlSetLimit($UpDown4_1_1, 6, 1)
If GUICtrlRead($Input4_1_1) > 6 Then GUICtrlSetData($Input4_1_1, "6")
If Not $multi_group_path = "" Then
GUICtrlSetState($Label4_1_2, $GUI_SHOW)
GUICtrlSetState($Icon4_1_1, $GUI_HIDE)
GUICtrlSetState($Icon4_1_2, $GUI_SHOW)
Else
GUICtrlSetState($Label4_1_2, $GUI_HIDE)
GUICtrlSetState($Icon4_1_1, $GUI_SHOW)
GUICtrlSetState($Icon4_1_2, $GUI_HIDE)
EndIf
EndIf
Case $Button4_1_1
_CheckInputsProc(1)
$probably_multi_group_path = FileSelectFolder("Выберите папку c многогрупповой игрой", "", 1, @ScriptDir & "\games")
If Not FileExists($probably_multi_group_path & "\params2.dal") Then
MsgBox(0, "Ошибка", "В указанной папке многогрупповая игра не обнаружена!")
$multi_group_path = ""
_CheckInputsProc(1)
GUICtrlSetData($Label4_1_2, $multi_group_path)
GUICtrlSetState($Label4_1_2, $GUI_HIDE)
GUICtrlSetState($Icon4_1_1, $GUI_SHOW)
GUICtrlSetState($Icon4_1_2, $GUI_HIDE)
Else
$multi_group_path = $probably_multi_group_path
_CheckInputsProc(1)
GUICtrlSetData($Label4_1_2, $multi_group_path)
GUICtrlSetState($Label4_1_2, $GUI_SHOW)
GUICtrlSetState($Icon4_1_1, $GUI_HIDE)
GUICtrlSetState($Icon4_1_2, $GUI_SHOW)
EndIf
EndSwitch
WEnd
Func _CheckInputsProc($iCheckNextButton = 0)
If $MultiGame = 0 Then
If StringIsInt(GUICtrlRead($Input4_1_1)) = 0 Or GUICtrlRead($Input4_1_1) < 1 Or GUICtrlRead($Input4_1_1) > 36 Then
GUICtrlSetState($Icon4_2_1, $GUI_SHOW)
GUICtrlSetState($Icon4_2_2, $GUI_HIDE)
Else
GUICtrlSetState($Icon4_2_1, $GUI_HIDE)
GUICtrlSetState($Icon4_2_2, $GUI_SHOW)
EndIf
Else
If StringIsInt(GUICtrlRead($Input4_1_1)) = 0 Or GUICtrlRead($Input4_1_1) < 1 Or GUICtrlRead($Input4_1_1) > 6 Then
GUICtrlSetState($Icon4_2_1, $GUI_SHOW)
GUICtrlSetState($Icon4_2_2, $GUI_HIDE)
Else
GUICtrlSetState($Icon4_2_1, $GUI_HIDE)
GUICtrlSetState($Icon4_2_2, $GUI_SHOW)
EndIf
EndIf
If GUICtrlRead($Input4_1_2) = "" Then
_GUICtrlSetState($Icon4_3_1, $GUI_SHOW)
_GUICtrlSetState($Icon4_3_2, $GUI_HIDE)
Else
_GUICtrlSetState($Icon4_3_1, $GUI_HIDE)
_GUICtrlSetState($Icon4_3_2, $GUI_SHOW)
EndIf
EndFunc ;==>_CheckInputsProc
; Рисуем Tabitems на шаге 3 ($ChildGui_4)
Func _DrawTabChildGui4()
;надо прочеcть перед удалением всё что будет в tabitems в массивы
_GUICtrlTab_DeleteAllItems($Tab4_2_1)
For $g = 1 To GUICtrlRead($Input4_1_1)
$TabItem4_2_1_0 = GUICtrlCreateTabItem(GUICtrlRead($Input4_1_2) & " " & $g)
Next
EndFunc ;==>_DrawTabChildGui4
Func _GUICtrlSetState($nCtrl, $iState)
If BitAND(GUICtrlGetState($nCtrl), $iState) <> $iState Then GUICtrlSetState($nCtrl, $iState)
EndFunc ;==>_GUICtrlSetState
Func WM_COMMAND($hWnd, $Msg, $wParam, $lParam)
Local $nNotifyCode = BitShift($wParam, 16)
Local $nID = BitAND($wParam, 0xFFFF)
Local $hCtrl = $lParam
Switch $nNotifyCode
Case $EN_CHANGE, $EN_UPDATE
Switch $nID
Case $Input4_1_1, $Input4_1_2
_DrawTabChildGui4()
EndSwitch
EndSwitch
Return $GUI_RUNDEFMSG
EndFunc ;==>WM_COMMAND
Цитата:
У меня нормально
Точно нормально. Только как понимаешь, я этот диалог выдрал из общего своего Мастера; так вот, когда вношу изменения в общий код, тогда и глюки. Причину срастить не могу. Нуб, одним словом
Добавлено
На всякий случай http://www.delta-greit.narod.ru/wizard.rar
Страницы: 1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586878889909192
Предыдущая тема: Quintura Search
Форум Ru-Board.club — поднят 15-09-2016 числа. Цель - сохранить наследие старого Ru-Board, истории становления российского интернета. Сделано для людей.