Автор Тема: Как реализовать возможности Сохранить и Загрузить настройки GUI ?  (Прочитано 1133 раз)

0 Пользователей и 1 Гость просматривают эту тему.

Оффлайн dr.room [?]

  • Новичок
  • *
  • Сообщений: 268
  • Репутация: 0
  • Пол: Мужской
    • Награды
  • Версия AutoIt: 3.3.14.0
Всем привет
Есть, как пример GUI с несколькими элементами. Есть ли возможность как-то сохранять и загружать полученные значения ?
Код: AutoIt [Выделить]
#include <ButtonConstants.au3>
#include <ComboConstants.au3>
#include <EditConstants.au3>
#include <GUIConstantsEx.au3>
#include <StaticConstants.au3>
#include <WindowsConstants.au3>

$Form2 = GUICreate("Form", 610, 352, 364, 167)
$Label1 = GUICtrlCreateLabel("Поле ввода", 40, 40, 81, 20)
$Label2 = GUICtrlCreateLabel("Выпадающий список", 40, 120, 147, 20)
$Label3 = GUICtrlCreateLabel("Checkbox", 40, 80, 64, 20)
$Edit1 = GUICtrlCreateEdit("", 216, 40, 233, 25, BitOR($ES_AUTOVSCROLL,$ES_AUTOHSCROLL,$ES_WANTRETURN))
GUICtrlSetData(-1, "Edit1")
$Checkbox1 = GUICtrlCreateCheckbox("Checkbox1", 216, 88, 97, 17)
$Combo1 = GUICtrlCreateCombo("", 216, 120, 145, 25, BitOR($GUI_SS_DEFAULT_COMBO,$CBS_SIMPLE))
GUICtrlSetData(-1, "Элемент ‚1|Элемент ‚2|Элемент ‚3|Элемент ‚4")
$Button1 = GUICtrlCreateButton("Сохранить настройки ", 40, 256, 171, 33)
$Button2 = GUICtrlCreateButton("Загрузить настройки ", 264, 255, 171, 33)
$Button3 = GUICtrlCreateButton("Ок", 480, 256, 91, 33)
GUISetState(@SW_SHOW)


While 1
    $nMsg = GUIGetMsg()
    Switch $nMsg
        Case $GUI_EVENT_CLOSE
            Exit

    EndSwitch
WEnd

 

ps
Поправил GUICtrlCreateEdit  - забыл стили добавить из-за чего поле ввода становилось не редактируемым :(
Заранее спасибо
« Последнее редактирование: Январь 12, 2018, 01:11:03 от dr.room »
Если бы один пример - было бы волшебно...для новичка

Русское сообщество AutoIt


Оффлайн Hikari [?]

  • Новичок
  • *
  • Сообщений: 22
  • Репутация: 0
  • Пол: Мужской
    • Награды
  • Версия AutoIt: 3.3.14.0
В текстовый файл можно сохранять(думаю код для этого не надо приводить)

Оффлайн dr.room [?]

  • Новичок
  • *
  • Сообщений: 268

  • Автор темы
  • Репутация: 0
  • Пол: Мужской
    • Награды
  • Версия AutoIt: 3.3.14.0
В текстовый файл можно сохранять
Я попробую  :)
Цитировать
думаю код для этого не надо приводить
Спасибо, но Вы слишком оптимистичны. Я вряд ли смогу закрепить нужные функции за указанными кнопками  :)

Оффлайн ra4o [?]

  • Скриптер
  • ****
  • Сообщений: 797
  • Репутация: 139
  • Пол: Мужской
    • Награды
  • Версия AutoIt: 3.3.14.0
Если ещё актуально, то , как по мне удобнее для сохранений настроек использовать ini файл , например так :
(нажмите для показа/скрытия)

Русское сообщество AutoIt


Оффлайн dr.room [?]

  • Новичок
  • *
  • Сообщений: 268

  • Автор темы
  • Репутация: 0
  • Пол: Мужской
    • Награды
  • Версия AutoIt: 3.3.14.0
ra4o
Да, актуально, спасибо !
Я так понимаю  что тут минимум 3 задачи
  • Сохранить значения в ini.  Понял  как, спасибо
  • Сохранить этот ini "как" т.е. в другое место под другим именем (Кнопка Сохранить настройки). С использованием диалогового окна сохранения - потому что изначально место сохраенния пока не установлено Чтобы "каталогизировать" Пока не понял как
  • Извлечь значения для элементов из сохраненного ini именно того ini что был "сохранен как". Тут есть почти все понял кроме
     
    • Если читать настройки из ini что идет по умолчанию (в каталоге скрипта) то это 1 случай.  А вот если читать настройки из ini что сохраненн в другом  месте (Кнопка загрузить настройки)? Тут как? 
« Последнее редактирование: Февраль 15, 2018, 12:10:05 от dr.room »

Оффлайн ra4o [?]

  • Скриптер
  • ****
  • Сообщений: 797
  • Репутация: 139
  • Пол: Мужской
    • Награды
  • Версия AutoIt: 3.3.14.0
Цитировать
Если читать настройки из ini что идет по умолчанию (в каталоге скрипта) то это 1 случай.  А вот если читать настройки из ini что сохраненн в другом  месте (Кнопка загрузить настройки)? Тут как? 
не совсем понял вопрос, чтение из ini файла выполняется , как Вы уже поняли функцией
Код: AutoIt [Выделить]
IniRead ( "filename", "section", "key", "default" )

