Что нового

[Элементы GUI] Работа с записями в списке ListView

Fanatmb

Новичок
Сообщения
50
Репутация
0
Здравствуйте.

Есть окно, с таблицей. В ней несколько столбцов. В таблице отображается ряд применяемых правил в работе программы.
Правила берутся из INI файла, у каждого файла свой блок (его название это столбец в таблице - ТИП). У каждого блока (типа) присутствует свой набор параметров (правил). Необходимо вывести из этого файла списком все правила в таблицу.
а также, но это потом
Необходимо, что бы каждая кнопка выполняла необходимые действия:
1. Добавить - добавляло новый пункт (правило) и открывало окно для вынесения необходимых настроек, после чего сохраняло в списке правил, которое храниться в файле config.ini (ведь где-то они должны же храниться). это уже сделал.
2. Редактировать - редактирование выбранного правила в списке и внесением изменений в файл config.ini - как прочитать настройки определенного блока, отредактировать и внести изменения.
3. Удалить - удаление выбранного правила с подтверждением и внесением изменений в файл config.ini

Код:
#include <GUIConstants.au3>

$StartForm=GUICreate("Ftp-manager", 500, 500)
GUISetState(@SW_SHOW)
GUISetState (@SW_SHOW)

GUICtrlCreateGroup("Правила обработки сообщений", 10, 200, 480, 150)

$ListView = GUICtrlCreateListView("Сообщение|Тип|Периодичность|Интервал(время)|Метод", 20, 215, 420, 100);,$LVS_SORTDESCENDING)
GUICtrlSetBkColor(-1, 0xFFFEEE) ; устанавливает цвет фона ListView

$add_item = GUICtrlCreateButton("Добавить", 20, 320, 60, 25)
$edit_item = GUICtrlCreateButton("Редактировать", 85, 320, 90, 25)
$del_item = GUICtrlCreateButton("Удалить", 180, 320, 55, 25)

While 1
   $nMsg = GUIGetMsg()
   Switch $nMsg
	  Case $GUI_EVENT_CLOSE ; крестик на окне логина
		 Exit
	EndSwitch
Wend
 

joiner

Модератор
Локальный модератор
Сообщения
3,556
Репутация
628
Fanatmb
тебе в стол заказов.
ну и еще раз продумать, что ты хочешь
 
Автор
F

Fanatmb

Новичок
Сообщения
50
Репутация
0
joiner сказал(а):
Fanatmb
тебе в стол заказов.
ну и еще раз продумать, что ты хочешь
Я уже практически решил задачу. Завтра выложу конфиг файл из которого читаются настройки и тогда продолжим, может станет яснее картина.
 
Автор
F

Fanatmb

Новичок
Сообщения
50
Репутация
0
Как и обещал.
Надо перечитать все блоки из INI файла и вывести их в ListView.

Код:
[1]
$Radio11=1
$Radio31=1
$Input4=**666*ss*33*

Данные блока могут меняться. Несколько взаимосвязанных Radio и Input. Данный список должен быть обновляем, т.е. если добавляем правило, то оно и в списке появляется, удаляем - удаляется. Удаляется совместно с удалением из INI. (тоже надо выяснить - как). Другими словами, в таблице должно быть отображено все содержимое файла INI
 

joiner

Модератор
Локальный модератор
Сообщения
3,556
Репутация
628
Fanatmb
файл ini составляет другая программа? тогда нужно постоянное считывание из этого файла, а это не совсем хорошо.
если все в одной программе - создание записей в файле настроек и сам ListView, то значит запись в файл, а потом добавили в ListView и наоборот.
пример, если все записи реализованы в одном модуле. используется только одна секция из файла настроек
Код:
#include <GUIConstantsEx.au3>
#include <ListViewConstants.au3>
#include <GuiListView.au3>
Global $ini = @ScriptDir & '\test.ini'
$Form1 = GUICreate("Form1", 532, 458, 192, 124)
$ListView1 = GUICtrlCreateListView("", 16, 16, 498, 278, -1, $LVS_EX_GRIDLINES + $LVS_EX_FULLROWSELECT)
$Button1 = GUICtrlCreateButton("Удалить", 16, 304, 75, 25)
$Input1 = GUICtrlCreateInput("", 16, 360, 273, 21)
$Input2 = GUICtrlCreateInput("", 16, 416, 273, 21)
$Label1 = GUICtrlCreateLabel("Параметр  ", 16, 336, 50, 17)
$Label2 = GUICtrlCreateLabel("Значение   ", 16, 392, 67, 17)
$Button2 = GUICtrlCreateButton("Добавить", 368, 416, 75, 25)
GUISetState(@SW_SHOW)

