Показ слайд-шоу

Clarion, Clarion 7

Модератор: Дед Пахом

Правила форума
При написании вопроса или обсуждении проблемы, не забывайте указывать версию Clarion который Вы используете.
А так же пользуйтесь спец. тегами при вставке исходников!!!
kreator
Ветеран
Сообщения: 3014
Зарегистрирован: 28 Май 2009, 14:54
Откуда: Москва

Показ слайд-шоу

Сообщение kreator » 24 Март 2017, 11:44

Заказчик сошёл с ума :mrgreen: . Просит во время бездействия программы показывать слайд-шоу из фото и видеоматериалов. Вопрос - винапишная функция mcisendstring может показывать скажем jpeg? С показом видео у меня вроде опыт есть. Хотелось бы одной функцией пользоваться. Или может есть вообще какой-нибудь красивый вариант - послать функции каталог с этими материалами, пусть сама всё делает?
We are hard at work… for you. :)

Ал
Ветеран
Сообщения: 751
Зарегистрирован: 08 Июль 2005, 5:48
Откуда: Россия

Показ слайд-шоу

Сообщение Ал » 24 Март 2017, 11:46

kreator писал(а):Заказчик сошёл с ума :mrgreen: . Просит во время бездействия программы показывать слайд-шоу из фото и видеоматериалов. Вопрос - винапишная функция mcisendstring может показывать скажем jpeg? С показом видео у меня вроде опыт есть. Хотелось бы одной функцией пользоваться. Или может есть вообще какой-нибудь красивый вариант - послать функции каталог с этими материалами, пусть сама всё делает?
хм... см папку c щтатными примерами...

Yufil
Ветеран движения
Сообщения: 1062
Зарегистрирован: 16 Май 2006, 13:34
Контактная информация:

Показ слайд-шоу

Сообщение Yufil » 24 Март 2017, 12:37

А в чём проблема? Сделай на окне поле ?Image и спрячь
Есть список файлов, ходишь по нему. Если файл - видео, то спрятать ?image и показывать видео
Если файл картинка - закрыть видео, присвоить картинке ?Image{Prop:Text} = имяфайла, показать картинку

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

Вот есть такая процедура

Код: Выделить всё

ImageInControl       PROCEDURE  (Long ImageControl,Long BaseControl,Long Border) ! Declare Procedure
!---------------------------------------------
!  Разместить ImageControl внутри BaseControl,
!  используя бордюр указанного размера 
!  Предполагается, что для ImageControl уже задан Prop:Text 
!---------------------------------------------
Loc:ImageWidth  LONG 
Loc:ImageHeight LONG 
Loc:BaseX       LONG 
Loc:BaseY       LONG 
Loc:BaseW       LONG 
Loc:BaseH       LONG 
Loc:WCoeff      REAL 
Loc:HCoeff      REAL 

Loc:NewPos      LONG,DIM(4) 

  CODE
  0{Prop:Pixels} = True 
  Hide(ImageControl)
  ImageControl{PROP:NoHeight} = True 
  ImageControl{PROP:NoWidth}  = True 
  Loc:ImageWidth = ImageControl{Prop:Width} 
  Loc:ImageHeight = ImageControl{Prop:Height} 
  If Loc:ImageHeight=0 
    0{Prop:Pixels} = FALSE   
    Return 
  END   
  GETPOSITION(BaseControl, Loc:BaseX, Loc:BaseY, Loc:BaseW, Loc:BaseH) 
  IF BaseControl = 0 
    Loc:BaseX = 0 
    Loc:BaseY = 0 
    Border = 0 
  ELSIF Loc:BaseW > Border * 4 
    Loc:BaseX += Border 
    Loc:BaseY -= Border 
    Loc:BaseW -= (Border*2)
    Loc:BaseH -= (Border*2) 
  END 
  Loc:WCoeff = Loc:BaseW / Loc:ImageWidth 
  Loc:HCoeff = Loc:BaseH / Loc:ImageHeight 
  IF Loc:Wcoeff > Loc:HCoeff 
     Loc:Wcoeff = Loc:HCoeff 
  ELSIF LOC:WCoeff < Loc:HCoeff 
     Loc:HCoeff = Loc:WCoeff 
  END 
  ! Width 
  Loc:NewPos[3] = Loc:ImageWidth * Loc:WCoeff 
  ! Height 
  Loc:NewPos[4] = Loc:ImageHeight * Loc:HCoeff 
  ! Xpos 
  Loc:NewPos[1] = Loc:BaseX + (Loc:BaseW - Loc:Newpos[3])/2 
  ! Ypos 
  Loc:NewPos[2] = Loc:BaseY + (Loc:BaseH - Loc:NewPos[4])/2   

  SetPosition(ImageControl, Loc:NewPos[1], Loc:NewPos[2], |
      Loc:NewPos[3], Loc:NewPos[4]) 
  Unhide(ImageControl) 
  0{Prop:Pixels} = FALSE     
