Ayuda sobre TVIDEO y DIALOGS

Ayuda sobre TVIDEO y DIALOGS

Postby jll-fwh » Tue Feb 02, 2010 2:47 pm

Hola a todos:

Antes de nada, como depende de cada version de FWH/Harbour comento que estoy usando las siguientes versiones:

FWH/FWHX 8.12
HARBOUR 1.0.1 Rev 9361
BORLAND C++ 5.5.1

El problema es el siguiente:

Estoy añadiendo un modulo a un programa para almacenar una tabla de temas multimedia, y no logro que funcione perfectamente el iniciar un VIDEO ( AVI/MPG ) cuando se activa un Dialog. He probado tanto con TVIDEO de FW como la clase modificada por TheFull, pero nada, no hay forma.

En el codigo fuente que abajo adjunto, con la clase TVIDEO modificada por TheFull, en algunas veces arranca el video bien al inicar el dialogo, pero en las siguientes llamadas a la funcion, hay que mover el dialogo para que se pueda ver, sino mueves la ventana se oye pero no se ve.

He intentado tambien poner en ON INIT el metodo Move() para mover la ventana y incluso Move() para el objeto oVideo, pero unas veces funciona y otras NO. SINO MUEVES LA VENTANA, NADA.

Le ha pasado a alguien este caso?

Existe alguna forma de saber si un archivo se ha cargado ya en el control? de esta manera podria probar en añadir Move() al cargar el recurso a ver si asi funciona bien.

En este ejemplo tambien hay un BUG, cuando pulsan la tecla ESC y muestra el mensaje para saber si quieren salir del Dialogo, el video ya no se ve otra vez, a no se que hagas click sobre el objeto TVIDEO para ponerlo a pantalla completa, pero apartir de aqui, dentro del recuerso no se ve.

Este es el ejemplo:

Si alguien lo prueba, hay que compilar con la clase TVIDEO de Rafa carmona ( Thefull ).


/*------------------------------------------------------------------------------*/
Function VideosB( cFile, cTitle )
/*------------------------------------------------------------------------------*/

LOCAL oDlg, oVideo

DEFINE DIALOG oDlg TITLE cTitle FROM 1,1 TO 300,580 PIXEL

oDlg:lHelpIcon := .F.

@ -10, -10 VIDEO oVideo FILE cFile;
SIZE oDlg:nBottom, oDlg:nRight OF oDlg ADJUST

oVideo:bRClicKed := { || NIL }
oVideo:bLClicKed := { || oVideo:Stop(),;
oVideo:FullScreen(.T.),;
oVideo:Play() }

ACTIVATE DIALOG oDlg;
ON INIT ( oVideo:oMci := TMci():New( "MPEGVideo!", cFile, oVideo ),;
oVideo:oMci:lOpen( cFile,,oVideo ),;
oVideo:Play() ,;
oVideo:SetFocus(),;
oDlg:Center() );
VALID ( Salir( oDlg, oVideo ) )

oVideo:End()
DeleteObject( oVideo )

Return NIL
/*------------------------------------------------------------------------------*/
STATIC Function Salir( oDlg, oVideo )
/*------------------------------------------------------------------------------*/

If MsgYesNo( "¿ Desea cancelar la Reproducción ?",;
OemToAnsi( "Confirmar" ) )
Return( .T. )

End

Un saludo y gracias de antemano:
JLL
http://www.proyectos-meliana.es
Libreria: FWH/FWH1109 + Harbour 5.8.2 + Borland C++ 5.8.2
Editor de Recursos: PellecC
ADA, OURXDBU
S.O: XP / Win 7 /Win10
Blog: http://javierlloris.blogspot.com.es/
e-mail: javierllorisprogramador@gmail.com
User avatar
jll-fwh
 
Posts: 408
Joined: Fri Jan 29, 2010 8:14 pm
Location: Meliana - Valencia

Re: Ayuda sobre TVIDEO y DIALOGS

Postby Antonio Linares » Wed Feb 03, 2010 10:18 am

JLL,

Antes que nada, bienvenido a estos foros.

Puedes copiar aqui el código de la Clase TVideo de Rafa que estás usando ?

