Тема: Не обновляется ListView (После создания нового окна)
Столкнулся с проблемой, не обновляется ListView после смены игры. Вроде, это связанно с новым окном
https://youtu.be/BCg2RRfBTnE - То что происходит, хотя в скрипте прописано обновление списка (ReloadList)
;DS3 Сохранения
HotKey, *+F5, БыстроеСохранение
HotKey, *+F9, Загрузить
Gui, Show, w530 h300, DS3 Сохранения
Gui, Add, ListView, r14 w400 y10 x110 vList gList Checked SortDesc, Название
Gui, Add, Text, x110 y280 vStatus, 0000000000000000000000000000000000000000000000000000
Gui, Add, Text, y130 x12 vFolderUse, 0000000000
GuiControl, Text, Status , Работает
GuiControl, Text, FolderUse , Сохранения
Gui, Add, Button,y10 x10 gСохранение, Сохранить (+F5)
Gui, Add, Button,y40 x10 gЗагрузить, Загрузить (+F9)
Gui, Add, Button,y150 x10 gСохранения , Сохранения
Gui, Add, Button,y175 x10 gБэкапы , Бэкапы
Gui, Add, Button,y229 x10 gПереименовать , Переименовать
Gui, Add, Button,y253 x10 gОбновить, Обновить
Gui, Add, Button,y276.5 x456 gУдалить , Удалить
Gui, Add, CheckBox, y10 x514 vConfirmDelete
WindowCreated = No
GameChoice := "Dark Souls 3"
DDDAFolder := "D:\Games\Dragon's Dogma Dark Arisen"
;
gosub, СменитьИгру
List:
If (A_GuiEvent = "DoubleClick")
{
If (LV_GetCount("Selected")) > 0
{
LV_GetText(RowText, A_EventInfo)
gosub, UpdateTimeBackup
Filecopy %GameSave%\%SaveFileName%, %ScriptBackup%\%TimeB% - DoubleClick.%FileType%
If FolderUse = Сохранения
Filecopy %ScriptSave%\%RowText%, %GameSave%\%SaveFileName%, true
If FolderUse = Бэкапы
Filecopy %ScriptBackup%\%RowText%, %GameSave%\%SaveFileName%, true
}
}
return
Help:
MsgBox 1
Return
; Клавиши
+F1::reload
F2::Gui, Show
Сохранение:
gosub, Сохранения
GuiControl, Text, Status , Жду название..
InputBox, FileName, Название, Введите название файла, , 420, 100, , , , , Save
If ErrorLevel
{
GuiControl, Text, Status , Сохранение отменено
return
}
else
gosub, UpdateTimeBackup
FileCopy %GameSave%\%SaveFileName%, %ScriptSave%\%TimeB% - %FileName%.%FileType%
GuiControl, Text, Status , Сохранение успешно
gosub, ReloadList
return
БыстроеСохранение:
GuiControl, Text, Status , Сохраняю..
gosub, UpdateTimeBackup
FileCopy %GameSave%\%SaveFileName%, %ScriptSave%\%TimeB% - F5 Save.%FileType%
gosub, ReloadList
SoundBeep, 750, 500
GuiControl, Text, Status , Сохранение успешно
return
Загрузить:
CheckCount = 0
Loop
{
Check := LV_GetNext(Check, "Checked")
if not Check
break
LV_GetText(Text, Check)
CheckCount := CheckCount + 1
}
If CheckCount = 1
{
CheckCol := LV_GetNext(0, "Checked")
If not CheckCol = 0
{
GuiControl, Text, Status , Перемещаю..
LV_GetText(FileC,CheckCol)
;MsgBox %RowNumber% - %FileC% - %CheckCol%
gosub, UpdateTimeBackup
FileCopy %GameSave%\%SaveFileName%, %ScriptBackup%\%TimeB% - F9 Load.%FileType%
Filecopy %ScriptSave%\%FileC%, %GameSave%\%SaveFileName%, true
FileС := ""
SoundBeep, 400, 500
GuiControl, Text, Status , Успешная загрузка
}
}
Else if CheckCount > 1
{
GuiControl, Text, Status , Ты выбрал больше 1 файла, целых %CheckCount%
}
Else if CheckCount = 0
GuiControl, Text, Status , Чтобы загрузить, нужно выбрать 1 файл
Return
; Кнопки
; Первое окно
Переименовать:
RenameFileNumber = 0
If (LV_GetCount("Selected")) > 0
{
Loop % LV_GetCount("Selected")
{
RenameFileNumber := LV_GetNext(RenameFileNumber)
if not RenameFileNumber
break
LV_GetText(FileR, RenameFileNumber)
InputBox, FileName, Название, Введите название файла, , 420, 100, , , , , %FileR%
If FolderUse = Сохранения
{
FileMove %ScriptSave%\%FileR%, %ScriptSave%\%FileName%
}
If FolderUse = Бэкапы
{
FileMove %ScriptBackup%\%FileR%, %ScriptBackup%\%FileName%
}
}
If ErrorLevel = 1
{
GuiControl, Text, Status , Переименовывание отменено
return
}
else
GuiControl, Text, Status , Переименовывание успешно
gosub, ReloadList
}
Else
GuiControl, Text, Status , Всё же...необходимо выбрать
return
Обновить:
GuiControl, Text, Status , Работает. Почти.
Gosub, ReloadList
return
Удалить:
Gui, Submit, nohide
If ConfirmDelete = 1
{
GuiControl, Text, Status , Удаляю..
DeleteFileNumber = 0
If FolderUse = Сохранения
{
Loop % LV_GetCount("Selected")
{
DeleteFileNumber := LV_GetNext(DeleteFileNumber)
if not DeleteFileNumber
break
LV_GetText(FileD, DeleteFileNumber)
FileRecycle, %ScriptSave%\%FileD%
;msgBox %ScriptSave%\%FileD%
GuiControl, Text, Status , Удаление успешно
}
}
If FolderUse = Бэкапы
{
Loop % LV_GetCount("Selected")
{
DeleteFileNumber := LV_GetNext(DeleteFileNumber)
if not DeleteFileNumber
break
LV_GetText(FileD, DeleteFileNumber)
FileRecycle, %ScriptBackup%\%FileD%
;msgBox %ScriptBackup%\%FileD%
GuiControl, Text, Status , Удаление успешно
}
}
If (LV_GetCount("Selected")) = 0
GuiControl, Text, Status , Ты ничего не выбрал :|
gosub, ReloadList
}
Else if ConfirmDelete = 0
{
GuiControl, Text, Status , Подтверди!
GuiControl, Hide, ConfirmDelete
sleep 100
GuiControl, Show, ConfirmDelete
sleep 100
GuiControl, Hide, ConfirmDelete
sleep 100
GuiControl, Show, ConfirmDelete
}
Return
Сохранения:
FolderUse = Сохранения
GuiControl, Text, FolderUse , Сохранения
gosub, ReloadList
return
Бэкапы:
FolderUse = Бэкапы
GuiControl, Text, FolderUse , Бэкапы
gosub, ReloadList
return
ReloadList:
LV_Delete()
If LV_GetCount() = 0
{
If FolderUse = Сохранения
{
Loop, %ScriptSave%\*.%FileType%
LV_Add("", A_LoopFileName)
LV_ModifyCol()
}
Else if FolderUse = Бэкапы
{
Loop, %ScriptBackup%\*.%FileType%
LV_Add("", A_LoopFileName)
LV_ModifyCol()
}
}
return
; Окно смена игры
СменитьИгру:
Gui, СменаИгры:Submit
If GameChoice = Dark Souls 3
{
Game := "DS3"
}
If GameChoice = Dark Souls II Scholar of the First Sin
{
Game := "DS2SoF"
}
If GameChoice = Dragon's Dogma Dark Arisen
{
Game := "DDDA"
}
; Ниже есть настройки для этих игр:
; Dark Souls II Scholar of the First Sin
; Dark Souls 3
; Dragon's Dogma Dark Arisen
If Game = DS2SoF
{
GameFolder = %Appdata%\DarkSoulsII
GameSave = %GameFolder%\0140000100000001
ScriptSave = %GameFolder%\Сохранения\Сохранения скрипта
ScriptBackup = %GameFolder%\Сохранения\Сохранения скрипта\Бэкапы
SaveFileName = DS2SOFS0000.sl2
FileType = sl2
FileCreateDir, %GameFolder%\Сохранения
FileCreateDir, %GameFolder%\Сохранения\Сохранения скрипта
FileCreateDir, %GameFolder%\Сохранения\Сохранения скрипта\Бэкапы
FolderUse = Сохранения
}
If Game = DS3
{
GameFolder = %Appdata%\DarkSoulsIII
GameSave = %GameFolder%\0110000100000666
ScriptSave = %GameFolder%\Сохранения\Сохранения скрипта
ScriptBackup = %GameFolder%\Сохранения\Сохранения скрипта\Бэкапы
SaveFileName = DS30000.sl2
FileType = sl2
FileCreateDir, %GameFolder%\Сохранения
FileCreateDir, %GameFolder%\Сохранения\Сохранения скрипта
FileCreateDir, %GameFolder%\Сохранения\Сохранения скрипта\Бэкапы
FolderUse = Сохранения
}
If Game = DDDA
{
GameFolder = %DDDAFolder%
GameSave = %DDDAFolder%\Steam\MEX\remote
ScriptSave = %GameFolder%\Steam\MEX\Сохранения\Сохранения скрипта
ScriptBackup = %GameFolder%\Steam\MEX\Сохранения\Сохранения скрипта\Бэкапы
SaveFileName = DDDA.sav
FileType = sav
FileCreateDir, %GameFolder%\Steam\MEX\Сохранения
FileCreateDir, %GameFolder%\Steam\MEX\Сохранения\Сохранения скрипта
FileCreateDir, %GameFolder%\Steam\MEX\Сохранения\Сохранения скрипта\Бэкапы
FolderUse = Сохранения
}
Sleep 150
gosub, ReloadList
return
ОтменаСменыИгры:
Gui, СменаИгры:Hide
return
;
UpdateTimeBackup:
FileGetTime, TimeB, %GameSave%\%SaveFileName%
FormatTime, TimeB, %TimeB%, yy.MM.dd H;mm
return
GuiClose:
MsgBox % A_DefaultGui " " A_DefaultListView
Return
GuiContextMenu:
If WindowCreated = No
{
Gui, СменаИгры:New,, Смена Игры
Gui, СменаИгры:Add, Text, vText1
Gui, СменаИгры:Add, Text, vText2
Gui, СменаИгры:Add, Text, vText3
Gui, СменаИгры:Add, DropDownList, x10 y120 vGameChoice Choose1 w380, Dark Souls 3|Dark Souls II Scholar of the First Sin|Dragon's Dogma Dark Arisen
Gui, СменаИгры:Add, Button,y165 x300 gСменитьИгру , Сменить игру
Gui, СменаИгры:Add, Button,y165 x247 gОтменаСменыИгры , Отмена
WindowCreated = Yes
}
Gui, СменаИгры:Show, h200 w400