даёте переменной "filename" путь к нужному файлу настроек и читаете его,путь к нужному файлу ini по нажатию кнопки "Загрузить настройки" можно получить функцией
Код: AutoIt [Выделить]
$filename = FileOpenDialog('выбрать файл настроек', @ScriptDir& "\", "Файлы ini(*.ini)", 1 + 2)

Значение "default" в "IniRead" это и есть значение по умолчанию, его Вы можете оставить для всех одинаковым либо подставлять в зависимости от выбранного файла , вплоть до того, что значение по умолчанию может быть записано в самом файле ini . Не зная Вашей задачи здесь можно только предполагать варианты решений.

Оффлайн dr.room [?]

  • Новичок
  • *
  • Сообщений: 268

  • Автор темы
  • Репутация: 0
  • Пол: Мужской
    • Награды
  • Версия AutoIt: 3.3.14.0
Здравствуйте, ra4o
У меня не выходит загрузить настройки GUI
Я не понимаю как GUI может: прочитать и перезаписать свои настройки. По тесту что ниже - просто указать на новый файл настроек в результате клика по кнопке "Загрузить настройки": явно не достаточно
вот пример
(нажмите для показа/скрытия)


Оффлайн ra4o [?]

  • Скриптер
  • ****
  • Сообщений: 797
  • Репутация: 139
  • Пол: Мужской
    • Награды
  • Версия AutoIt: 3.3.14.0
Если по быстрому переделать Ваш вариант, то так :
(нажмите для показа/скрытия)

Русское сообщество AutoIt


Оффлайн dr.room [?]

  • Новичок
  • *
  • Сообщений: 268

  • Автор темы
  • Репутация: 0
  • Пол: Мужской
    • Награды
  • Версия AutoIt: 3.3.14.0
Спасибо огромное, ra4o
Все получилось
Единственно, я бы не торопился очищать поле ввода сразу, вдруг "передумается" открывать файл для загрузки... Получиться новых настроек еще нет, а старых уже нет  :)
Т.е. после строчки
Код: AutoIt [Выделить]
 $filename = FileOpenDialog('выбрать файл настроек', @ScriptDir& "\", "Файлы ini(*.ini)", 1 + 2)
 

добавить
Код: AutoIt [Выделить]
if @error  Then
MsgBox (262208,"","Настройки - не изменились!")
Else
GUICtrlSetData($Input1,IniRead($filename, "etap1", "Input1",""));
EndIf

 

« Последнее редактирование: Февраль 19, 2018, 23:50:05 от dr.room »

Оффлайн ra4o [?]

  • Скриптер
  • ****
  • Сообщений: 797
  • Репутация: 139
  • Пол: Мужской
    • Награды
  • Версия AutoIt: 3.3.14.0
Точно так же желательно поступить после диалога сохранения файла
Код: AutoIt [Выделить]
 $filename =  FileSaveDialog('выбрать файл настроек', @ScriptDir& "\", "Файлы ini(*.ini)", 2+16)


Оффлайн dr.room [?]

  • Новичок
  • *
  • Сообщений: 268

  • Автор темы
  • Репутация: 0
  • Пол: Мужской
    • Награды
  • Версия AutoIt: 3.3.14.0
Здравствуйте, ra4o
Я вот  подумал - а как текстовый редактор выполняет задачу "Сохранить как" ?
Неужели точно также:
  • Открыть диалоговое окно пути
  • Дождаться записи и подтверждения создания нового файла с новым имененм
  • Переписать  полностью содержимое редактируемого документа в новый документ
Я собственно почему спрашиваю. А что если в GUI не 1 элемент а множество, да на нескольких табах. Ведь придется перезаписать все значения всех элементов  :o  :)
Может есть путь проще? Может есть вариант пересоздать текущий документ через ... я не знаю...копирование, например. Но также - с диалоговым окном выбора пути и имени.
Я собственно почему подумал о копировании: дело в том что в скрипте реализована проверка + запись значений при изменении элементов. Т.е. все есть, все записано - дело за малым, скопировать просто текущий документ в новое место, с новым именем по выбору...

Оффлайн dr.room [?]

  • Новичок
  • *
  • Сообщений: 268

  • Автор темы
  • Репутация: 0
  • Пол: Мужской
    • Награды
  • Версия AutoIt: 3.3.14.0
Кажется я понял - проще решения нет..

Русское сообщество AutoIt


 

Похожие темы

  Тема / Автор Ответов Последний ответ
12 Ответов
6585 Просмотров
Последний ответ Март 24, 2010, 00:58:23
от bulldog5293
4 Ответов
3861 Просмотров
Последний ответ Август 25, 2010, 22:51:02
от Garrett
1 Ответов
2453 Просмотров
Последний ответ Февраль 21, 2011, 13:39:16
от `p r o x y
5 Ответов
4966 Просмотров
Последний ответ Октябрь 21, 2011, 16:20:03
от StarEdik
2 Ответов
2493 Просмотров
Последний ответ Март 03, 2012, 23:03:50
от Afonichev
1 Ответов
2234 Просмотров
Последний ответ Май 06, 2012, 15:33:53
от CreatoR
0 Ответов
1418 Просмотров
Последний ответ Май 06, 2012, 13:15:47
от madmasles
12 Ответов
7100 Просмотров
Последний ответ Июнь 11, 2012, 13:24:41
от eropov
1 Ответов
1666 Просмотров
Последний ответ Июль 18, 2013, 20:44:53
от Garrett
2 Ответов
2478 Просмотров
Последний ответ Август 29, 2013, 09:35:07
от dimcomp