Tambien si pudieses proporcionar un enlace a uno de los videos que estés usando, ayudaría para probarlo. Gracias,
regards, saludos

Antonio Linares
www.fivetechsoft.com
User avatar
Antonio Linares
Site Admin
 
Posts: 42118
Joined: Thu Oct 06, 2005 5:47 pm
Location: Spain

Re: Ayuda sobre TVIDEO y DIALOGS

Postby jll-fwh » Wed Feb 03, 2010 8:39 pm

Hola Antonio:

Despues de un monton de horas, al final he decidido usar ActiveX, que es una pasada. Aunque he tenido problemas porque queria insertar el actvieX en un dialogo en vez de una ventana, al final como siempre en ON INIT funciona, pero si tengo un problema porque no me deja manipular ni las propiedades ni los metodos de ningun modo una vez cargado.

Aqui te dejo el codigo a ver si me puedes decir como hacer oActiveX:DO( "CLOSE" ) cuando cierre el DIALOG.

/*------------------------------------------------------------------------------*/
STATIC Function MostrarWMP( cFile, cTitle )
/*------------------------------------------------------------------------------*/

   LOCAL oDlg, oActiveX

   DEFINE DIALOG oDlg TITLE cTitle FROM 1,1 TO 300,580 PIXEL

      oDlg:lHelpIcon := .F.

   ACTIVATE DIALOG oDlg CENTERED;
            ON INIT ActivaVIDEO( oDlg, oActiveX, cFile );
            VALID ( .T. )

   DeleteObject( oActiveX )

Return NIL
/*------------------------------------------------------------------------------*/
STATIC Function ActivaVIDEO( oDlg, oActiveX, cFile )
/*------------------------------------------------------------------------------*/

   oActiveX = TActiveX():New( oDlg, "MediaPlayer.MediaPlayer.1",;
                              oDlg:nTop, oDlg:nLeft, oDlg:nRight, oDlg:nBottom )

   oActiveX:SetProp( "FileName", cFile )

Return NIL


un saludo
JLL
Libreria: FWH/FWH1109 + Harbour 5.8.2 + Borland C++ 5.8.2
Editor de Recursos: PellecC
ADA, OURXDBU
S.O: XP / Win 7 /Win10
Blog: http://javierlloris.blogspot.com.es/
e-mail: javierllorisprogramador@gmail.com
User avatar
jll-fwh
 
Posts: 408
Joined: Fri Jan 29, 2010 8:14 pm
Location: Meliana - Valencia

Re: Ayuda sobre TVIDEO y DIALOGS

Postby jll-fwh » Wed Feb 03, 2010 8:44 pm

Se me ha olvidado comentar que ya he probado hacer:

VALID ( oActiveX:DO( "Stop" ), .T. )

Da un error:

Stack Calls
===========
Called from: => DO(0)
Called from: .\PROC2003.PRG => (b)MOSTRARWMP(0)
Called from: => TDIALOG:END(520)
Called from: => TDIALOG:COMMAND(419)
Called from: => TWINDOW:HANDLEEVENT(0)
Called from: => TDIALOG:HANDLEEVENT(922)
Called from: => DIALOGBOXINDIRECT(0)
Called from: => TDIALOG:ACTIVATE(273)
Called from: .\PROC2003.PRG => MOSTRARWMP(0)
Called from: .\PROC2003.PRG => MEDIAXWMP(0)
Called from: .\PROC2001.PRG => (b)TABLAMULTIMEDIA(0)
Called from: => TVMENU:EVALACTION(0)
Called from: => TVMENU:LBUTTONUP(0)
Called from: => TWINDOW:HANDLEEVENT(0)
Called from: => TCONTROL:HANDLEEVENT(1454)
Called from: => TVMENU:HANDLEEVENT(0)
Called from: .\WINDOW.PRG => _FWH(0)
Called from: => WINRUN(0)
Called from: => TMDIFRAME:ACTIVATE(0)
Called from: .\ALERT.PRG => MAINOPENWND(0)
Called from: .\ALERT.PRG => MAIN(0)

un saludo
JLL
Libreria: FWH/FWH1109 + Harbour 5.8.2 + Borland C++ 5.8.2
Editor de Recursos: PellecC
ADA, OURXDBU
S.O: XP / Win 7 /Win10
Blog: http://javierlloris.blogspot.com.es/
e-mail: javierllorisprogramador@gmail.com
User avatar
jll-fwh
 
