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

» Autoplay Media Studio

Автор: Zloy_Gelud
Дата сообщения: 11.09.2007 21:45
Drusus
Посмотри десь, мож поможет что..
YodO Inc. - SlideShow.apz ~ 20Кб
Автор: Drusus
Дата сообщения: 11.09.2007 22:33
Zloy_Gelud
Спасиб за файл. Разбираюсь.
Автор: GOOSE
Дата сообщения: 11.09.2007 22:58
tavria2, спасибо огромное! Именно такой способ я и "мучал", только напрочь не знал о DataGrid.EnsureVisible

а задачу решил через SQLite, но и этот метод помучаю еще
А нужно мне было сделать фильтр по одной колонке, в которой мноооого строк с трехзначными числами, некоторые повторяются... Короче, нужен был фильтр, при вводе первого знака в поле ввода, несоответствующие строки "отбрасываются", второй - еще и так до третьего, когда остаются только строки, имеющие в этой колонке три символа, введенные в поле фильтра Т.е. "фильтрация на лету"

Автор: tavria2
Дата сообщения: 11.09.2007 23:23
Drusus

Цитата:
В примере ImageViewer 1.2 c http://gooseweb.ru/ для расчёта пропорций написан огромный код в GlobalFunctions, который выполняется очень долго, задержка вывода картинок приличная.

Я так понял это камень в мой огород . Код совсем даже не огромный и кол-во строк этого кода никак не сказывается на скорости работы проекта. Если интересно, посмотри объем кода моего примера "EasySlider", в которм ползунок слайдера меняет свою позицию со скоростью движения мышки и ничего не тормозит. Все дело в размере картинки, чем она больше тем больше тормоз, который связан с медлительностью объекта "Image". Если хочешь получить высокую скорость обработки графики - смотри в сторону WinApi.
Цитата:
Скажем, маска размером 400х300 пикселей, в неё нужно последовательно грузить картинки 1024х768, 500х700 и других размеров, при этом, чтобы пропорции снимка сохранялись.

Ну, для начала давай уточним. Маска применяется к окну или к объекту имеющему handle для отображения/скрытия определенных участков(регионов) и не влияет на реальные размеры окна или объекта. Картинку загружаем не в маску, а в объект "Image", который не имеет handle и соответственно к нему нельзя применить маску.
Цитата:
Сейчас, если гружу картинку, например, широкую, то выравнивается её ширина с шириной маски, а высота меняется не пропорционально, а растягивается по высоте маски (stretch).

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

Что именно тебе кажется не удачным?
Цитата:
При показе на FullScreen может и незаметно, а при выводе в маску, картинка вначале загружается в одно место, а потом заметно скачет в другое.

Ну здесь по моему полный нонсенс, в большом окне не заметно, а в маленьком заметно. Внимательно проанализируй код, там все операции связанные с изменением позиции и размеров картинки, выполняются когда объект "Image" скрыт и отображается только после всех манипуляций.

GOOSE

Цитата:
а задачу решил через SQLite, но и этот метод помучаю еще

К сожалению мне не приходилось работать с SQLite, но я предполагаю, что ты делаешь поиск по базе SQL и в ней получаешь номер строки и колонки найденного значения. Если так, то при большой базе ты несомненно получишь выигрыш в скорости, но только, если в DataGrid не будет производиться никаких изменений (редактирование, сортировка и т.д), т.к. прийдется синхронизировать DataGrid и базу SQL, т.е переброс данных из DataGrid в базу SQL. Если все-же в DataGrid планируются вносить изменения, тогда выигрыш в скорости будет у моего метода поиска.

Цитата:
"фильтрация на лету"

Подумаю.
Автор: Devil91
Дата сообщения: 12.09.2007 12:57
tavria2


Цитата:
По поводу удаления рамки и полос прокруток из объекта "Web" - создай маску, в которой вырежешь все не нужное и примени ее объекту "Web".


Что-то не могу найти, как применить маску к WEB объекту? AutoPlay Media Studio 6


Добавлено:
И еще вопрос когда в WEB объекте нажимаешь на правую кнопку мыши вылезает окошко можно ли оставить в нем только функции Выделить все и Копировать.
Автор: vistadimix
Дата сообщения: 12.09.2007 13:17
Здравствуйте!
Прошу помощи профессионалов...
У меня такой вопрос: можно ли создать два отдельных проекта со связью между ними? Например видеопроигрыватель и само окно просмотра видео.
И еще один: может есть у кого-то пример аудио-проигрывателя с плэйлистом (что-то наподобии винампа)...
Заранее благодарен.
Автор: tavria2
Дата сообщения: 12.09.2007 16:05
GOOSE

Цитата:
"фильтрация на лету"

Вывод данных в объект DataGrid, с использованием "фильтра на лету".
DataGridFilter.apz | зеркало [211.65 Кб].
Автор: Drusus
Дата сообщения: 12.09.2007 16:24
vistadimix

Цитата:
пример аудио-проигрывателя с плэйлистом

см. примеры использования Media Player Plugin здесь: http://www.azman.info/ams/ и в шапке "Реализация Play-листов для Винампа от BOObastis"
Автор: tavria2
Дата сообщения: 12.09.2007 16:39
Devil91

Цитата:
Что-то не могу найти, как применить маску к WEB объекту? AutoPlay Media Studio 6

Маска применяется к окнам и объектам имеющих handle, с помощью действия Window.SetMask, в котором в качестве параметров указываются handle окна и имя файла маски. Объект "Web" по сути и есть окно, handle которого можно вытащить из его св-в Web.GetProperties.
Работа с масками, уже неоднократно обсуждалась. Поищи в первой части форума.

Цитата:
И еще вопрос когда в WEB объекте нажимаешь на правую кнопку мыши вылезает окошко можно ли оставить в нем только функции Выделить все и Копировать.

Это системное меню - средствами AMS его не изменить. Можно на правый клик мышки навешать свое меню, но оно не всегда замещает системное. Лучше оставить как есть.
Автор: Devil91
Дата сообщения: 12.09.2007 17:15
А нет ли альтернативного компонента просмотра HTML с носителя (интернет не нужен) или можно средствами программирования скомплировать такой компанет?(или это впринципи невозможно)
Автор: Drusus
Дата сообщения: 12.09.2007 18:02
tavria2
Готовлю для тебя подробный "ответ Чемберлену" .
Собираюсь выложить здесь свой проект просмотрщика картинок, если поглядишь и ткнешь носом в ошибки, буду признателен. Думаю, если его довести до ума, то проект может народу пригодиться.

А пока 2 мелких вопроса:
1)каким символом кусок кода перевести в комменты, для строки это двойной дефис, а для целого абзаца?
2)мне нужно условие: если в ThumbList ничего не выбрано, то...
Команды типа noselect не нашёл, а такой вариант работает криво:

nIndex = ThumbList.GetSelectedItems("img_list");
if nIndex ~= "CANCEL" then
Автор: vistadimix
Дата сообщения: 12.09.2007 19:47
Drusus


Цитата:
см. примеры использования Media Player Plugin здесь: http://www.azman.info/ams/

Спасибо большое! То что нужно, буду рассматривать скрипты в этом примере...


Цитата:
и в шапке "Реализация Play-листов для Винампа от BOObastis"

Это я посмотрел в первую очередь - очень познавательно, но не совсем то, что хотел...
А насчёт связи между окон не знаешь? По типу известных видео-плееров...
Автор: tavria2
Дата сообщения: 12.09.2007 20:05
Drusus

Цитата:
каким символом кусок кода перевести в комменты, для строки это двойной дефис, а для целого абзаца?

Код: --[[
здесь твой
комментарий
]]--
Автор: Drusus
Дата сообщения: 12.09.2007 20:05
vistadimix
Это в смысле 2 плавающих окна, как у BSPlayer? Не знаю. Может мэтры подскажут...
Автор: tavria2
Дата сообщения: 12.09.2007 20:29
vistadimix

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

Ты можешь создать два отдельных проекта и после запуска первого, произвести из него запуск второго проекта, но общее время загрузки обоих проектов будет желать лучшего. Прямой связи между проектами не получишь. Можно обмениваться данными через реестр или файл INI, для этого необходимо будет использование таймера в обоих проектах, что-бы через определенное время проверять реестр или файл INI на наличие новых данных.
Автор: vistadimix
Дата сообщения: 12.09.2007 20:47
Drusus, tavria2
Одним словом это невозможно... Ясно, огромное спасибо за ответ! Жаль конечно...
Автор: vistadimix
Дата сообщения: 13.09.2007 14:03
Добрый день!
У меня есть еще вопросик...
Допустим я сделал интернет-браузер, как мне сделать чтобы загрузку страницы отображал индикатор выполнения (он же прогресс-бар)? Я использую версию 6.0.5.0... Я просто не знаю как связать прогресс бар с загрузкой страницы. Буду очень признателен за обьяснение...
Автор: GOOSE
Дата сообщения: 13.09.2007 17:20
vistadimix не невозможно, а сложно и глючно. Это разные вещи
даю хинт: делаешь проект с маской, разбивающей окно проекта на два (зрительно, конечно )
В одном реализовываешь функции управления, в другом - проигрывания.
Юзер думает, что у него два окошка А на самом деле одно

vistadimix
ребят! Вы будете смотреть справку?! В хелпе есть примеры, там все понятно. Плюс качаешь любой пример с прогресс баром, и смотришь. Там ведь все просто. С отображением загрузки вебстранички посложнее, но поэкспериментировать можно


Добавлено:
tavria2
О! Оригинально!
Я пытался сделать в одном плагине путем удаления "лишних" строк... А так прикольно
Спасибо большое!
Автор: vistadimix
Дата сообщения: 13.09.2007 19:13
GOOSE


Цитата:
даю хинт: делаешь проект с маской, разбивающей окно проекта на два (зрительно, конечно )
В одном реализовываешь функции управления, в другом - проигрывания.
Юзер думает, что у него два окошка А на самом деле одно

Это то что пришло мне в голову с самого начала... Хотелось по-настоящему...
А насчет связи через .ini-файл... Это очень интересно... К сожалению, еще не придумал как...
Может кто подскажет как записывать и считывать из файла команды (насколько я понимаю)?


Цитата:
ребят! Вы будете смотреть справку?! В хелпе есть примеры, там все понятно. Плюс качаешь любой пример с прогресс баром, и смотришь. Там ведь все просто. С отображением загрузки вебстранички посложнее, но поэкспериментировать можно

В справку я заглядывал... Просто хотелось узнать мнение людей, которые может с таким сталкивались, которые знают как это сделать проще или какой-то альтернативный вариант, какую-нибудь хитрость...

Добавлено:
Кстати, буквально только что нашел примерчик, где все это реализовано...
Если кому интересно обьясняю...
1. Создаём два обьекта: веб-обьект и прогресс-бар.
2.В On Preload прописываем:

Код: Progress.SetCurrentPos("Plugin1", 0)
range = 0
Автор: tavria2
Дата сообщения: 13.09.2007 22:45
GOOSE

Цитата:
Я пытался сделать в одном плагине путем удаления "лишних" строк...

Это не очень хорошая идея. Пока ты вводишь в Input свой фильтр, при каждом введенном символе будет удаляться определенное кол-во строк - вроде-бы все правильно, ну а если прийдется редактировать твой фильтр...?! Например ты ошибся при вводе и начинаешь жать BackSpace, вот тут и начинается засада - тебе прийдется заново заполнять DataGrid и удалять не нужные строки и так при каждом нажатии BackSpace.

vistadimix

Цитата:
А насчет связи через .ini-файл... Это очень интересно... К сожалению, еще не придумал как...
Может кто подскажет как записывать и считывать из файла команды (насколько я понимаю)?

Я бы рекомендовал вместо INI использовать действия: Application.LoadValue и Application.SaveValue - это упрощенный вариант чтения/записи в/из реестр(а).

Например:
Cоздаем два проекта: "Panel.exe" (панель управления) и "Screen.exe" (окно вывода видео). Допустим в проекте "Panel.exe" нажимаем на кнопку "Пуск", которая должна запустить видео в "Screen.exe". Для этого в событии клика кнопки пишем:
Application.SaveValue("Video", "Screen", "START");
"Video" - имя раздела в реестре
"Screen" - параметр (данные для "Screen.exe")
"START" - значение параметра (комманда для "Screen.exe")
В таймере проекта "Screen.exe" проверяем значение параметра "Screen":
Application.LoadValue("Video", "Screen");
и далее в зависимости от полученного значения выполняем те или иные действия.
и т.д.
Автор: vistadimix
Дата сообщения: 14.09.2007 07:38
tavria2
Большое спасибо за совет! Обязательно попробую, только в "Screen.exe" нужно прописать какой-то цикл для проверки значений реестра? И еще, "Video" должно содержать полный путь к разделу?
Автор: GOOSE
Дата сообщения: 14.09.2007 07:55
vistadimix

Цитата:
только в "Panel.exe" нужно прописать какой-то цикл для проверки значений реестра?

Нет не нужно. На вкладке OnTimer пишутся скрипты, которые выполняются по таймеру
Периодичность ты сам регулируешь буквально двумя строчками кода Запуском и остановкой таймера
Page.StartTimer(1000); -- запуск таймера каждую секунду
Page.StopTimer(); -- остановка таймера
Автор: vistadimix
Дата сообщения: 14.09.2007 08:38
GOOSE
Точно! Совсем забыл о страничном таймере. Так же намного проще. Большое спасибо!
Автор: tavria2
Дата сообщения: 14.09.2007 08:44
vistadimix

Цитата:
Обязательно попробую, только в "Screen.exe" нужно прописать какой-то цикл для проверки значений реестра?

GOOSE правильно тебе советует, только там достаточно и одной строчки:
Page.StartTimer(100); -- запуск таймера который будет выполнять код в событии On Timer каждые 100 мсек.
Остановка таймера не нужна, т.к. постоянно нужно проверять реестр на наличие новых команд.
Проект "Panel.exe" тоже должен иметь таймер для отслеживания команд переданных из "Screen.exe".

Например:
Допустим воспроизведение закончилось и необходимо известить об этом проект "Panel.exe" для изменения состояния кнопки "Пуск/Пауза". Для этого в событии таймера "Screen.exe" проверяем текущее состояние видео и если видео завершилось - передаем команду в "Panel.exe":
Application.SaveValue("Video", "Panel", "FINISH");
В таймере проекта "Panel.exe" проверяем значение параметра "Panel":
Application.LoadValue("Video", "Panel");
и далее в зависимости от полученного значения выполняем те или иные действия.

Цитата:
И еще, "Video" должно содержать полный путь к разделу?

Ну, так передавай еще один параметр:
Application.SaveValue("Video", "FileName", "C:\\видео.avi");

P.S. Все ранее сказанное - это только теория и на практике все окажется гораздо сложнее... Если ты не боишся трудностей, то вперед.
Автор: vistadimix
Дата сообщения: 14.09.2007 09:09
tavria2
Еще раз спасибо за помощь! Трудности не люблю, но и не боюсь, так что буду пробовать)
Автор: vistadimix
Дата сообщения: 14.09.2007 21:50
Добрый вечер всем!
У меня возник очередной вопрос, который уже пол дня пытаюсь разрешить, но безуспешно...
Как сделать чтобы если в обьекте "Input" пусто, действие не выполнялось при нажатии на кнопку, которая например производит сложение введённого элемента с заданым?
Чтобы невозможно было ввести символы и буквы я назначил маску ####
Подскажите пожалуйста...
Автор: Drusus
Дата сообщения: 14.09.2007 21:59
tavria2, GOOSE, Zloy Gelud, Kindly

Закончил таки я свой просмотрщик картинок. Основан на ваших примерах и советах, всех очень благодарю за помощь. Для доводки до ума привлёк знакомого программиста, он поначалу долго плевался от ограничений скриптового языка APMS (говорил, например, что в любом нормальном языке пропорции картинок ставятся автоматом), но помог. Прошу посмотреть и дать комментарии.

Особенности:
1) в проекте прописаны пути к папкам с картинками (Autoplay\Images);
2) в подпапках Full и Small находятся оригиналы и превью с одинаковыми именами;
3) при показе страницы превью грузятся в Thumblist;
4) при этом создаются 4 массива с инфой о габаритах превью-картинок и позиции объекта Image (маска) для вывода картинок, а также вычисляются пропорции превью;
5) на основании полученных превью-пропорций в Image выводятся оригиналы (из-за этого немного, в пределах 1-1,5%, теряем в точности расчётов пропорций и чуть замедляем прелоад страницы, но выигрываем в скорости показа оригиналов);
6) также реализован просмотр в стандартной виндовой «Программе просмотра изображений и факсов».

ImageViewer with Duo Directories, 1Mb

P.S. Очередной вопрос, как же без него
Кто-нибудь использует Media Player Plugin? Там вроде всё понятно, но есть одна загвоздка – во всех виденных мной примерах плейлист для плагина формируется в ListBox, соответственно, в плагин файлы передаются не списком, а по одному, из-за чего не работают кнопки Preview-Next. Как заставить его брать файлы из стандартных плейлистов: wpl или m3u? Есть мысль, что для этого нужно вызвать C:\Program Files\Windows Media Player\wmplayer.exe с какой-то dll из той же папки, только вот с какой?
Автор: vistadimix
Дата сообщения: 14.09.2007 22:55
tavria2
GOOSE
Кстати, попробывал осуществить связь между двух окон... Работает исключительно! Скорость ответа высокая! Спасибо огромное за совет!
Автор: Devil91
Дата сообщения: 15.09.2007 09:23
tavria2

Цитата:
Работа с масками, уже неоднократно обсуждалась. Поищи в первой части форума.


Что-то я не нашел как применить маску к WEB объекту. Подскажите пожалуйста.
Автор: tavria2
Дата сообщения: 15.09.2007 15:58
Devil91

Цитата:
Что-то я не нашел как применить маску к WEB объекту. Подскажите пожалуйста.

Думать не хотим, ищем готовые решения?

Код: tProp = Web.GetProperties("Web1"); -- св-ва объекта Web
hWnd = tProp.WindowHandle; -- handle объекта Web
Window.SetMask(hWnd, _SourceFolder.."\\Autoplay\\Images\\MyMask.bmp", true, 0); -- применяем маску

Страницы: 1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768

Предыдущая тема: Symantec Endpoint Protection - SEP


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