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

  • Май 22, 2012, 13:27:24 *
  • Добро пожаловать, Гость
Пожалуйста, войдите или зарегистрируйтесь.

Войти
Расширенный поиск  

Новости:


Последняя финальная версия AutoIt: 3.3.8.1 (Скачать)
Последняя Beta версия AutoIt: 3.3.9.4 (Скачать)

Реклама

Автор Тема: [Элементы GUI] Удаление из ListView и Массива одновременно  (Прочитано 483 раз)

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

YOgen [?]

  • Новичок
  • *
  • Репутация: 0
  • Offline Offline
  • Пол: Мужской
  • Сообщений: 24
  • Версия AutoIt: 3.3.6.1
    • WWW
    • Награды
При нажатии на кнопку "+" и последующем выборе папки в ListView и массив $Files добавляются все файлы из указанной папки.
А при выборе элементов в ListView и нажатии на "-" удаляется выбранное, НО в массиве то все без изменений! Подскажите, пожалуйста, как и из массива удалить соответствующие пункты.

Код: AutoIt [Выделить]
#include <GUIConstantsEx.au3>
#include <ButtonConstants.au3>
#include <TabConstants.au3>
#include <WindowsConstants.au3>
#include <GuiListView.au3>
#Include <File.au3>
#Include <Array.au3>
#include <image_get_info.au3>

$GUI = GUICreate ('Настройки', 470,420)
GUISetState (@SW_SHOW)

$Open_Button = GUICtrlCreateButton (' + ', 345,14, 26,18)
$Del_Button = GUICtrlCreateButton (' - ', 375,14, 26,18)

$ListView = GUICtrlCreateListView (' 1 | 1 ', 150,128, 304,275, $LVS_NOCOLUMNHEADER + $LVS_EX_FULLROWSELECT)
    _GUICtrlListView_SetColumnWidth ($ListView, 0, 196)
    _GUICtrlListView_SetExtendedListViewStyle ($ListView, $LVS_EX_GRIDLINES + $LVS_EX_INFOTIP)

While 1
    $GUI_Msg = GUIGetMsg ()
    Switch $GUI_Msg
        Case $Open_Button
                $Dest_Folder = FileSelectFolder ('Добавить папку:', '', 2)
                If @error Then
                    ContinueLoop
                Else
                    $Files_Temp = _FileListToArray ($Dest_Folder, '*.jpg', 1)
                    If Not @error Then
                        Dim $Files[$Files_Temp[0] + 1][2] = [[$FIles_Temp[0]]]
                        For $i = 1 To $Files[0][0]
                            $Files[$i][0] = $Dest_Folder & '\' & $Files_Temp[$i]
                            $Picture = _ImageGetInfo ($Files[$i][0])
                            $Width = _ImageGetParam ($Picture, 'Width')
                            $Height = _ImageGetParam ($Picture, 'Height')
                            $Files[$i][1] = $Width & 'x' & $Height
                            GUICtrlCreateListViewItem ($Files[$i][0] & '|' & '  ' & $Files[$i][1], $ListView)
                        Next
                        $Files_Temp = 0
                        ;_ArrayDisplay ($Files) ; массив со всеми файлами
                    Else
                    EndIf
                EndIf
        Case $Del_Button
            _GUICtrlListView_DeleteItemsSelected ($ListView)
        Case $GUI_EVENT_CLOSE
            Exit
    EndSwitch
WEnd
 




  Записан

AZJIO [?]

YOgen
_GUICtrlListView_GetSelectedIndices - возвращает индекс выделенного пункта.
_ArrayDelete - удаляет из массива указанный индекс.
Только индексы в ListView начинаются с 0, а в массиве возвращаемым с помощью _FileListToArray с 1.




  Записан
Вытащи сначала бревно из своего глаза, тогда поймёшь как вытащить сучёк из глаза брата своего.

YOgen [?]

  • Новичок
  • *

  • Автор темы
  • Репутация: 0
  • Offline Offline
  • Пол: Мужской
  • Сообщений: 24
  • Версия AutoIt: 3.3.6.1
    • WWW
    • Награды
AZJIO, Спасибо.

Возник еще один вопрос:
каждый раз при выборе папки через "+" формируется новый массив. А надо бы чтобы каждый последующий раз значения добавлялись в конец предыдущего.
А _ArrayConcatenate не желает почему-то объединять 2-мерный массив.
Как это организовать?




  Записан

axlwor [?]

открыть array.au3 посмотреть как реализована _ArrayConcatenate и сделать аналогичное для себя




  Записан

madmasles [?]

  • Модератор
  • *
  • *****
  • Репутация: 1426
  • Online Online
  • Пол: Мужской
  • Сообщений: 3819
  • Версия AutoIt: 3.3.6.1 - 3.3.9.4
    • Награды
YOgen,
Попробуйте так:
Код: AutoIt [Выделить]
#include <File.au3>
#include <Array.au3>