_GUICtrlListView_AddColumn($ListView1, "Параметр", 250)
_GUICtrlListView_AddColumn($ListView1, "Значение", 250)
Local $readsection = IniReadSection($ini, '1')
If Not @error Then
	Local $index = 0
	For $i = 1 To $readsection[0][0]
		_GUICtrlListView_AddItem($ListView1, $readsection[$i][0])
		_GUICtrlListView_AddSubItem($ListView1, $index, $readsection[$i][1], 1)
		$index += 1
	Next

EndIf

While 1
	$nMsg = GUIGetMsg()
	Switch $nMsg
		Case $GUI_EVENT_CLOSE
			Exit
		Case $Button1
			$selectind = Number(_GUICtrlListView_GetSelectedIndices($ListView1))
			$getitsel = _GUICtrlListView_GetItemSelected($ListView1, $selectind)
			If $getitsel Then
				$textkey = _GUICtrlListView_GetItemText($ListView1, $selectind)
				_GUICtrlListView_DeleteItem($ListView1, $selectind)
				IniDelete($ini, '1', $textkey)
			EndIf
		Case $Button2
			$key = GUICtrlRead($Input1)
			$param = GUICtrlRead($Input2)
			If $key <> '' And $param <> '' Then
				$getind = _GUICtrlListView_AddItem($ListView1, $key)
				_GUICtrlListView_AddSubItem($ListView1, $getind, $param, 1)
				IniWrite($ini, '1', $key, $param)
			EndIf
	EndSwitch
WEnd
 
Автор
F

Fanatmb

Новичок
Сообщения
50
Репутация
0
joiner сказал(а):
Fanatmb
файл ini составляет другая программа? тогда нужно постоянное считывание из этого файла, а это не совсем хорошо.
если все в одной программе - создание записей в файле настроек и сам ListView, то значит запись в файл, а потом добавили в ListView и наоборот.
Кнопка "Добавить" вызывает вызывает редактор правила, задачу которого мы недавно решили.
Далее в том редакторе мы нажимаем "Сохранить", в INI делается запись и окно редактора закрывается.
После чего добавленная новость должна считаться из INI и отобразится в общем списке.

Теперь я понял. Наверно надо сделать так:
Окно ListView открываем по вызову, выводим список правил если есть, если нажимаем "Добавить" или Редактировать", ListView закрываем, и отображаем редактор правил. После сохранения редактора правил, данное окно закрывается и выводится обновленное ListView.
 

joiner

Модератор
Локальный модератор
Сообщения
3,556
Репутация
628
Fanatmb
да, именно так. все в одном процессе.
 
Автор
F

Fanatmb

Новичок
Сообщения
50
Репутация
0
используется только одна секция из файла настроек

а каким образом считать все секции и вывести их сроками, например:

"Сообщение | Номер| Периодичность(время)|Метод"

Сообщение: если $radio11=1, то входящее, если $radio12=2, то входящее
Номер: выводим номер секции
Периодичность: если $radio31=1, то "однократно", если $radio32, то "каждый день + время из input32", если $radio33, то "каждые + время из input33,
Метод: информацию их $input4

Вот сам код, что уже есть.

Код:
#include <GUIConstants.au3>
#include <FTPEx.au3>
#include <WindowsConstants.au3>
#include <GUIConstantsEx.au3>

Global $sPath_ini = @ScriptDir & "\rules.ini"

RulesForm()

Func RulesForm()

Local $RulesForm=GUICreate("Редактор правил", 500, 250)
GUISetState(@SW_SHOW)

GUICtrlCreateGroup("Правила обработки сообщений", 10, 10, 480, 200)