Posts: 408
Joined: Fri Jan 29, 2010 8:14 pm
Location: Meliana - Valencia

Re: Ayuda sobre TVIDEO y DIALOGS

Postby Daniel Garcia-Gil » Thu Feb 04, 2010 12:27 pm

Saudos...


en el codigo tienes un error

ActivaVIDEO( oDlg, oActiveX, cFile )

o pasas oActiveX por referencia o haces asi oActiveX := ActivaVIDEO( oDlg, cFile )
si usas la version actual de fivewin puedes acceder a los propiedades directamente

oActiveX:FileName = cFile
oActiveX:Stop()

SetProp, Do... se han mantenido por compatibilidad en versiones anteriores
User avatar
Daniel Garcia-Gil
 
Posts: 2365
Joined: Wed Nov 02, 2005 11:46 pm
Location: Isla de Margarita

Re: Ayuda sobre TVIDEO y DIALOGS

Postby jll-fwh » Thu Feb 04, 2010 2:35 pm

Hola Daniel:

Efectivamente era eso. Me enceque y no he visto este fallo tan tonto. Muchas gracias.

Un saludo. Gracias.
JLL
Libreria: FWH/FWH1109 + Harbour 5.8.2 + Borland C++ 5.8.2
Editor de Recursos: PellecC
ADA, OURXDBU
S.O: XP / Win 7 /Win10
Blog: http://javierlloris.blogspot.com.es/
e-mail: javierllorisprogramador@gmail.com
User avatar
jll-fwh
 
Posts: 408
Joined: Fri Jan 29, 2010 8:14 pm
Location: Meliana - Valencia

Re: Ayuda sobre TVIDEO y DIALOGS

Postby Daniel Garcia-Gil » Thu Feb 04, 2010 8:05 pm

Disculpa otra observacion


aunque no da error DeleteObject( ) no te sirve para eliminar el objeto active pues esta se usa para liberar objetos GDI, a menos que tengas una funcion propia llamada asi, lo cual te causaria problemas porque entonces no se liberarian los GDI correctamente
User avatar
Daniel Garcia-Gil
 
Posts: 2365
Joined: Wed Nov 02, 2005 11:46 pm
Location: Isla de Margarita

Re: Ayuda sobre TVIDEO y DIALOGS

Postby jll-fwh » Fri Feb 05, 2010 3:36 am

Hola Daniel

Gracias, es una construmbre el utilizar el DeleteObject(), ya ha sido borrada.

Ahora estoy intentando poder visualizar tambie ficheros de QuickTime (.MOV, etc ) pero de momento solo he logrado que se muestre pero no activar el video.

Seguro que lo estoy haciendo mal, porque no se ni siquiera si el .ocx es el adecuado. En internet no he localizado informacion sobre esto.

Por si alguien lo lee, dejo el codigo de la funcion¨:



/*------------------------------------------------------------------------------*/
STATIC Function MostrarQT( cFile, cTitle )
/*------------------------------------------------------------------------------*/

*/ Funcion ActiveX para visualizar el QT ( Quick Time ) dentro de un Dialogo. */

LOCAL oDlg, oActiveX

DEFINE DIALOG oDlg TITLE cTitle FROM 1,1 TO 300,580 PIXEL

oDlg:lHelpIcon := .F.

ACTIVATE DIALOG oDlg CENTERED;
ON INIT ( oActiveX := ActivaQT( oDlg, oActiveX, cFile ) );
VALID ( oActiveX:DO( "Stop" ), oActiveX:End(), .T. )

Return NIL
/*------------------------------------------------------------------------------*/
STATIC Function ActivaQT( oDlg, oActiveX, cFile )
/*------------------------------------------------------------------------------*/

oActiveX = TActiveX():New( oDlg, "QuickTime.QuickTime.9",;
oDlg:nTop, oDlg:nLeft, oDlg:nRight, oDlg:nBottom )

oActiveX:DO( "SetMovieName", cFile )

Return( oActiveX )

De nuevo gracias Daniel, estoy empezando a usar ActiveX con estas funciones, de momento no tengo ni idea relamente como funcionan.

