Ru-Board.club
← Вернуться в раздел «Программы»

» Autoplay Media Studio

Автор: Lexua
Дата сообщения: 20.11.2011 20:55
Sanhasan
Если нужно показывать просто скрытые фото, то этим переменным нужно присваивать имена показываемых объектов. Я пытаюсь Вам донести именно то, что передавать действия между страницами в многостраничном проекте можно именно с помощью глобальных переменных. Поэтому приведённый ниже код не претендует на красоту, а должен показать Вам путь...

Примеры переменных:

Код: Var1 = ""; -- глобальная переменная
local Var2 = ""; -- локальная переменная доступна только конкретной подпрограмме
Автор: lerik2703
Дата сообщения: 20.11.2011 22:11
AVM185
Здравствуйте!как осуществляется навигация по темам? и если подтверждение что там прочитана или будет она закрыта автоматически при выборе следующей?
Автор: Stalkersof
Дата сообщения: 20.11.2011 22:19
Можно еще вот так без переменных. Не всегда и не везде но можно. Чисто как пример.
Кнопка на первой странице.

Код: sNewScript = [[Image.SetVisible("Image1", true); Image.SetVisible("Image2", true);]]
Application.SetPageScript("Page2", "On Preload", sNewScript);
Автор: lerik2703
Дата сообщения: 20.11.2011 22:28
Stalkersof

Цитата:
Если в On Preload на Page2 нет ни строчки кода

чтобы не затерся уже имеющиеся код подойдет действие

Код: Application.GetPageScript()
Автор: Stalkersof
Дата сообщения: 20.11.2011 22:54
lerik2703
Согласен полностью. Тоже так сначало хотел. Но вроде как у товарища будет несколько кнопок. И смысл в том чтоб именно затирался. Все равно как пример. Сам только узнал
Автор: sjdb45
Дата сообщения: 21.11.2011 01:09
Zloy_Gelud

Объясни пожалуйста, возможно ли создать ххх.ini файл после того как отметил в листбоксе приложения?
К примеру, мы выбрали что хотели, нажали на кнопку и создается ххx.ini на системном диске...
Думаю что где-то тут это могло быть возможным:


Код: local tChecked = ListBox.GetChecked("ListBox1", BST_CHECKED);
if tChecked then
for i = 1, #tChecked do
local sWorkDir = ListBox.GetItemData("ListBox1", tChecked[i]);
-> INIFile.SetValue(_WindowsFolder.."\\ххх.ini", "My Section", "My Value", "My Data");
Автор: Zloy_Gelud
Дата сообщения: 21.11.2011 07:16
sjdb45 -- пробуй.

Код: local tChecked = ListBox.GetChecked("ListBox1", BST_CHECKED);
if tChecked then
for i = 1, #tChecked do
INIFile.SetValue(_WindowsFolder.."\\ххх.ini", "My Section", i, ListBox.GetItemText("ListBox1", tChecked[i]));
end
end
Автор: sjdb45
Дата сообщения: 21.11.2011 09:37
Zloy_Gelud
Спасибо!!!
Да, заполняет ини файл прекрасно, а как быть если листбоксов 3 штуки,
для каждого листбокса я дублировал этот код однако заполненый список из ListBox1 удаляется следующим списком listbox2 а этот третьим и т.д.
Автор: Zloy_Gelud
Дата сообщения: 21.11.2011 09:45
sjdb45

Цитата:
однако заполненый список из ListBox1 удаляется следующим списком listbox2 а этот третьим и т.д.

Ничего не понял.
Автор: sjdb45
Дата сообщения: 21.11.2011 10:10
Объясню:
кодом который ты написал заполняется xxx.ini но заполняется с listbox1, а у меня 3 листбокса.
И как сделать что-бы если выбираешь с трех листбоксов то все выбранное с трех листбоксов заполнило xxx.ini
С одним листбоксом нет проблем, заполняются те приложения которые ты отметил.. а вот как быть если 3 листбокса?
Я дублировал код который ты мне дал, вот так:

Код:
--1
local tChecked = ListBox.GetChecked("ListBox1", BST_CHECKED);
if tChecked then
for i = 1, #tChecked do
INIFile.SetValue(_WindowsFolder.."\\їїї.ini", "My Section", i, ListBox.GetItemText("ListBox1", tChecked[i]));
end
end
--2
local tChecked = ListBox.GetChecked("ListBox2", BST_CHECKED);
if tChecked then
for i = 1, #tChecked do
INIFile.SetValue(_WindowsFolder.."\\їїї.ini", "My Section", i, ListBox.GetItemText("ListBox2", tChecked[i]));
end
end
--3
local tChecked = ListBox.GetChecked("ListBox3", BST_CHECKED);
if tChecked then
for i = 1, #tChecked do
INIFile.SetValue(_WindowsFolder.."\\їїї.ini", "My Section", i, ListBox.GetItemText("ListBox3", tChecked[i]));
end
end
Автор: dallas page
Дата сообщения: 21.11.2011 10:48
Zloy_Gelud

Цитата:
local __search = function (s)
local tFinded = {};
local nItem = ListBox.FindItem("ListBox1", -1, LB_BYTEXT, "*"..s.."*");
while nItem ~= -1 do
tFinded[tostring(ListBox.GetItemText("ListBox1", nItem))] = true;
nItem = ListBox.FindItem("ListBox1", nItem, LB_BYTEXT, "*"..s.."*");
end
return tFinded;
end

local __checked = function ()
local tRet = {};
local tChecked = ListBox.GetChecked("ListBox1", BST_CHECKED);
if tChecked then
for i = 1, #tChecked do
tRet[tostring(ListBox.GetItemText("ListBox1", tChecked[i]))] = true;
end
end
return tRet;
end


local sSearch = Input.GetText("Input1");
if String.TrimLeft(sSearch, nil) ~= "" then
local tChecked = __checked();
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, "");
if Table.Count(tChecked) > 0 then
if tChecked[t] then
ListBox.SetItemCheck("ListBox1", nInd, BST_CHECKED);
end
end
end
end
end


Как всегда просто супер. Но, есть проблема. Если я сделаю поиск, а потом изменю условия поиска, то поиск будет не в полном списке позиций, а в списке прошлого результата поиска. А если код переделать. Сделать поиск не по Item, а по файлам. В принципе он у меня уже был реализован. В Preload страницы есть код, который выводит все файлы *.apk в listbox. Надо чтобы отмеченные позиции были так же отмечены в результатах поиска. Помоги пожалуйста доработать код.


Код: text = Input.GetText("Input1");
ListBox.DeleteItem("ListBox1", LB_ALLITEMS);
t_Files = File.Find("AutoPlay\\Docs", "*"..text.."*.apk", true, false, nil, nil);
if t_Files then
for n_Item, s_File in pairs(t_Files) do
s_Filename = String.SplitPath(s_File).Filename;
ListBox.AddItem("ListBox1", s_Filename, s_File);
end
end
Автор: Zloy_Gelud
Дата сообщения: 21.11.2011 11:45
sjdb45 Исправлено

Код: local nLBCount = 3; -- количество ЛистБоксов
local nInd = 0;
for k = 1, nLBCount do
local tChecked = ListBox.GetChecked("ListBox"..k, BST_CHECKED);
if tChecked then
for i = 1, #tChecked do
nInd = nInd + 1;
INIFile.SetValue(_WindowsFolder.."\\ххх.ini", "My Section", nInd, ListBox.GetItemText("ListBox"..k, tChecked[i]));
end
end
end
Автор: sjdb45
Дата сообщения: 21.11.2011 12:25
Zloy_Gelud
Впервые такой код вижу если чесно
Я вбил его но...
Вижу в ини файле только
[IMy Section]
1=
2=
3=
и т.д.
То есть без наименований
Не прописываются имена
____________________________________________________
Пардон, я когда скопировал твой код то он был такой, может ты его чуть после подправил..

Код:
local nLBCount = 3; -- êîëè÷åñòâî ËèñòÁîêñîâ
local nInd = 0;
for k = 1, nLBCount do
local tChecked = ListBox.GetChecked("ListBox"..k, BST_CHECKED);
if tChecked then
for i = 1, #tChecked do
nInd = nInd + 1;
INIFile.SetValue(_WindowsFolder.."\\õõõ.ini", "INSTALL", nInd, ListBox.GetItemText("ListBox1", tChecked[i]));
end
end
end
Автор: Zloy_Gelud
Дата сообщения: 21.11.2011 12:27
dallas page

Цитата:
Сделать поиск не по Item, а по файлам.

Имхо, плохо каждый раз напрямую обращаться к файлам. Скорость обработки теряется. Лучше уж с памятью работать.

On Preload страницы:

Код: ListBox.DeleteItem("ListBox1", LB_ALLITEMS);
--t_Files = File.Find("AutoPlay\\Docs", "*"..text.."*.apk", true, false, nil, nil);
t_Files = File.Find("AutoPlay\\Docs", "*.apk", true, false, nil, nil);
if t_Files then
g_FileNames = {};
for n_Item, s_File in pairs(t_Files) do
s_Filename = String.SplitPath(s_File).Filename;
g_FileNames[tostring(s_Filename)] = true;
ListBox.AddItem("ListBox1", s_Filename, s_File);
end
end
Автор: sjdb45
Дата сообщения: 21.11.2011 12:48
Да мы писали одновременно и так получилось
Вот ответь,
Вот только не пойму одно, -> local nLBCount = 3; -- количество ЛистБоксов
Значит вместо 3 можно поставить и другую цифру если скажем листбоксов ne 3 a 5 штук,
значит ставим local nLBCount = 5; -- я прав?
Автор: Zloy_Gelud
Дата сообщения: 21.11.2011 12:59
sjdb45

Цитата:
я прав?

Абсолютно. Только названия ЛистБоксов должны выглядеть как "ListBox1", "ListBox2", "ListBox3", "ListBox4", "ListBox5".
Автор: sjdb45
Дата сообщения: 21.11.2011 13:21
Zloy_Gelud
ОГРОМНОЕ СПАСИБО!
Вот уже около месяца я собираю свою идею установщика и уже есть свет в конце тoнеля!
Должно что-то получится.
Если кратко то:
все листбоксы на страничке запрятаны с размером 1х1 по краю странички
1.заранее создаю в директории ини файл со списком всей этой херни
2.При помощи ComboBox вывожу на страничку выбраный в нём листбокс (офис, Графика и т.п.)
3.При обзоре в листбоксах при нажатии на ту или иную прогу выходит скриншот и в параграфе описание.
4.после выбора приложений из листбоксов создается один ини файл со списком (мы только что его сделали).
5.этот список появляется на страничке в одном листбоксе (всё что выбирали)
6.после нажатия кнопки "Старт" начинается процесс установки того что выбрано.
Осталось всё подогнать по мелочам
Так что, без твоей помощи я бы и 10% всей работы не смог бы сделать!
От всей души желаю тебе 200 лет счастливой жизни!
Автор: Stalkersof
Дата сообщения: 21.11.2011 13:29
sjdb45
Ну чтож посмотрим что получится. И все таки те проблемы которые были озвучены так и остались.
Будем ждать может кто что придумает.
У меня лично даже ini файл не создается. Система Виста SP2. Запуск только от имени администратора.
Что не есть хорошо.

Вот эта строчка.

Цитата:
INIFile.SetValue(_WindowsFolder.."\\ххх.ini", "My Section", nInd, ListBox.GetItemText("ListBox"..k, tChecked[i]))

Имено этот Ini требует права админа. На висте.
Автор: Zloy_Gelud
Дата сообщения: 21.11.2011 13:42
/OFF
sjdb45 -- Спасибо.
Автор: dallas page
Дата сообщения: 21.11.2011 13:53
Zloy_Gelud Отлично. Работает. А можно не много подправить, чтобы после поиска, я мог удалить надпись в input, чтобы он снова выдал весь список и отмеченные ранее пункты остались с галочкой?!! А то я удаляю надпись и он выдает снова весь список, но отмеченные ранее пункты без галочек
Автор: Zloy_Gelud
Дата сообщения: 21.11.2011 14:09
dallas page -- можно.


Код: local sSearch = Input.GetText("Input1");
local tChecked = __checked();
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, "");
if Table.Count(tChecked) > 0 then
if tChecked[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, "");
if Table.Count(tChecked) > 0 then
if tChecked[i] then
ListBox.SetItemCheck("ListBox1", nInd, BST_CHECKED);
end
end
end
end
end
Автор: davidgray
Дата сообщения: 21.11.2011 14:10
Добрый день!

Помогите пожалуйста.

Имеется страница, на ней картинки. Как сделать, что бы при клике на картинку, она устанавливалась как фон рабочего стола.

Очень сильно нужно....плиз.
Автор: Zloy_Gelud
Дата сообщения: 21.11.2011 14:51
davidgray

On Click объекта Image1:

Код: local tProp = Image.GetProperties("Image1");
local sImagePath = tProp.ImageFile;

Registry.SetValue(HKEY_CURRENT_USER, "Control Panel\\Desktop", "Wallpaper", sImagePath, REG_SZ);

