PDA

Показать полную графическую версию : Перемешивание и сортировка в INI файле


Страниц : 1 [2]

madmasles
06-02-2011, 00:43
верни пож. пункт перемещения строк »Я их убрал, так как не знаю, менять(перемещать) целиком все значения или только то, на котором открыли меню.

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

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

Centrinar
06-02-2011, 14:54
Полностью вся строка, как и было...

Centrinar
07-02-2011, 11:02
:sorry:

madmasles
08-02-2011, 12:16
Centrinar,
Попробуйте.

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

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

madmasles
11-02-2011, 13:17
скрипт не дает мне ввести больше 17 символов в любой из параметров »Поменяйте эту строку:$nInputEditor = GUICtrlCreateInput (http://www.autoitscript.com/autoit3/docs/functions/GUICtrlCreateInput.htm)('', 0, 0, $iColumn_W, 14);, $ES_CENTER)С ComboBox позже сделаю, болею сейчас. :(

Centrinar
11-02-2011, 13:24
Эпидемия, выздоравливай :(

madmasles
13-02-2011, 09:52
Centrinar,
Попробуйте с ComboBox.

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

madmasles
16-02-2011, 14:39
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 (http://www.autoitscript.com/autoit3/docs/keywords.htm#Switch) $iLast_LV_SubIndex
Case (http://www.autoitscript.com/autoit3/docs/keywords.htm#Case) 0 ;первая колонка.
;показываем ComboBox с "да-нет".
Case (http://www.autoitscript.com/autoit3/docs/keywords.htm#Case) 4 ;пятая колонка
;показываем ComboBox с "может быть-всегда-никогда".
;и т.д.
Case (http://www.autoitscript.com/autoit3/docs/keywords.htm#Case) Else (http://www.autoitscript.com/autoit3/docs/keywords.htm#Else) ;любая, кроме тех, которые указаны выше.
;показываем Input
EndSwitch (http://www.autoitscript.com/autoit3/docs/keywords.htm#EndSwitch)
;...Где-то так. :)

Centrinar
16-02-2011, 15:02
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
Все работает но кроме столбца Ключ т.е. первого. »И не должно работать. У Вас перед Switch ... идет If $iLast_LV_SubIndex Then, т.е. будет показывать то, что Вам надо, но только не в первой колонке, т.к. для нее $iLast_LV_SubIndex = 0.

Centrinar
16-02-2011, 15:27
Разобрался, спасибо :lol:

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

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

madmasles
16-02-2011, 15:57
Centrinar,
Про сохранение забыл. Надо менять функцию _Editor_LV_Save(). Поменяйте в ней;...
_GUICtrlListView_SetItemText (http://dundats.mvps.org/help/html/libfunctions/_guictrllistview_setitemtext.htm)($hListView, $iLast_LV_Index, $sFromComboEditor)
;на
_GUICtrlListView_SetItemText (http://dundats.mvps.org/help/html/libfunctions/_guictrllistview_setitemtext.htm)($hListView, $iLast_LV_Index, $sFromComboEditor, $iLast_LV_SubIndex)
;...Вроде, должно исправиться.

Centrinar
16-02-2011, 16:07
Спасибо, работает

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

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

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

madmasles
23-06-2011, 03:11
Centrinar,
Пробуйте.




© OSzone.net 2001-2012