Local $ListView = GUICtrlCreateListView("Номер|Тип|Периодичность(время)|Метод", 20, 25, 460, 175);,$LVS_SORTDESCENDING)
GUICtrlSetBkColor(-1, 0xFFFEEE) ; устанавливает цвет фона ListView

Local $addRules = GUICtrlCreateButton("Добавить", 20, 215, 60, 25)
Local $edit_item = GUICtrlCreateButton("Редактировать", 85, 215, 90, 25)
Local $del_item = GUICtrlCreateButton("Удалить", 180, 215, 55, 25)

;я понимаю так, что код считывания из INI должен быть здесь.





While 1
   $nMsg = GUIGetMsg()
   Switch $nMsg
      Case $GUI_EVENT_CLOSE ; крестик на окне логина
         Exit
	  Case $addRules
	  GUIDelete($RulesForm)
	  AddRules()
    EndSwitch
 Wend

 EndFunc

Func _ReadData()
   Local $inidata
   Local $name_rules = GUICtrlRead($Input1)
   Local $adress_file_rules = GUICtrlRead($Input12)
   Local $time_rules = GUICtrlRead($Input32)
   Local $format_rules = GUICtrlRead($Input4)
   If $name_rules = '' Then Return SetError(-1, 0, 0)

    If GUICtrlRead($Radio11) = $GUI_CHECKED Then
        $inidata &= '$Radio11=' & GUICtrlRead($Radio11) & @LF
    ElseIf GUICtrlRead($Radio12) = $GUI_CHECKED Then
        If $adress_file_rules = "" Then Return SetError(2, 0, 0)
        $inidata &= '$Radio12=' & GUICtrlRead($Radio12) & @LF
        $inidata &= '$Input12=' & $adress_file_rules & @LF
    Else
        Return SetError(4, 0, 0)
    EndIf

    Local $rd31 = GUICtrlRead($Radio31)
    Local $rd32 = GUICtrlRead($Radio32)
    Local $rd33 = GUICtrlRead($Radio33)
    If $rd31 = 1 Then
        $inidata &= '$Radio31=' & $rd31 & @LF
    ElseIf $rd32 = 1 Then
        Local $inp32 = GUICtrlRead($Input32)
        If $inp32 = '' Then Return SetError(6, 0, 0)
        $inidata &= '$Radio32=' & $rd32 & @LF
        $inidata &= '$Input32=' & $inp32 & @LF
   ElseIf $rd33 = 1 Then
        Local $inp33 = GUICtrlRead($Input33)
        If $inp33 = '' Then Return SetError(3, 0, 0)
        $inidata &= '$Radio33=' & $rd33 & @LF
        $inidata &= '$Input33=' & $inp33 & @LF
    Else
        Return SetError(5, 0, 0)
    EndIf
    If $format_rules <> '' Then
        $inidata &= '$Input4=' & $format_rules & @LF
    Else
        Return SetError(1, 0, 0)
    EndIf
    Local $ndata = GUICtrlRead($Date2)
    If $ndata <> '' Then $inidata &= 'Date2=' & $ndata & @LF
    IniWriteSection($sPath_ini, $name_rules, $inidata)
    GUIDelete($Form1_1)
	RulesForm()
 EndFunc   ;==>_ReadData


Func AddRules ()



Global $Form1_1 = GUICreate("Form1", 286, 361)
$Group1 = GUICtrlCreateGroup("Тип события", 16, 10, 255, 71)
$Label1 = GUICtrlCreateLabel("Номер сообщения", 120, 26, 98, 17)
Global $Input1 = GUICtrlCreateInput("", 220, 22, 41, 21)

Global $Radio11 = GUICtrlCreateRadio("Входящее", 24, 26, 80, 17)

Global $Radio12 = GUICtrlCreateRadio("Исходящее", 24, 50, 80, 17)
$Group12 = GUICtrlCreateGroup("Файл-источник", 112, 42, 153, 36)
Global $Input12 = GUICtrlCreateInput("", 120, 55, 100, 20)
$Button12 = GUICtrlCreateButton("Файл", 221, 54, 41, 20, 0)

$Group3 = GUICtrlCreateGroup("Периодичность", 16, 80, 255, 89)
Global $Radio31 = GUICtrlCreateRadio("Однократно", 24, 96, 90, 20)