-- Расположение: "По центру"
--Registry.SetValue(HKEY_CURRENT_USER, "Control Panel\\Desktop", "TileWallpaper", "0", REG_SZ);
--Registry.SetValue(HKEY_CURRENT_USER, "Control Panel\\Desktop", "WallpaperStyle", "0", REG_SZ);

-- Расположение: "Растянуть"
Registry.SetValue(HKEY_CURRENT_USER, "Control Panel\\Desktop", "TileWallpaper", "0", REG_SZ);
Registry.SetValue(HKEY_CURRENT_USER, "Control Panel\\Desktop", "WallpaperStyle", "2", REG_SZ);

-- Расположение: "Замостить"
--Registry.SetValue(HKEY_CURRENT_USER, "Control Panel\\Desktop", "TileWallpaper", "1", REG_SZ);
--Registry.SetValue(HKEY_CURRENT_USER, "Control Panel\\Desktop", "WallpaperStyle", "0", REG_SZ);
Автор: dallas page
Дата сообщения: 21.11.2011 15:16
Zloy_Gelud спасибо. Осталась только последняя проблема. Отмеченные позиции, не удовлетворяющие условиям поиска, после поиска и после того как стираешь надпись в input становятся не отмеченными. А после поиска в отмеченных позициях стирается значение Item Data. Можно что нибудь придумать?
Автор: Zloy_Gelud
Дата сообщения: 21.11.2011 17:11
dallas page

Ептыть , ты что вообще хочешь получить? Если я правильно понял, то после каждого поиска, если ты ставишь птичку для пункта, то это должно запоминаться? И после очистки поиска, когда выводятся все пункты, те пункты, которые были отмечены во время поиска (поисков может быть несколько (?)), должны также остаться отмечены в общем списке?

Цитата:
А после поиска в отмеченных позициях стирается значение Item Data. Можно что нибудь придумать?

Можно.
Автор: dallas page
Дата сообщения: 21.11.2011 17:39
Zloy_Gelud ок, не буду ничего лишнего придумывать. Я просто хотел, чтобы было как в программе iTunes. Помоги плиз по поводу ItemData
Автор: Zloy_Gelud
Дата сообщения: 21.11.2011 17:56
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
Автор: davidgray
Дата сообщения: 22.11.2011 10:18
Zloy_Gelud
Большое спасибо тебе!

Вот только что то при нажатии ничего не происходит.

Имя изображения в проекте "wallp01"

On Click изображения:

local tProp = Image.GetProperties("wallp01");
local sImagePath = tProp.ImageFile;
Registry.SetValue(HKEY_CURRENT_USER, "Control Panel\\Desktop", "Wallpaper", sImagePath, REG_SZ);
Registry.SetValue(HKEY_CURRENT_USER, "Control Panel\\Desktop", "TileWallpaper", "0", REG_SZ);
Registry.SetValue(HKEY_CURRENT_USER, "Control Panel\\Desktop", "WallpaperStyle", "0", REG_SZ);

Ничего не надо прописывать в глобальных параметрах проекта или ещё где? ОС имеет значение? XP, Vista или Seven?
Автор: Stalkersof
Дата сообщения: 22.11.2011 11:34
davidgray
Изменения вступят в силу только после перезагрузки.
И на верно имеет значение ОС. У меня на висте Фон рабочего стола меняется. Но когда прогрузятся все программы в трее опять возвращается обычный. Может потому что установленна DreamScene?
Автор: davidgray
Дата сообщения: 22.11.2011 11:46
Stalkersof

Просмотрел весь форум, подобной темы не нашёл.
Есть проект сделанный в AMS, но к сожалению исходников нет. В этом проекте сделано так, что обои применяются сразу. При этом, всё сделано на уровне, с возможностью увеличить картинку, и после этого нажать кнопку установить как фон рабочего стола.

Форум Ru.Board прочесал почти весь, подобной темы с "обоями" не нашёл. Встретил один пост, о функции, которая позволяет вносить значение в реестр и без перезагрузки системы.

К сожалению, программой AMS пользуюсь недавно, первый проект... всё уже практически сделал, завис вот на данной проблеме. Уже бьюсь 4 день.(

Страницы: 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140

Предыдущая тема: Media Player Classic - Home Cinema (MPC-HC)


Форум Ru-Board.club — поднят 15-09-2016 числа. Цель - сохранить наследие старого Ru-Board, истории становления российского интернета. Сделано для людей.