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

» Autoplay Media Studio

Автор: lerik2703
Дата сообщения: 12.10.2011 16:57
Stalkersof

Цитата:
Из диалога я потом смогу вернуть путь к выбраной папке в приложение?

да в любой не локальной переменной!

вызов

Код: result = DialogEx.Show("Dialog1", true, nil, nil);
if result == 1 then
Dialog.Message("Notice", sDialogMessage, MB_OK, MB_ICONINFORMATION, MB_DEFBUTTON1);
end
Автор: dallas page
Дата сообщения: 12.10.2011 18:48
Добрый день. Имеется код:


Код: ListBox.DeleteItem("ListBox1", LB_ALLITEMS);
t_Files = File.Find("AutoPlay\\Docs", "*.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
Автор: Stalkersof
Дата сообщения: 12.10.2011 18:50
Не могу вернуть название папки из TreeList

local nSelected = TreeList.GetSelected("Plugin1");
if nSelected ~= -1 then
local nColumns = TreeList.CountColumns("Plugin1");
local sText = TreeList.GetCellText("Plugin1", nSelected, nColumns);--??? это оно ???
Dialog.Message("Notice","Text="..sText.."\r\n")
end

Не получается пустая строка

А вообще идея класная со своим Диалогом обзора папок. +10
Автор: lerik2703
Дата сообщения: 12.10.2011 19:08
Stalkersof

Цитата:
Не могу вернуть название папки из TreeList

для этого примера переменная nColumns должна равняться 0 т.е

Код: local nSelected = TreeList.GetSelected("Plugin1");
if nSelected ~= -1 then
--local nColumns = TreeList.CountColumns("Plugin1");
local sText = TreeList.GetCellText("Plugin1", nSelected, 0);--??? это оно ???
Dialog.Message("Notice","Text="..sText.."\r\n")
end
Автор: Zloy_Gelud
Дата сообщения: 12.10.2011 19:08
dallas page

Цитата:
Необходимо, чтобы при нажатии на кнопку, программа копировала только те файлы, который я выбрал в ListBox.


Код: local tChecked = ListBox.GetChecked("ListBox1", BST_CHECKED);
if tChecked then
for i = 1, #tChecked do
File.Copy(ListBox.GetItemData("ListBox1", tChecked[i]), "C:\\DestDir", true, true, false, true, nil);
end
end
Автор: Stalkersof
Дата сообщения: 12.10.2011 19:45
Zloy_Gelud
Гляньте гляньте пожалуйста.

А так должно получиться. Обзор папок как настоящий получился почти не отличить.
Похвалюсь немного.
http://s017.radikal.ru/i414/1110/d1/fd0ca9dcf06b.jpg

Автор: Zloy_Gelud
Дата сообщения: 12.10.2011 19:49
Stalkersof

Цитата:
Гляньте гляньте пожалуста.

Уже гляжу.

Цитата:
Обзор папок как настоящий получился почти не отличить.

Ну, орфографические ошибки неплохо бы тоже исправить.. И уменьши ширину столбца, чтобы не было нижнего скрола.
Автор: dallas page
Дата сообщения: 12.10.2011 19:51
Zloy_Gelud спасибо
Автор: Stalkersof
Дата сообщения: 12.10.2011 20:06

Цитата:
Ну, орфографические ошибки неплохо бы тоже исправить

Так это я от радости две недели голову ломал как диалог сделать. Даже бредовые идеи стали в голову лезть типа Dll писать свою, #C хотел учить. А тут все так просто оказалось.
А где ошибки в программе или на сайте.
В школе трояк был и то с натягом.
Автор: Zloy_Gelud
Дата сообщения: 12.10.2011 20:19
!Пост отредактирован по этой причине.


Stalkersof

Цитата:
А где ошибки в программе или на сайте.


Цитата:
Выберите папку в меню "Пуск":

По поводу рекурсивного добавления папок.. думал не осилю. Но вроде как победил (с исправлениями lerik2703), тестируй.

Глобальные функции:

Код: _r_find = function (path,nInd)
local tFindSubDirs = Folder.Find(path, "*", false, nil);
if tFindSubDirs then
nInd = nInd + 1;
for i = 1, #tFindSubDirs do
TreeList.AddRow("Plugin1", String.Mid(tFindSubDirs[i], String.ReverseFind(tFindSubDirs[i], "\\", false) + 1, -1), nImageIndex, nInd, nil);
_r_find(tFindSubDirs[i], nInd);
end
end
end
Автор: Stalkersof
Дата сообщения: 12.10.2011 22:15
Zloy_Gelud
Да вроде все работает Спасибо. Буду дальше мутить.

Ну Indigo Ros дал задачку. Вот в нет например этот диалог имеет два параметра
RootFolder
Местоположение корневого каталога, от которого начинается обзор. В диалоговом окне будет отображаться только указанная папка и вложенные в нее папки всех уровней.
SelectedPath
Путь к папке, которая первой выбрана в данном диалоговом окне.
А в APMS получается только последний параметр SelectedPath во всяком случае на глаз так. Первый параметр общий для всех каталог весь открыт.
Автор: Stalkersof
Дата сообщения: 13.10.2011 13:25
Zloy_Gelud
Что-то не пойму как путь вернуть(название всех папок) которые открыты.
В TreeList открываем узлы щелкаем по папке. Как узнать имя верхней папки. Весь каталог показать.
папка\подпапка\подпапка
Автор: Zloy_Gelud
Дата сообщения: 13.10.2011 14:07
Stalkersof
Ну, во-первых, по поводу рекурсии.. Говорим спасибо lerik2703 , который заметил ошибку в моем вышеприведенном коде, из-за которой

Цитата:
не корректно отображались папки,начиная с 3 -его ответвления!

Пост отредактировал.

Добавлено:

Цитата:
Что-то не пойму как путь вернуть(название всех папок) которые открыты.
В TreeList открываем узлы щелкаем по папке. Как узнать имя верхней папки. Весь каталог показать.
папка\подпапка\подпапка

А сам не знаю. Вроде стандартно нельзя. Погляжу в сторону API. Может что выйдет.
Автор: lerik2703
Дата сообщения: 13.10.2011 14:16
Zloy_Gelud

Цитата:
Вроде стандартно нельзя

у меня идейка есть сейчас выложу

Добавлено:

Код: nTabInd=0
tFolderPath={}
nInd = 0;
_r_find = function (path,nInd)
local tFindSubDirs = Folder.Find(path, "*", false, nil);
if tFindSubDirs then
nInd = nInd + 1;
for i = 1, #tFindSubDirs do
nTabInd=nTabInd+1
Table.Insert(tFolderPath, nTabInd, tFindSubDirs[i]);
TreeList.AddRow("Plugin1", String.Mid(tFindSubDirs[i], String.ReverseFind(tFindSubDirs[i], "\\", false) + 1, -1), nImageIndex, nInd, nil);
_r_find(tFindSubDirs[i], nInd);
end
end
end
Автор: Zloy_Gelud
Дата сообщения: 13.10.2011 15:11
lerik2703 -- да, можно, конечно, создавать переменную (таблицу) и добавлять туда папки при заполнении объекта. Но как-то не спортивно это что ли. Попробую тоже глянуть как время будет, а то завал сейчас на работе.
Автор: Stalkersof
Дата сообщения: 13.10.2011 16:54
lerik2703
Zloy_Gelud
Вы реально крутые. Нехочу никого выделять. Спасибо за то что вы есть и помогаете. lerik2703 Ошибочка при попытке выбрать папку програмс. Но это ерунда.

Может уж добьете до конца. Может придумаете как сделать выбор папки. Ну типа задается путь и открываются все подпапки, а та папка которая заданна как то выделялась. Или текст или фон. Было бы вообще атас как настоящий.
PS. Во и мое сгодилось

Код: local nSelected = TreeList.GetSelected("Plugin1");
if (nSelected ~= -1) and (nSelected ~= 0) then
-- Отсекаем путь оставляем только имя папки + папка установки по умолчанию
local nBaseFolderLength = String.Length(Shell.GetFolder(SHF_STARTMENUPROGRAMS_COMMON));
    local nTargetFolderLength = String.Length(tFolderPath[e_Row]);
    local strFolderName = String.Right(tFolderPath[e_Row], (nTargetFolderLength - nBaseFolderLength));
    strFolderName = String.TrimLeft(strFolderName, "\\");
Input.SetText("Input1", strFolderName.."\\"..GroupGame);
end
Автор: lerik2703
Дата сообщения: 13.10.2011 20:50
Zloy_Gelud

Цитата:
Но как-то не спортивно это что ли

но по крайней мере проще
Stalkersof

Цитата:
открываются все подпапки, а та папка которая заданна как то выделялась

Ссылка попробуй этот пример, может понравиться или подожди пока у Zloy_Gelud будет свободная минутка!
Автор: Stalkersof
Дата сообщения: 13.10.2011 23:30
lerik2703
Немного не то. Блин это я виноват объяснил плохо, прошу прощения.
Попробую объяснить.
Есть страница на странице инпут и кнопка "Обзор"
При нажатии на кнопку показываем наш диалог обзор папок. Пользователь выбрал папку закрываем диалог и выводим путь к папке в инпут на странице.
И вот пользователю не понравилась и он еще раз нажимает кнопку и опять открывает наш диалог. И диалог выбирает ту папку которая была открыта в последний раз.
Ну блин опять на верно не понятно. Посмотрите любой установщик сделанный в Inno Setup вот как то так.

Да вы конечно молодцы свой диалог получился даже лучше чем стандартный. Только щас заметил, что стандартный даже не годится и для установки, так как показывает весь каталог, а там и диски и флешки и еще папок которые отображаются некорректно. Вообще стандартный диалог некуда не годится.

А вообще конечно если кого заинтересует и будет время и желание, то лучше сделать диалог как сделано в Net c двумя параметрами. Первый папка которая открывается со всеми подпапками, второй путь к папке которая будет выбрана в этом каталоге.

Спасибо огромное. То что надо.
Автор: Zloy_Gelud
Дата сообщения: 14.10.2011 12:38
lerik2703 & Stalkersof

Если получиться реализовать добавление пунктов и обработка нажатия в объекте Tree средствами WinAPI, то все, что надо, будет.

UPD: Процесс движется. Уже около 250 строчек кода... Идем дальше...
Автор: lerik2703
Дата сообщения: 14.10.2011 19:18
Zloy_Gelud

Цитата:
Уже около 250 строчек кода

И что-то мне под-сказывает что это далеко не предел
Автор: Stalkersof
Дата сообщения: 14.10.2011 20:13
Zloy_Gelud

Цитата:
Уже около 250 строчек кода...

Да не в количестве строк дело. Если это будет удобно и просто.
Автор: Zloy_Gelud
Дата сообщения: 14.10.2011 23:33
lerik2703

Цитата:
И что-то мне под-сказывает что это далеко не предел

Надеюсь тройкой сотен строк справиться Чистое WinAPI будет..

Stalkersof

Цитата:
Да не в количестве строк дело. Если это будет удобно и просто.

Удобно - хм.. скорее нативно, просто - Нет, больше для опытных юзеров.
Автор: Zloy_Gelud
Дата сообщения: 15.10.2011 15:08
Практически все готово. Нужно только организовать прозрачность иконки для несуществующих папок.

Есть у кого идеи, как такое замутить? ::: Раскурено.
Автор: Stalkersof
Дата сообщения: 15.10.2011 16:30
А подменить на свою не получиться. Типа свою иконку сделать чуть прозрачней.
Автор: Zloy_Gelud
Дата сообщения: 15.10.2011 16:41
Stalkersof
Можно. Только я не хочу, чтобы скрипт использовал/создавал промежуточные файлы, типа готовых иконок. Он должен сам извлекать иконку из shell32.dll, применять к ней прозрачность и подменять в ImageList для объекта Tree, что и пытаюсь сотворить.
Автор: lerik2703
Дата сообщения: 15.10.2011 22:17
Zloy_Gelud

Цитата:
применять к ней прозрачность

может это поможет?
Автор: Zloy_Gelud
Дата сообщения: 15.10.2011 22:42
lerik2703
Спасибо.
Я, впринципе, обошелся малой кровью - не стал заморачиваться со структурой IMAGELISTDRAWPARAMS, хотя, по-хорошему, нужно (так сдлеано в указанном тобой примере), а тупо установил параметр Style при перерисовке ImageList в значение ILD_BLEND50. Получилось как-то так:
Автор: Stalkersof
Дата сообщения: 15.10.2011 23:07
Крутяшка Надеюсь будет всем доступно.
Автор: Zloy_Gelud
Дата сообщения: 15.10.2011 23:18
[off]
Stalkersof
Нет. Буду по $1 продавать. .. шучу конечно. Осталось чуть допилить и выложу на суд.
Автор: Stalkersof
Дата сообщения: 15.10.2011 23:27


У меня как раз бакс валяется в серванте Если чо готов расстаться

Страницы: 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140

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


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