Global $Radio32 = GUICtrlCreateRadio("Ежедневно в", 145, 96, 85, 20)
Global $Input32 = GUICtrlCreateInput(_NowTime(4), 230, 96, 35, 20)

Global $Radio33 = GUICtrlCreateRadio("Повторять через (мин)", 24, 120, 137, 20)
Global $Input33 = GUICtrlCreateInput("", 162, 120, 33, 20)
$Label331 = GUICtrlCreateLabel("ч.", 214, 122, 25, 20)
$Label332 = GUICtrlCreateLabel("мин.", 240, 122, 25, 20)

$Label2 = GUICtrlCreateLabel("Начало действия", 25, 146, 98, 17)
Global $Date2 = GUICtrlCreateDate(_NowDate(), 120, 144, 140, 20)

$Group4 = GUICtrlCreateGroup("Формат обработки", 16, 176, 255, 49)
Global $Input4 = GUICtrlCreateInput("**666*ss*33*", 24, 192, 233, 21)

$Button3 = GUICtrlCreateButton("Сохранить", 33, 320, 79, 25, 0)
$Button4 = GUICtrlCreateButton("Отмена", 154, 320, 79, 25, 0)
GUISetState(@SW_SHOW)

Local $arrayerror[7][2] = [[-1, 'Не указан номер сообщения'], [1, 'Не задан формат сообщения.'], [2, 'Не указан файл с данными.'], [3, 'Не указан интервал времени.'], [4, 'Не указан тип сообщения'], [5, 'Не указана периодичность'], [6, 'Не указано время запуска']]
While 1
    $nMsg = GUIGetMsg()
    Switch $nMsg
        Case $GUI_EVENT_CLOSE
            Exit
        Case $Button4
         GUIDelete($Form1_1)
         RulesForm()
        Case $Button3
            _ReadData()
            Local $error = @error
            If $error <> 0 Then
                For $i = 0 To UBound($arrayerror) - 1
                    If $arrayerror[$i][0] = $error Then MsgBox(16, 'Ошибка', $arrayerror[$i][1],0,$Form1_1)
                Next
            EndIf

        Case $Button12
            $Button012 = FileOpenDialog("Указать файл", @WorkingDir & "", "Любой (*.*)", 1)
            If Not @error Then GUICtrlSetData($Input12, $Button012)

    EndSwitch
WEnd

EndFunc
 

joiner

Модератор
Локальный модератор
Сообщения
3,556
Репутация
628
считываешь имена всех секций
Код:
IniReadSectionNames

получаешь массив.потом в цикле читаешь из каждой секции (смотри справку)
Код:
IniReadSection

в скрипте создаешь массив , в котором есть расшифровка значений , к примеру
Код:
Local $array[1][2]
$array[0][0] = '$Radio1'
$array[0][1]  = 'Входящее'

во время считывания данных секции ты получаешь массив параметр=значение (смотри справку)
и сравниваешь параметр со значениями в первой колонке массива $array[$i][0]
если есть совпадение, то в окно ListView вписывается значение из второй колонки массива $array[$i][1]

это пример навскидку. можно и по другому..сама по себе задача простая.
научись делить задачу на детали и по каждой детали искать в справке пример. так будет лучше укладываться в голове , а ,соответственно, будешь быстрее учиться. научишься читать код и по началу переделывать под свои задачи. потом будешь составлять свои коды с нуля
 
Автор
F

Fanatmb

Новичок
Сообщения
50
Репутация
0
Переделал еще раз код.
Теперь в каждой группе Radio параметр один, значения разные. Мне кажется так лучше.
Смог даже в консоль содержимое вывести.
Предполагаю, что можно мой вывод реализовать, также как и сообщение об ошибке в редакторе правил.
Оставил на потом.

Теперь самый главный вопрос: вывод списка в ListView

Код:
#include <GUIConstants.au3>
#include <FTPEx.au3>
#include <WindowsConstants.au3>
#include <GUIConstantsEx.au3>

Global $sPath_ini = @ScriptDir & "\rules.ini"
Global $aNames = IniReadSectionNames($sPath_ini)
Global $ListView, $item

