Zloy_Gelud
Silver Member | Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору Zloy_Gelud Цитата: не буду ничего лишнего придумывать. | Наоборот! Чем вы что-то сложнее придумываете, тем нам интереснее и больше желания это сделать. Так что не стесняйтесь своих хотелок. Тести. On Preload страницы: Код: ListBox.DeleteItem("ListBox1", LB_ALLITEMS); local t_Files = File.Find("AutoPlay\\Docs", "*.apk", true, false, nil, nil); if t_Files then g_FileNames = {}; -- таблица названий файлов g_CheckedFiles = {}; -- таблицов выбранных файлов for n_Item, s_File in pairs(t_Files) do local s_Filename = String.SplitPath(s_File).Filename; g_FileNames[tostring(s_Filename)] = s_File; ListBox.AddItem("ListBox1", s_Filename, s_File); end end | On Click кнопки: Код: local __search = function (s) local tFinded = {}; if g_FileNames then for i, v in pairs(g_FileNames) do if String.Find(i, s, 1, false) ~= -1 then tFinded[i] = v; end end end return tFinded; end if g_CheckedFiles then for i = 1, ListBox.GetCount("ListBox1") do if ListBox.GetItemCheck("ListBox1", i) == 1 then g_CheckedFiles[ListBox.GetItemText("ListBox1", i)] = true; elseif ListBox.GetItemCheck("ListBox1", i) == 0 then g_CheckedFiles[ListBox.GetItemText("ListBox1", i)] = false; end end end local sSearch = Input.GetText("Input1"); if String.TrimLeft(sSearch, nil) ~= "" then local tFinded = __search(sSearch); ListBox.DeleteItem("ListBox1", -1); if Table.Count(tFinded) > 0 then for t, v in pairs(tFinded) do local nInd = ListBox.AddItem("ListBox1", t, v); if g_CheckedFiles and Table.Count(g_CheckedFiles) > 0 then if g_CheckedFiles[t] then ListBox.SetItemCheck("ListBox1", nInd, BST_CHECKED); end end end end else ListBox.DeleteItem("ListBox1", -1); if g_FileNames then for i, v in pairs(g_FileNames) do local nInd = ListBox.AddItem("ListBox1", i, v); if Table.Count(g_CheckedFiles) > 0 then if g_CheckedFiles and g_CheckedFiles[i] then ListBox.SetItemCheck("ListBox1", nInd, BST_CHECKED); end end end end end |
|