Un saludo
JLL
Libreria: FWH/FWH1109 + Harbour 5.8.2 + Borland C++ 5.8.2
Editor de Recursos: PellecC
ADA, OURXDBU
S.O: XP / Win 7 /Win10
Blog: http://javierlloris.blogspot.com.es/
e-mail: javierllorisprogramador@gmail.com
User avatar
jll-fwh
 
Posts: 408
Joined: Fri Jan 29, 2010 8:14 pm
Location: Meliana - Valencia

Re: Ayuda sobre TVIDEO y DIALOGS

Postby Daniel Garcia-Gil » Fri Feb 05, 2010 12:16 pm

Hola...


creo que deberias documentarte en todos los eventos y propiedades de los controles activex que quieras usas, imagino que te debe faltar usar un "PLAY", no lo se, FWH solo te brinda la herramienta (TActiveX) para enlazarte con el control
User avatar
Daniel Garcia-Gil
 
Posts: 2365
Joined: Wed Nov 02, 2005 11:46 pm
Location: Isla de Margarita

Re: Ayuda sobre TVIDEO y DIALOGS

Postby jll-fwh » Fri Feb 05, 2010 2:11 pm

Hola DanieL.

Existe un metodo PLAY, aunque en el codigo que copie no esta, es el que arranca supuestamente el video, "lo borraria sin darme cuenta al copiarlo", no lo se, pero efectivamente no esta en la copia que puse aqui.

Otro pequeño detalle se me escapa para que no arranque el video. a ver si alguien lo ha probado y comenta donde esta el fallo.

Para saber las propiedades y metodos que usa un activeX uso el programa activeXXX que es FREE.

oActiveX:DO( "Play" )

Un saludo
JLL
Libreria: FWH/FWH1109 + Harbour 5.8.2 + Borland C++ 5.8.2
Editor de Recursos: PellecC
ADA, OURXDBU
S.O: XP / Win 7 /Win10
Blog: http://javierlloris.blogspot.com.es/
e-mail: javierllorisprogramador@gmail.com
User avatar
jll-fwh
 
Posts: 408
Joined: Fri Jan 29, 2010 8:14 pm
Location: Meliana - Valencia

Re: Ayuda sobre TVIDEO y DIALOGS

Postby jll-fwh » Fri Feb 05, 2010 2:17 pm

En estos momentos las funciones estan asi:


/*------------------------------------------------------------------------------*/
STATIC Function MostrarQT( cFile, cTitle )
/*------------------------------------------------------------------------------*/

*/ Funcion ActiveX para visualizar el QT ( Quick Time ) dentro de un Dialogo. */

*/ DE MOMENTO NO FUNCIONA */

LOCAL oDlg, oActiveX

DEFINE DIALOG oDlg TITLE cTitle FROM 1,1 TO 300,580 PIXEL

oDlg:lHelpIcon := .F.

ACTIVATE DIALOG oDlg CENTERED;
ON INIT ( oActiveX := ActivaQT( oDlg, oActiveX, cFile ) );
VALID ( oActiveX:DO( "Stop" ), oActiveX:End(), .T. )

Return NIL
/*------------------------------------------------------------------------------*/
STATIC Function ActivaQT( oDlg, oActiveX, cFile )
/*------------------------------------------------------------------------------*/

oActiveX = TActiveX():New( oDlg, "QuickTime.QuickTime.9",;
oDlg:nTop, oDlg:nLeft, oDlg:nRight, oDlg:nBottom )

oActiveX:SetProp( "SetMovieName", cFile )
oActiveX:DO( "Play" )

Return( oActiveX )
Libreria: FWH/FWH1109 + Harbour 5.8.2 + Borland C++ 5.8.2
Editor de Recursos: PellecC
ADA, OURXDBU
S.O: XP / Win 7 /Win10
Blog: http://javierlloris.blogspot.com.es/
e-mail: javierllorisprogramador@gmail.com
User avatar
jll-fwh
 
Posts: 408
Joined: Fri Jan 29, 2010 8:14 pm
Location: Meliana - Valencia


Return to FiveWin para Harbour/xHarbour

Who is online

Users browsing this forum: Google [Bot] and 44 guests