RulesForm()

Func _GetValue($sPath_ini, $aNames)

    Local $aReadSection, $i, $j, $k
	;другой вариант обработки INI файла (пока в раздумье)
	;Local $arrayTextListView[5][2] = [[1, 'Входящее'], [2, 'Исходящее'], [3, 'Однократно'], [4, 'Ежедневно в '], [5, 'Повторять через ']]

	Local $TypeMsgIn = "Входящее"
	Local $TypeMsgOut = "Исходящее"
	Local $TimeMsgOne = "Однократно"
	Local $TimeMsgHM = "Ежедневно в "
	Local $TimeMsgM = "Повторять через "

    For $i = 1 To $aNames[0]
        $aReadSection = IniReadSection($sPath_ini, $aNames[$i])

        For $j = 1 To $aReadSection[0][0]

		 Next

		 ConsoleWrite($aNames[$i] & @TAB)
		 If IniRead($sPath_ini, $aNames[$i], "TypeMsg", "") = 1 Then ConsoleWrite($TypeMsgIn & @TAB)
		 If IniRead($sPath_ini, $aNames[$i], "TypeMsg", "") = 2 Then ConsoleWrite($TypeMsgOut & @TAB)

		 If IniRead($sPath_ini, $aNames[$i], "TimeMsg", "") = 1 Then ConsoleWrite($TimeMsgOne & @TAB)
		 If IniRead($sPath_ini, $aNames[$i], "TimeMsg", "") = 2 Then ConsoleWrite($TimeMsgHM & IniRead($sPath_ini, $aNames[$i], "TimeMsgHM", "") & @TAB)
		 If IniRead($sPath_ini, $aNames[$i], "TimeMsg", "") = 3 Then ConsoleWrite($TimeMsgM & IniRead($sPath_ini, $aNames[$i], "TimeMsgM", "") & " мин." & @TAB)
		 ConsoleWrite(IniRead($sPath_ini, $aNames[$i], "DateStart", "") & @TAB)
		 ConsoleWrite(IniRead($sPath_ini, $aNames[$i], "FormatRules", "") & @LF)
		 Next

EndFunc

Func RulesForm()

Local $RulesForm=GUICreate("Редактор правил", 500, 250)
GUISetState(@SW_SHOW)

GUICtrlCreateGroup("Правила обработки сообщений", 10, 10, 480, 200)



Local $ListView = GUICtrlCreateListView("Номер|Тип|Периодичность(время)|Метод", 20, 25, 460, 175);,$LVS_SORTDESCENDING)
GUICtrlSetBkColor(-1, 0xFFFEEE) ; устанавливает цвет фона ListView

_GetValue($sPath_ini, $aNames)

Local $addRules = GUICtrlCreateButton("Добавить", 20, 215, 60, 25)
Local $edit_item = GUICtrlCreateButton("Редактировать", 85, 215, 90, 25)
Local $del_item = GUICtrlCreateButton("Удалить", 180, 215, 55, 25)

Local $exit_item = GUICtrlCreateButton("Закрыть", 420, 215, 65, 25)
;я понимаю так, что код считывания из INI должен быть здесь.





While 1
   $nMsg = GUIGetMsg()
   Switch $nMsg
      Case $GUI_EVENT_CLOSE ; крестик на окне логина
         Exit
	  Case $addRules
	  GUIDelete($RulesForm)
	  AddRules()
	  Case $exit_item
		 Exit
    EndSwitch
 Wend

 EndFunc

Func _ReadData()
   Local $inidata
   Local $name_rules = GUICtrlRead($Input1)
   Local $adress_file_rules = GUICtrlRead($Input12)
   Local $time_rules = GUICtrlRead($Input32)
   Local $format_rules = GUICtrlRead($Input4)
   If $name_rules = '' Then Return SetError(-1, 0, 0)
   ; проверяем на тип сообщения $TypeMsg: 1-Входящее, 2-Исходящее,
    If GUICtrlRead($Radio11) = $GUI_CHECKED Then
        $inidata &= 'TypeMsg=1' & @LF
    ElseIf GUICtrlRead($Radio12) = $GUI_CHECKED Then
        If $adress_file_rules = "" Then Return SetError(2, 0, 0)
        $inidata &= 'TypeMsg=2' & @LF
        $inidata &= 'FileMsg=' & $adress_file_rules & @LF
    Else
        Return SetError(4, 0, 0)
    EndIf
   ; проверяем на тип сообщения $TimeMsg: 1-Однократно, 2-ежедневно, 3 - через n-время
    Local $rd31 = GUICtrlRead($Radio31)
    Local $rd32 = GUICtrlRead($Radio32)
    Local $rd33 = GUICtrlRead($Radio33)
    If $rd31 = 1 Then
        $inidata &= 'TimeMsg=1' & @LF
    ElseIf $rd32 = 1 Then
        Local $inp32 = GUICtrlRead($Input32)
        If $inp32 = '' Then Return SetError(6, 0, 0)
        $inidata &= 'TimeMsg=2' & @LF
        $inidata &= 'TimeMsgHM=' & $inp32 & @LF
   ElseIf $rd33 = 1 Then
        Local $inp33 = GUICtrlRead($Input33)
        If $inp33 = '' Then Return SetError(3, 0, 0)
        $inidata &= 'TimeMsg=3' & @LF
        $inidata &= 'TimeMsgM=' & $inp33 & @LF
    Else
        Return SetError(5, 0, 0)
    EndIf
    If $format_rules <> '' Then
        $inidata &= 'FormatRules=' & $format_rules & @LF
    Else
        Return SetError(1, 0, 0)
    EndIf
    Local $ndata = GUICtrlRead($Date2)
    If $ndata <> '' Then $inidata &= 'DateStart=' & $ndata & @LF
    IniWriteSection($sPath_ini, $name_rules, $inidata)
    GUIDelete($Form1_1)
	RulesForm()
 EndFunc   ;==>_ReadData


Func AddRules ()



Global $Form1_1 = GUICreate("Form1", 286, 361)
$Group1 = GUICtrlCreateGroup("Тип события", 16, 10, 255, 71)
$Label1 = GUICtrlCreateLabel("Номер сообщения", 120, 26, 98, 17)
Global $Input1 = GUICtrlCreateInput("", 220, 22, 41, 21)

Global $Radio11 = GUICtrlCreateRadio("Входящее", 24, 26, 80, 17)

Global $Radio12 = GUICtrlCreateRadio("Исходящее", 24, 50, 80, 17)
$Group12 = GUICtrlCreateGroup("Файл-источник", 112, 42, 153, 36)
Global $Input12 = GUICtrlCreateInput("", 120, 55, 100, 20)
$Button12 = GUICtrlCreateButton("Файл", 221, 54, 41, 20, 0)

$Group3 = GUICtrlCreateGroup("Периодичность", 16, 80, 255, 89)
Global $Radio31 = GUICtrlCreateRadio("Однократно", 24, 96, 90, 20)

Global $Radio32 = GUICtrlCreateRadio("Ежедневно в", 145, 96, 85, 20)
Global $Input32 = GUICtrlCreateInput(_NowTime(4), 230, 96, 35, 20)

Global $Radio33 = GUICtrlCreateRadio("Повторять через (мин)", 24, 120, 137, 20)
Global $Input33 = GUICtrlCreateInput("", 162, 120, 33, 20)
$Label331 = GUICtrlCreateLabel("ч.", 214, 122, 25, 20)
$Label332 = GUICtrlCreateLabel("мин.", 240, 122, 25, 20)

$Label2 = GUICtrlCreateLabel("Начало действия", 25, 146, 98, 17)
Global $Date2 = GUICtrlCreateDate(_NowDate(), 120, 144, 140, 20)

$Group4 = GUICtrlCreateGroup("Формат обработки", 16, 176, 255, 49)
Global $Input4 = GUICtrlCreateInput("**666*ss*33*", 24, 192, 233, 21)

$Button3 = GUICtrlCreateButton("Сохранить", 33, 320, 79, 25, 0)
$Button4 = GUICtrlCreateButton("Отмена", 154, 320, 79, 25, 0)
GUISetState(@SW_SHOW)

