Компьютерный форум OSzone.net  

Компьютерный форум OSzone.net (http://forum.oszone.net/index.php)
-   AutoIt (http://forum.oszone.net/forumdisplay.php?f=103)
-   -   Перемешивание и сортировка в INI файле (http://forum.oszone.net/showthread.php?t=196578)

Centrinar 13-01-2011 22:49 1588144

Перемешивание и сортировка в INI файле
 
Помогите пожалуйста.
Есть INI файл, куда скрипт записывает программы, типа:
[Progs]
prog1=<tetsprog1.exe><........
prog2=<tetsprog2.exe><........
.....
Необходима графическая оболочка с пом. которой можно перемешивать или сортировать программы. Ну например, поменять tetsprog1 и tetsprog1 местами при этом порядковый номер prog* должен остаться!
СПАСИБО!

madmasles 14-01-2011 08:05 1588303

Centrinar,
Болванка у меня получилась такая. На Input надо перетащить ини-файл или выбрать его, нажав кнопку "...". В ComboBox загрузятся секции. После выбора секции надо нажать кнопку Загрузить. В ListView загрузятся ключи и значения из выбранной секции. Выделите строку, чтобы ее редактировать. Значения можно удалять или менять местами как угодно между собой, кликнув на строке правой кнопкой мыши, ключи при этом остаются на месте. Можно удалить всю строку.Кнопка Сохранить - сохранить изменения, они запишутся в ини-файл. Кнопка Отменить - отменить все произведенные изменения. Кнопка Очистить - удалить все данные из окна.
Ругается, что символов слишком много.
Первая часть:
читать дальше »
Код:

#include <GUIConstantsEx.au3>
#include <ComboConstants.au3>
#include <GUIListView.au3>
#include <WindowsConstants.au3>
#include <EditConstants.au3>
#include <GuiMenu.au3>
#include <Misc.au3>

Global $hListView, $iLast_LV_Index, $hGui, $sOld, $sNew, $fLV = False, $iCount

_Singleton(@ScriptName)

$hGui = GUICreate('Редактор ini-файлов', 400, 400, -1, -1, -1, $WS_EX_ACCEPTFILES)
$nInputIni = GUICtrlCreateInput('Перетащите сюда ini-файл', 10, 5, 355, 20, _
        BitOR($GUI_SS_DEFAULT_INPUT, $ES_LEFT, $ES_READONLY))
GUICtrlSetState(-1, $GUI_DROPACCEPTED)
$nButtonIni = GUICtrlCreateButton('...', 368, 4, 22, 22)
$nComboSection = GUICtrlCreateCombo('', 10, 33, 100, 20, _
        BitOR($GUI_SS_DEFAULT_COMBO, $CBS_SIMPLE, $ES_READONLY))

$nButtonGet = GUICtrlCreateButton('Загрузить', 120, 32, 60, 22)
$nButtonSave = GUICtrlCreateButton('Сохранить', 190, 32, 60, 22)
$nButtonDefault = GUICtrlCreateButton('Отменить', 260, 32, 60, 22)
$nButtonDelAll = GUICtrlCreateButton('Очистить', 330, 32, 60, 22)

$nListView = GUICtrlCreateListView('', 10, 60, 380, 330, -1, _
        BitOR($LVS_EX_GRIDLINES, $LVS_EX_FULLROWSELECT))
$hListView = GUICtrlGetHandle($nListView)

_GUICtrlListView_AddColumn($hListView, 'Ключ', 100, 2)
_GUICtrlListView_AddColumn($hListView, 'Значение', 270, 2)

For $i = $nComboSection To $nListView
    GUICtrlSetState($i, $GUI_DISABLE)
Next

$nDummyMenu = GUICtrlCreateDummy()
$nContextMenu = GUICtrlCreateContextMenu($nDummyMenu)
$hContextMenu = GUICtrlGetHandle($nContextMenu)
$nSubMenuDel = GUICtrlCreateMenuItem('Удалить значение', $nContextMenu)
$nSubMenuDelAll = GUICtrlCreateMenuItem('Удалить строку', $nContextMenu)

GUISetState()
GUIRegisterMsg($WM_NOTIFY, 'WM_NOTIFY')


madmasles 14-01-2011 08:12 1588310

Вторая часть:
читать дальше »
Код:

While 1
    $nMsg = GUIGetMsg()

    Switch $nMsg
        Case $GUI_EVENT_CLOSE
            Exit
        Case $GUI_EVENT_DROPPED
            If StringRight(@GUI_DragFile, 4) <> '.ini' Then
                GUICtrlSetData($nInputIni, 'Это не ini-файл')
            Else
                FileCopy(@GUI_DragFile, @TempDir & '\' & _
                        StringRegExpReplace(@GUI_DragFile, '^.*\\', ''), 1)
                $fLV = False
                _GUICtrlListView_DeleteAllItems($hListView)
                GUICtrlSetData($nComboSection, '')
                GUICtrlSetData($nInputIni, '')
                For $i = $nComboSection To $nListView
                    GUICtrlSetState($i, $GUI_DISABLE)
                Next
                GUICtrlSetData($nInputIni, @GUI_DragFile)
                GUICtrlSetState($nComboSection, $GUI_ENABLE)
                GUICtrlSetState($nButtonGet, $GUI_ENABLE)
                $aIniTemp = IniReadSectionNames(GUICtrlRead($nInputIni))
                If Not @error Then
                    $sData = ''
                    For $i = 1 To $aIniTemp[0]
                        $sData &= $aIniTemp[$i] & '|'
                    Next
                    $sData = StringTrimRight($sData, 1)
                    GUICtrlSetData($nComboSection, $sData, $aIniTemp[$aIniTemp[0]])
                EndIf
                $aIniTemp = 0
            EndIf
        Case $nButtonIni
            $sFileIni = FileOpenDialog('Выберите ini-файл', _
                    @ScriptDir & '\', 'ini-файл (*.ini)', 1)
            If Not @error Then
                FileCopy($sFileIni, @TempDir & '\' & _
                        StringRegExpReplace($sFileIni, '^.*\\', ''), 1)
                $fLV = False
                _GUICtrlListView_DeleteAllItems($hListView)
                GUICtrlSetData($nComboSection, '')
                GUICtrlSetData($nInputIni, '')
                For $i = $nComboSection To $nListView
                    GUICtrlSetState($i, $GUI_DISABLE)
                Next
                GUICtrlSetData($nInputIni, $sFileIni)
                GUICtrlSetState($nComboSection, $GUI_ENABLE)
                GUICtrlSetState($nButtonGet, $GUI_ENABLE)
                $aIniTemp = IniReadSectionNames($sFileIni)
                If Not @error Then
                    $sData = ''
                    For $i = 1 To $aIniTemp[0]
                        $sData &= $aIniTemp[$i] & '|'
                    Next
                    $sData = StringTrimRight($sData, 1)
                    GUICtrlSetData($nComboSection, $sData, $aIniTemp[$aIniTemp[0]])
                EndIf
                $aIniTemp = 0
            Else
                GUICtrlSetData($nInputIni, 'Вы не выбрали ini-файл')
            EndIf
        Case $nButtonGet
            $aIniTemp = IniReadSection(GUICtrlRead($nInputIni), GUICtrlRead($nComboSection))
            If Not @error Then
                GUICtrlSetState($nSubMenuDelAll, $GUI_ENABLE)
                GUICtrlSetState($nComboSection, $GUI_DISABLE)
                GUICtrlSetState($nButtonGet, $GUI_DISABLE)
                _GUICtrlListView_DeleteAllItems($hListView)
                _GUICtrlMenu_DeleteMenu($hContextMenu, 2)
                $nSubMenu = GUICtrlCreateMenu('Поменять значение местами с', $nContextMenu)
                Dim $aSB_Item[$aIniTemp[0][0]]
                $iCount = $aIniTemp[0][0] - 1
                For $i = 1 To $iCount + 1
                    GUICtrlCreateListViewItem($aIniTemp[$i][0] & _
                            '|' & $aIniTemp[$i][1], $nListView)
                    $aSB_Item[$i - 1] = GUICtrlCreateMenuItem($aIniTemp[$i][1], $nSubMenu)
                Next
                GUICtrlSetState($nListView, $GUI_ENABLE)
                GUICtrlSetState($nButtonSave, $GUI_ENABLE)
                GUICtrlSetState($nButtonDefault, $GUI_ENABLE)
                GUICtrlSetState($nButtonDelAll, $GUI_ENABLE)
                $fLV = True
            EndIf
        Case $nButtonDefault
            $aIniTemp = IniReadSection(@TempDir & '\' & _
                    StringRegExpReplace(GUICtrlRead($nInputIni), '^.*\\', ''), _
                    GUICtrlRead($nComboSection))
            If Not @error Then
                GUICtrlSetState($nSubMenuDelAll, $GUI_ENABLE)
                _GUICtrlListView_DeleteAllItems($hListView)
                _GUICtrlMenu_DeleteMenu($hContextMenu, 2)
                $nSubMenu = GUICtrlCreateMenu('Поменять значение местами с', $nContextMenu)
                Dim $aSB_Item[$aIniTemp[0][0]]
                $iCount = $aIniTemp[0][0] - 1
                For $i = 1 To $iCount + 1
                    GUICtrlCreateListViewItem($aIniTemp[$i][0] & _
                            '|' & $aIniTemp[$i][1], $nListView)
                    $aSB_Item[$i - 1] = GUICtrlCreateMenuItem($aIniTemp[$i][1], $nSubMenu)
                Next
            EndIf
        Case $nButtonDelAll
            $fLV = False
            _GUICtrlListView_DeleteAllItems($hListView)
            GUICtrlSetData($nComboSection, '')
            GUICtrlSetData($nInputIni, '')
            GUICtrlSetState($nSubMenuDelAll, $GUI_ENABLE)
            For $i = $nComboSection To $nListView
                GUICtrlSetState($i, $GUI_DISABLE)
            Next
        Case $nButtonSave
            GUICtrlSetState($nSubMenuDelAll, $GUI_ENABLE)
            $iLV = _GUICtrlListView_GetItemCount($hListView)
            If $iLV Then
                For $i = 0 To $iLV - 1
                    IniWrite(GUICtrlRead($nInputIni), GUICtrlRead($nComboSection), _
                            _GUICtrlListView_GetItemText($hListView, $i), _
                            _GUICtrlListView_GetItemText($hListView, $i, 1))
                Next
            EndIf
        Case $nSubMenuDel
            _GUICtrlListView_SetItemText($hListView, $iLast_LV_Index, 0, 1)
            For $i = 0 To $iCount
                GUICtrlSetData($aSB_Item[$i], _
                        _GUICtrlListView_GetItemText($hListView, $i, 1))
            Next
        Case $nSubMenuDelAll
            _GUICtrlListView_DeleteItem($hListView, $iLast_LV_Index)
            $iCount = _GUICtrlListView_GetItemCount($hListView) - 1
            If $iCount > 0 Then
                _GUICtrlMenu_DeleteMenu($hContextMenu, 2)
                $nSubMenu = GUICtrlCreateMenu('Поменять значение местами с', $nContextMenu)
                Dim $aSB_Item[$iCount + 1]
                For $i = 0 To $iCount
                    $aSB_Item[$i] = GUICtrlCreateMenuItem(_GUICtrlListView_GetItemText( _
                            $hListView, $i, 1), $nSubMenu)
                Next
            Else
                GUICtrlSetState($nSubMenuDelAll, $GUI_DISABLE)
                _GUICtrlMenu_DeleteMenu($hContextMenu, 2)
                $nSubMenu = GUICtrlCreateMenu('Поменять значение местами с', $nContextMenu)
                Dim $aSB_Item[1]
                $aSB_Item[0] = GUICtrlCreateMenuItem(_GUICtrlListView_GetItemText( _
                        $hListView, 0, 1), $nSubMenu)
            EndIf


madmasles 14-01-2011 08:18 1588315

Третья часть:
читать дальше »
Код:

Case Else
            If $fLV Then
                For $i = 0 To $iCount
                    If $nMsg = $aSB_Item[$i] Then
                        $sOld = _GUICtrlListView_GetItemText($hListView, $iLast_LV_Index, 1)
                        $sNew = _GUICtrlListView_GetItemText($hListView, $i, 1)
                        _GUICtrlListView_SetItemText($hListView, $i, $sOld, 1)
                        _GUICtrlListView_SetItemText($hListView, $iLast_LV_Index, $sNew, 1)
                        For $i = 0 To $iCount
                            GUICtrlSetData($aSB_Item[$i], _
                                    _GUICtrlListView_GetItemText($hListView, $i, 1))
                        Next
                    EndIf
                Next
            EndIf
    EndSwitch
WEnd

Func ShowMenu($hWnd, $nContextID, $nContextControlID, $iMouse = 0)
    Local $hMenu = GUICtrlGetHandle($nContextID)
    Local $iCtrlPos = ControlGetPos($hWnd, '', $nContextControlID)
    Local $X = $iCtrlPos[0]
    Local $Y = $iCtrlPos[1] + $iCtrlPos[3]
    ClientToScreen($hWnd, $X, $Y)
    If $iMouse Then
        $X = MouseGetPos(0)
        $Y = MouseGetPos(1)
    EndIf
    DllCall('user32.dll', 'int', 'TrackPopupMenuEx', 'hwnd', $hMenu, 'int', 0, 'int', _
            $X, 'int', $Y, 'hwnd', $hWnd, 'ptr', 0)
EndFunc  ;==>ShowMenu

Func ClientToScreen($hWnd, ByRef $X, ByRef $Y)
    Local $stPoint = DllStructCreate('int;int')

    DllStructSetData($stPoint, 1, $X)
    DllStructSetData($stPoint, 2, $Y)
    DllCall('user32.dll', 'int', 'ClientToScreen', 'hwnd', $hWnd, 'ptr', _
            DllStructGetPtr($stPoint))
    $X = DllStructGetData($stPoint, 1)
    $Y = DllStructGetData($stPoint, 2)
    $stPoint = 0
EndFunc  ;==>ClientToScreen

Func WM_NOTIFY($hWnd, $iMsg, $iwParam, $ilParam)
    Local $hWndFrom, $iCode, $tNMHDR, $hWndListView, $tInfo

    $hWndListView = $hListView
    If Not IsHWnd($hListView) Then $hWndListView = GUICtrlGetHandle($hListView)

    $tNMHDR = DllStructCreate($tagNMHDR, $ilParam)
    $hWndFrom = HWnd(DllStructGetData($tNMHDR, 'hWndFrom'))
    $iCode = DllStructGetData($tNMHDR, 'Code')

    Switch $hWndFrom
        Case $hWndListView
            Switch $iCode
                Case $NM_RCLICK
                    $tInfo = DllStructCreate($tagNMITEMACTIVATE, $ilParam)
                    $iIndex = DllStructGetData($tInfo, 'Index')
                    For $i = 0 To $iCount
                        GUICtrlSetState($aSB_Item[$i], $GUI_ENABLE)
                    Next
                    If $iIndex <> -1 Then
                        $iLast_LV_Index = $iIndex
                        GUICtrlSetState($aSB_Item[$iIndex], $GUI_DISABLE)
                        ShowMenu($hWnd, $nContextMenu, $hListView, 1)
                    EndIf
            EndSwitch
    EndSwitch

    Return $GUI_RUNDEFMSG
EndFunc  ;==>WM_NOTIFY



Все три части надо собрать в один скрипт: 1-ая - под ней 2-ая - под ней 3-ья. На всякий случай скрипт в прикрепленном архиве.

Centrinar 17-01-2011 00:49 1590274

Еще маленький вопросик, а как добавить кнопку УДАЛИТЬ строку, что бы при этом он поднимал все остальные, т.е. если я удаляю prog1 то значение prog2 автоматически поднимается и становиться prog1. СПАСИБО!

madmasles 17-01-2011 10:35 1590433

Centrinar,
Если кликнуть левой кнопкой мыши по заголовку ListView Ключи, то в появившемся контекстном меню можно изменить нумерацию ключей. Число или в начале ключа, или в конце.

Centrinar 17-01-2011 10:50 1590453

Просто при команде Удалить строку он ее утоляет не при сохранении она остается.

madmasles 17-01-2011 11:26 1590488

Цитата:

Цитата Centrinar
при сохранении она остается. »

Поправил. Файл поменял.

Centrinar 03-02-2011 15:25 1603596

Подскажите как правильно прописать конкретный ИНИ т.е. убрать возможность выбора, сам пробовал постоянно ошибки. Сппасиюо

madmasles 03-02-2011 16:22 1603639

Centrinar,

Centrinar 03-02-2011 21:51 1603860

Никак не пойму по какому принципу строятся колонки.
Надо что бы вторая колонка отображала только название с возможностью переписать это название т.е.
$aParams = IniReadSection("conf.ini", "Programs")
StringRegExpReplace($aParams, '^.*=', '')
.......
Спасибо!

madmasles 03-02-2011 22:13 1603880

Цитата:

Цитата Centrinar
Никак не пойму по какому принципу строятся колонки. »

Вот Ваш ини-файл:
Код:

[Progs]
prog1=<tetsprog1.exe>
prog2=<tetsprog2.exe>
...

В ComboBox загружаются секции ([Progs] и другие). В ListView левая колонка - ключ (prog1, prog2 и т.д.), правая - значение (<tetsprog1.exe>, <tetsprog2.exe> и т.д.).
Цитата:

Цитата Centrinar
Надо что бы вторая колонка отображала только название с возможностью переписать это название т.е.
$aParams = IniReadSection("conf.ini", "Programs")
StringRegExpReplace($aParams, '^.*=', '') »

Здесь не понял.

Centrinar 04-02-2011 01:04 1603978

Полный ИНИ выглядет так
prog1=<tetsprog1.exe><Программа 1><Пароль><Ghjdthrf><><><><>
так вот, я хотел сделать что бы он отображал 8 столбцов(По количеству <> ) и при этом была бы возможность переименовывать. т.е. вместо "Программа 1" написать "программа 33" и он бы записал это в ИНИ файл, вместо "Пароль" написать "Пароль5" ну и т.д.Я думал сам справлюсь, но поскольку я с ListView плохо знаком, очень нужна ваша помощь. СПАСИБО

Centrinar 04-02-2011 17:49 1604530

:sorry:

madmasles 04-02-2011 22:07 1604763

Centrinar,
В прикрепленном архиве то, что у меня получилось.
Двойной клик на ячейке или через меню по правой кнопке мыши - редактировать. Левой кнопкой мыши по заголовку первой колонки (ключ) - изменить нумерацию ключей.
Будут косяки - будем исправлять. :)

Centrinar 04-02-2011 22:42 1604784

madmasles большущие спасибо!

madmasles 04-02-2011 22:58 1604791

Centrinar,
Можно сделать, чтобы при перетаскивании ини-файла на иконку скомпилированного скрипта, он загружался в окно.

Centrinar 04-02-2011 23:05 1604794

было бы супер! :yahoo:

madmasles 04-02-2011 23:53 1604831

Centrinar,
Попробуйте.

Centrinar 05-02-2011 23:27 1605579

madmasles верни пож. пункт перемещения строк, ну что бы их можно было сортировать, опускать, поднимать и т.д. СПАСИБО!

madmasles 06-02-2011 00:43 1605633

Цитата:

Цитата Centrinar
верни пож. пункт перемещения строк »

Я их убрал, так как не знаю, менять(перемещать) целиком все значения или только то, на котором открыли меню.

Centrinar 06-02-2011 11:06 1605791

Ну как и было, на том пункте на котором открыли :not-me:

madmasles 06-02-2011 11:14 1605799

Centrinar,
Давайте уточним. Меняться местами должна вся строка (Значение 1 - Значение n, кроме Ключ) или только те значения, на которых открыли меню (как в редактировании).

Centrinar 06-02-2011 14:54 1605959

Полностью вся строка, как и было...

Centrinar 07-02-2011 11:02 1606609

:sorry:

madmasles 08-02-2011 12:16 1607530

Centrinar,
Попробуйте.

Centrinar 10-02-2011 15:06 1609346

madmasles раскажи пож. как правильно вставить GUICtrlCreateCombo в $hListView, например чтобы в столбце Ключ на всех строчках выпадало для выбора только два значения "Yes" или "No"

Centrinar 11-02-2011 12:14 1610137

а возможно убрать ограничение на кол-во вводимых символов, т.е. скрипт не дает мне ввести больше 17 символов в любой из параметров

madmasles 11-02-2011 13:17 1610212

Цитата:

Цитата Centrinar
скрипт не дает мне ввести больше 17 символов в любой из параметров »

Поменяйте эту строку:
Код:

$nInputEditor = GUICtrlCreateInput('', 0, 0, $iColumn_W, 14);, $ES_CENTER)
С ComboBox позже сделаю, болею сейчас. :(

Centrinar 11-02-2011 13:24 1610222

Эпидемия, выздоравливай :(

madmasles 13-02-2011 09:52 1611569

Centrinar,
Попробуйте с ComboBox.

Centrinar 16-02-2011 13:46 1614351

Подскажите пож. а где прописывается в каком столбце появляться ComboBox, я пытаюсь сделать что бы в 3ем столбце был вариант ComboBox Да-Нет а в четвертом и последующих never-every эт как пример....

madmasles 16-02-2011 14:39 1614395

Centrinar,
В момент двойного клика ($NM_DBLCLK) или клика правой кнопкой ($NM_RCLICK) по ячейке ListView в функции WM_NOTIFY() глобальным переменным $iLast_LV_Index и $iLast_LV_SubIndex присваиваются значения индексов этой ячейки (строки и колонки соответственно). Эти индексы начинаются с 0, т.е., например, первая строка имеет индекс 0, а вторая колонка - индекс 1. Потом функция _Editor_LV_Show() на основании полученных индексов узнает месторасположение выбранной ячейки и перемещает туда дочернее окно $hEditor. Сейчас (в 4-Ini.au3), если $iLast_LV_SubIndex = 0, т.е. выбрана первая колонка, отображается ComboBox, если выбрана любая другая колонка, кроме первой, то отображается Input. В этой функции можно менять как колонки, в которых будет появляться ComboBox, так и варианты выбора. Это будет зависить от заданных значений $iLast_LV_SubIndex, например:
Код:

;...
Switch $iLast_LV_SubIndex
    Case 0 ;первая колонка.
        ;показываем ComboBox с "да-нет".
    Case 4 ;пятая колонка
        ;показываем ComboBox с "может быть-всегда-никогда".
        ;и т.д.
    Case Else ;любая, кроме тех, которые указаны выше.
        ;показываем Input
EndSwitch
;...

Где-то так. :)

Centrinar 16-02-2011 15:02 1614417

Код:

Func _Editor_LV_Show()

        $aRect = _GUICtrlListView_GetSubItemRect($hListView, $iLast_LV_Index, $iLast_LV_SubIndex)
        WinMove($hEditor, '', $aRect[0] + $iLeft + $iDelta, $aRect[1] + $iY_LV, $iColumn_W, _
                        ($aRect[3] - $aRect[1]) + $iDelta)
        If $iLast_LV_SubIndex Then
                Switch $iLast_LV_SubIndex
    Case 3 ;первая колонка.
                GUICtrlSetPos($nComboEditor, 0, 0, $iColumn_W, ($aRect[3] - $aRect[1]) + $iDelta)
                GUICtrlSetData($nComboEditor, 'May be|Never')
                GUICtrlSetState($nComboEditor, $GUI_SHOW)
                GUICtrlSetState($nInputEditor, $GUI_HIDE)
                GUISetState(@SW_SHOW, $hEditor)
                $fCombo = True
    Case 4 ;пятая колонка
        GUICtrlSetPos($nComboEditor, 0, 0, $iColumn_W, ($aRect[3] - $aRect[1]) + $iDelta)
                GUICtrlSetData($nComboEditor, 'May be|Never')
                GUICtrlSetState($nComboEditor, $GUI_SHOW)
                GUICtrlSetState($nInputEditor, $GUI_HIDE)
                GUISetState(@SW_SHOW, $hEditor)
                $fCombo = True
    Case Else ;любая, кроме тех, которые указаны выше.
                GUICtrlSetPos($nInputEditor, 0, 0, $iColumn_W, ($aRect[3] - $aRect[1]) + $iDelta)
                $sText = _GUICtrlListView_GetItemText($hListView, $iLast_LV_Index, $iLast_LV_SubIndex)
                GUICtrlSetData($nInputEditor, $sText)
                GUICtrlSetState($nInputEditor, $GUI_SHOW)
                GUICtrlSetState($nComboEditor, $GUI_HIDE)
                GUISetState(@SW_SHOW, $hEditor)
                $fCombo = False
EndSwitch
                       
        EndIf
        $fEdit = True
        HotKeySet('{ENTER}', '_Editor_LV_Save')
        HotKeySet('{UP}', '_Editor_LV_Save')
        HotKeySet('{DOWN}', '_Editor_LV_Save')
EndFunc  ;==>_Editor_LV_Show

Все работает но кроме столбца Ключ т.е. первого. :sorry:

madmasles 16-02-2011 15:18 1614436

Цитата:

Цитата Centrinar
Все работает но кроме столбца Ключ т.е. первого. »

И не должно работать. У Вас перед Switch ... идет If $iLast_LV_SubIndex Then, т.е. будет показывать то, что Вам надо, но только не в первой колонке, т.к. для нее $iLast_LV_SubIndex = 0.

Centrinar 16-02-2011 15:27 1614447

Разобрался, спасибо :lol:

Только он не сохраняет изменения :sorry: т.е. выбрав значение из ComboBox оно все равно возвращается на то которое было указано в столбце

Обнаружил что он записывает изменения в значение Ключ. Даже если я редактировал 4 столбец. If $iLast_LV_SubIndex Then - я убрал

madmasles 16-02-2011 15:57 1614475

Centrinar,
Про сохранение забыл. Надо менять функцию _Editor_LV_Save(). Поменяйте в ней
Код:

;...
_GUICtrlListView_SetItemText($hListView, $iLast_LV_Index, $sFromComboEditor)
;на
_GUICtrlListView_SetItemText($hListView, $iLast_LV_Index, $sFromComboEditor, $iLast_LV_SubIndex)
;...

Вроде, должно исправиться.

Centrinar 16-02-2011 16:07 1614486

Спасибо, работает

Centrinar 22-06-2011 16:38 1699676

madmasles подскажи пож. как добавить кнопку сортировки т.е. при ее нажатии он ставил бы все по порядку. Например: я удалил одну строчку и у меня теперь стоит:
prog1=<tetsprog1.exe><........
prog3=<tetsprog2.exe><........

т.е. нехватает prog 2

А необходимо что бы он проставлял их порядок т.е. pog1, prog2 и т.д.

madmasles 23-06-2011 03:11 1699978

Centrinar,
Пробуйте.


Время: 01:25.

Время: 01:25.
© OSzone.net 2001-