К сожалению, у нас в презентации могут быть документы Word, Excel, PDF, Web-страницы. Тогда приходится открывать что-то подходящее, но это совсем другая история

kreator
Ветеран
Сообщения: 3014
Зарегистрирован: 28 Май 2009, 14:54
Откуда: Москва

Показ слайд-шоу

Сообщение kreator » 24 Март 2017, 13:12

Yufil писал(а): А в чём проблема? Сделай на окне поле ?Image и спрячь Есть список файлов, ходишь по нему. Если файл - видео, то спрятать ?image и показывать видео Если файл картинка - закрыть видео, присвоить картинке ?Image{Prop:Text} = имяфайла, показать картинку
Да, это не проблема, если другого варианта не найду.
Yufil писал(а): Здесь есть тонкость - как соблюсти пропорции картинки.
Тоже не проблема. Ещё нужно соблюсти пропорции видео. Не подскажете, как вытянуть размер видео из mcisendstring?
Ещё нужно отслеживать окончание видеофайла, потому что нужно ставить проигрыш на паузу. Тоже не проблема по идее.
В общем движений много. Ради баловства.
We are hard at work… for you. :)

Ал
Ветеран
Сообщения: 751
Зарегистрирован: 08 Июль 2005, 5:48
Откуда: Россия

Показ слайд-шоу

Сообщение Ал » 24 Март 2017, 13:42

kreator писал(а): Заказчик ... Просит во время бездействия программы показывать слайд-шоу из фото и видеоматериалов.
Ради баловства :?:

Yufil
Ветеран движения
Сообщения: 1062
Зарегистрирован: 16 Май 2006, 13:34
Контактная информация:

Показ слайд-шоу

Сообщение Yufil » 24 Март 2017, 13:47

Мы просто составляем файл, где указываем, в каком порядке и сколько секунд играть видео или показывать картинку, все равно же делать. Прошло время - поехали дальше. Насчёт видео - просто договорились о стандартной пропорции и от неё не отступаем. Если элементом является картинка или текст, то при подготовке слайд-шоу указываем ещё цвет фона и размеры (просто перемещая и растягивая окно)

В результате получается что-то вроде....

Код: Выделить всё

<?xml version="1.0" encoding="UTF-8" ?>
<Plan>
<Param Header="" AllowComment="2" Time="6002" System="Делопроизводство для секретаря" CommentPos="RU" />
<Topic  Name="Требования к оформлению документов"  Time="3001"  Type="SCR"  Color="0"  BackColor="0"  Id="A2_11" />
<Topic  Name="Экран"  Time="3001"  Type="PIC"  Color="0"  BackColor="0"  File="_snap.bmp" play="music.mp3" />
<Topic  Name="Размножение лишайников"  Time="3001"  Type="TXZ"  X="143" Y="134" W="392" H="186"  File="84050.txz"  Full="1" />
</Plan>
Давно это делал...

kreator
Ветеран
Сообщения: 3014
Зарегистрирован: 28 Май 2009, 14:54
Откуда: Москва

Показ слайд-шоу

Сообщение kreator » 25 Апрель 2017, 13:16

Дело пошло. Не подскажет кто - как mciSendString'у подсунуть другой файл (с видео, сейчас это меня интересует). Сейчас полностью останавливаю одно видео, потом открываю другое. При этом - не слишком приятная пауза.
We are hard at work… for you. :)

Yufil
Ветеран движения
Сообщения: 1062
Зарегистрирован: 16 Май 2006, 13:34
Контактная информация:

Показ слайд-шоу

Сообщение Yufil » 25 Апрель 2017, 14:43

Может быть, просто создать одну презентацию из картинок-фильмов. И показывать...

kreator
Ветеран
Сообщения: 3014
Зарегистрирован: 28 Май 2009, 14:54
Откуда: Москва

Показ слайд-шоу

Сообщение kreator » 26 Апрель 2017, 17:03

Yufil писал(а):
25 Апрель 2017, 14:43
Может быть, просто создать одну презентацию из картинок-фильмов. И показывать...
Это уж пусть заказчик делает.
Есть у mciSendString команда load (судя по описанию - то, что надо). Но что-то не идёт. На вот это:

Код: Выделить всё

LOC:mciCommand = 'load video "' & clip(LOC:FileName) & '" notify'
err# = mciSendString(LOC:mciCommand, LOC:mciReturn, 128, 0)
выдаёт 274 ошибку. Без "notify" то же самое. Даже не знаю, разбираться с этой ошибкой или нет
We are hard at work… for you. :)

Yufil
Ветеран движения
Сообщения: 1062
Зарегистрирован: 16 Май 2006, 13:34
Контактная информация:

Показ слайд-шоу

Сообщение Yufil » 26 Апрель 2017, 18:37

А зачем? Можно закрыть одно видео и открыть другое. Или открыть новое видео под другим именем (например, 'video2'), а потом через несколько секунд закрыть первое. Только опыт показывает, что при закрытии окна все видео надо закрыть.

kreator
Ветеран
Сообщения: 3014
Зарегистрирован: 28 Май 2009, 14:54
Откуда: Москва

Показ слайд-шоу

Сообщение kreator » 05 Декабрь 2018, 10:52

А никто не знает как показать демонстрацию PowerPoint, расширение ppsx. Программно. Может ActiveX какой есть?
We are hard at work… for you. :)

Yufil
Ветеран движения
Сообщения: 1062
Зарегистрирован: 16 Май 2006, 13:34
Контактная информация:

Показ слайд-шоу

Сообщение Yufil » 05 Декабрь 2018, 11:38

Сконвертировать в формат Flash. Flash показать ...
https://sites.google.com/site/multimedi ... t-vo-flash

Аватара пользователя
vic7tar
Активист
Сообщения: 147
Зарегистрирован: 09 Февраль 2017, 20:12

Показ слайд-шоу

Сообщение vic7tar » 05 Декабрь 2018, 11:48

kreator, а в сторону создания screen saver-а не смотрели?
C10, Win10x64

kreator
Ветеран
Сообщения: 3014
Зарегистрирован: 28 Май 2009, 14:54
Откуда: Москва

Показ слайд-шоу

Сообщение kreator » 05 Декабрь 2018, 12:14

Yufil писал(а):
05 Декабрь 2018, 11:38
Сконвертировать в формат Flash. Flash показать ...
https://sites.google.com/site/multimedi ... t-vo-flash
Ха! В PowerPoint'е можно конвертнуть в wmv. Просто и легко. Но есть чудные пользователи/заказчики :mrgreen: .
vic7tar писал(а):
05 Декабрь 2018, 11:48
kreator, а в сторону создания screen saver-а не смотрели?
Слайд-шоу показывается когда нет работы в программе. Но программа в это время находиться в ожидании считывания либо штрих-кода с бумажки либо со считывателя магнитных карт. Не уверен, что в режиме скринсэйвера смогу считать нужную инфу и вывести комп из сна.
We are hard at work… for you. :)

Yufil
Ветеран движения
Сообщения: 1062
Зарегистрирован: 16 Май 2006, 13:34
Контактная информация:

Показ слайд-шоу

Сообщение Yufil » 05 Декабрь 2018, 12:31

Была у нас давным-давно неудачная попытка - Office viewer ActiveX control называлось. Не держала правильный размер ActiveX, зависала после открытия, требовала наличия Office на клиентском компьютере - в общем, не срослось.
Поищи, мож починили ...

Ответить