Local $arrayerror[7][2] = [[-1, 'Не указан номер сообщения'], [1, 'Не задан формат сообщения.'], [2, 'Не указан файл с данными.'], [3, 'Не указан интервал времени.'], [4, 'Не указан тип сообщения'], [5, 'Не указана периодичность'], [6, 'Не указано время запуска']]
While 1
    $nMsg = GUIGetMsg()
    Switch $nMsg
        Case $GUI_EVENT_CLOSE
            Exit
        Case $Button4
         GUIDelete($Form1_1)
         RulesForm()
        Case $Button3
            _ReadData()
            Local $error = @error
            If $error <> 0 Then
                For $i = 0 To UBound($arrayerror) - 1
                    If $arrayerror[$i][0] = $error Then MsgBox(16, 'Ошибка', $arrayerror[$i][1],0,$Form1_1)
                Next
            EndIf

        Case $Button12
            $Button012 = FileOpenDialog("Указать файл", @WorkingDir & "", "Любой (*.*)", 1)
            If Not @error Then GUICtrlSetData($Input12, $Button012)

    EndSwitch
WEnd

EndFunc

Содержимое INI

Код:
[1]
TypeMsg=1
TimeMsg=1
FormatRules=**666*ss*33*
DateStart=4 декабря 2014 г.
[2]
TypeMsg=2
FileMsg=E:\2222.au3
TimeMsg=2
TimeMsgHM=15:08
FormatRules=**666*ss*33*
DateStart=4 декабря 2014 г.
[3]
TypeMsg=1
TimeMsg=3
TimeMsgM=1
FormatRules=**666*ss*33*
DateStart=4 декабря 2014 г.
 
Автор
F

Fanatmb

Новичок
Сообщения
50
Репутация
0
В принципе решил. Посмотрите верно ли. По крайней мере результат есть.

Код:
#include <GUIConstants.au3>

Global $sPath_ini = @ScriptDir & "\rules.ini"
Global $aNames = IniReadSectionNames($sPath_ini)

Local $RulesForm=GUICreate("Редактор правил", 800, 250)
GUISetState(@SW_SHOW)

GUICtrlCreateGroup("Правила обработки сообщений", 10, 10, 780, 200)

Local $ListView = GUICtrlCreateListView("Номер|Тип|Периодичность(время)|Метод", 20, 25, 760, 175);,$LVS_SORTDESCENDING)
GUICtrlSetBkColor(-1, 0xFFFEEE) ; устанавливает цвет фона ListView


   For $i = 1 To $aNames[0]

    Local $min = " мин." & @TAB
	;Local $aDateStart = IniRead($sPath_ini, $aNames[$i], "DateStart", "") & @TAB
    Local $aFormatRules = IniRead($sPath_ini, $aNames[$i], "FormatRules", "") & @LF
	Local $TypeMsg, $TimeMsg
    Local $aTimeMsgH = IniRead($sPath_ini, $aNames[$i], "TimeMsgH", "")

		 If IniRead($sPath_ini, $aNames[$i], "TypeMsg", "") = 1 Then
			$TypeMsg  = "Входящее"
		 Else
			$TypeMsg  = "Исходящее"
		 EndIf

		 If IniRead($sPath_ini, $aNames[$i], "TimeMsg", "") = 1 Then
			$TimeMsg = "Однократно"
		 ElseIf IniRead($sPath_ini, $aNames[$i], "TimeMsg", "") = 2 Then
			$TimeMsg = "Ежедневно в " & IniRead($sPath_ini, $aNames[$i], "TimeMsgHM", "")
		 ElseIf IniRead($sPath_ini, $aNames[$i], "TimeMsg", "") = 3 Then
			$TimeMsg = "Повторять через " & IniRead($sPath_ini, $aNames[$i], "TimeMsgM", "") & $min
		 EndIf

		 GUICtrlCreateListViewItem($aNames[$i] & "|" & $TypeMsg & "|" & $TimeMsg & "|" & $aFormatRules & "|", $ListView)
	  Next

	  While 1
   $nMsg = GUIGetMsg()
   Switch $nMsg
      Case $GUI_EVENT_CLOSE ; крестик на окне логина
         Exit

    EndSwitch
 Wend
 
Верх