Global $aFiles[1][2] = [[0]], _
        $aDir[3] = [2, @DesktopDir, @MyDocumentsDir]
For $i = 1 To $aDir[0]
    _Get_Files_Info($aFiles, $aDir[$i])
    If @error Then ContinueLoop
    _ArrayDisplay($aFiles, $i)
Next

Func _Get_Files_Info(ByRef $a_Array, $s_Dir, $s_Ext = '*')
    Local $a_Temp
    $a_Temp = _FileListToArray($s_Dir, '*', 1)
    If @error Then Return SetError(1)
    ReDim $a_Array[$a_Temp[0] + $a_Array[0][0] + 1][2]
    For $i = 1 To $a_Temp[0]
        $a_Array[$i + $a_Array[0][0]][0] = $a_Temp[$i]
        $a_Array[$i + $a_Array[0][0]][1] = FileGetSize($s_Dir & '\' & $a_Temp[$i]) & ' b';или что другое
    Next
    $a_Array[0][0] += $a_Temp[0]
EndFunc   ;==>_Get_Files_Info

YOgen [?]

  • Новичок
  • *

  • Автор темы
  • Репутация: 0
  • Offline Offline
  • Пол: Мужской
  • Сообщений: 24
  • Версия AutoIt: 3.3.6.1
    • WWW
    • Награды
Огромное спасибо, madmasles.
Подшаманил и все стало как надо.
В который раз уже помогаете  :beer:




  Записан
 


Похожие темы
Тема Автор Ответов Просмотров Последний ответ
[Элементы GUI] Окраска столбцов в ListView
GUI - Графический интерфейс пользователя
ynbIpb 4 1236 Последний ответ Октябрь 06, 2010, 09:22:35
от Yashied
Listview - корректное удаление items, отмеченных галочками в чекбоксах
AutoIt для новичков
saavaage 5 757 Последний ответ Ноябрь 01, 2010, 02:53:17
от saavaage
[Элементы GUI] Управление свойствами ListView
AutoIt для новичков
DemkaDV 8 1482 Последний ответ Март 11, 2011, 11:54:08
от DemkaDV
Удаление пустых строк из массива
UDF - Пользовательские функции
madmasles 1 1084 Последний ответ Март 14, 2011, 09:45:58
от madmasles
[Элементы GUI] Выделение элементов ListView
AutoIt для новичков
Lubitel Softa 3 783 Последний ответ Июнь 15, 2011, 01:23:35
от VladUs
Удаление всех элементов в ListView
AutoIt для новичков
Vovsla 1 350 Последний ответ Июль 31, 2011, 19:01:23
от gregaz
Как послать две клавиши одновременно, именно одновременно!
AutoIt для новичков
agikon 11 903 Последний ответ Сентябрь 05, 2011, 15:27:07
от agikon
[Элементы GUI] Как в ListView отключить ScrollBar
AutoIt для новичков
XpycT 3 466 Последний ответ Сентябрь 10, 2011, 02:08:14
от XpycT
[Элементы GUI] ToolTip_UDF.au3 удаление подсказок
GUI - Графический интерфейс пользователя
Pavel 6 454 Последний ответ Январь 27, 2012, 23:01:43
от Pavel
[Элементы GUI] Как на кнопку повесить несколько действий (удаление процесса и удаление файла)
AutoIt для новичков
Matisse 13 305 Последний ответ Март 25, 2012, 20:53:34
от Matisse


Реклама

* Последние сообщения на форуме
post Re: Авторизация в одноклассниках
[Автоматизация IE и Web-интерфейса] Arei Сегодня в 13:24:59
post Re: Смена IP адресса
[AutoIt для новичков] Zaramot Сегодня в 13:04:33
post Re: Авторизация в одноклассниках
[Автоматизация IE и Web-интерфейса] Александр Сегодня в 12:59:21
post Re: Выполнение скрипта при нажатии средней кнопки мыши
[AutoIt для новичков] madmasles Сегодня в 12:23:31
post [Мышь, клавиатура] Re: Выполнение скрипта при нажатии средней кнопки мыши
[AutoIt для новичков] Nurgazy Сегодня в 12:09:36
post Re: Объясните плз, как работать с массивами ArrayAdd и прочее...
[AutoIt для новичков] madmasles Сегодня в 12:08:03
post Объясните плз, как работать с массивами ArrayAdd и прочее...
[AutoIt для новичков] webmonster Сегодня в 12:03:38
post Re: Как заменить метку времени файла на севере
[Автоматизация IE и Web-интерфейса] ---Zak--- Сегодня в 11:39:56
post Как заменить метку времени файла на севере
[Автоматизация IE и Web-интерфейса] eropov Сегодня в 11:26:37
post Re: Выполнение скрипта при нажатии средней кнопки мыши
[AutoIt для новичков] madmasles Сегодня в 11:13:16

* Пользователи онлайн
  • Dot Гостей: 129
  • Dot Скрыт: 2
  • Dot Пользователей: 30
  • Dot Пользователи Online: