oTree para video FUNCIONANDO

Post Reply
User avatar
Andrés González
Posts: 625
Joined: Thu Jan 19, 2006 10:45 am
Location: Mallorca

oTree para video FUNCIONANDO

Post by Andrés González »

Confieso no tener ni idea de como tratar los objetos Tree, nunca los he necesitado, pero he cogido un ejemplo del foro y es lo que estoy buscando para poder ver, añadir, borrar ficheros de video a mi aplicación. A ver si me podeis echar una mano en como seleccionar un fichero de los que muestra el tree.

Code: Select all

#include "FiveWin.ch"

function Main()
     Video(".\DAT\VID\"+"DOC000003"+".*")
Return nil


function Video()
    parameters x_file, x_msg

    local oDlg, oTree

    DEFAULT x_msg := "Fichero no localizado..."

    DEFINE DIALOG oDlg SIZE 500, 340 TITLE "Archivos de video relacionados"

   @ 0.5, 1 TREEVIEW oTree OF oDlg SIZE 100, 150

     @ 1, 27 BUTTON "&Ver" OF oDlg SIZE 40, 12 ;
     ACTION (msginfo(oTree:GetSelected():cPrompt) , oDlg:End()) DEFAULT         //(WinExec("CMD /C START /separate " + x_file,0)

     @ 3, 27 BUTTON "&Añadir " OF oDlg SIZE 40, 12 ;
     ACTION (CopyFile(cGetFile("*.mp4;*.mov;*.avi;*.mkv;*.flv;*.swf;*.m4v" ,"Selecciona fichero", , ".."), x_file ), oDlg:End())


    
     @ 5, 27 BUTTON "&Borrar " OF oDlg SIZE 40, 12 ;
     ACTION oDlg:End() DEFAULT

   @ 7, 27 BUTTON "&Abandonar" OF oDlg SIZE 40, 12 ;
     ACTION ( cValue := nil, oDlg:End() )


   ACTIVATE DIALOG oDlg CENTERED ;
      ON INIT FillTree( oTree, x_file )

return nil


function FillTree( oTree, cPath, oItem )

   local aInfo := Directory( cPath, "D" )
   local n, oNode


     xbrowse (aInfo)
   for n = 1 to Len( aInfo )
      if ! aInfo[ n ][ 1 ] $ ".,.."
         if oItem == nil
            oNode = oTree:Add( aInfo[ n ][ 1 ] )
         else
            oNode = oItem:Add( aInfo[ n ][ 1 ] )
         endif
         if "D" $ aInfo[ n ][ 5 ]
            FillTree( oTree, cPath + aInfo[ n ][ 1 ] + "\", oNode )
         endif
      endif
   next

return nil

Cómo puedo seleccionar el fichero que muestra y tengo seleccionado en el tree, he intentado algo como lo siguiente, pero no me da el correcto con el boton Ver:
msginfo(oTree:GetSelected():cPrompt)
Image
Last edited by Andrés González on Sat Dec 16, 2017 10:08 am, edited 2 times in total.
Saludos

Andrés González desde Mallorca
User avatar
cnavarro
Posts: 5792
Joined: Wed Feb 15, 2012 8:25 pm
Location: España

Re: oTree para video

Post by cnavarro »

Creo que es algo más y no he entendido bien porque a mi si me muestra el item seleccionado
Image
C. Navarro
Hay dos tipos de personas: las que te hacen perder el tiempo y las que te hacen perder la noción del tiempo
Si alguien te dice que algo no se puede hacer, recuerda que esta hablando de sus limitaciones, no de las tuyas.
User avatar
Andrés González
Posts: 625
Joined: Thu Jan 19, 2006 10:45 am
Location: Mallorca

Re: oTree para video

Post by Andrés González »

Gracias Cristobal ya me esta funcionando. Asi me muestra el video correctamente:

Code: Select all

@ 1, 27 BUTTON "&Ver" OF oDlg SIZE 40, 12 ;
     ACTION ( WinExec("CMD /C START /separate " + cFilePath(x_file) + oTree:GetSelected():cPrompt,0) , oDlg:End()) DEFAULT

 
Saludos

Andrés González desde Mallorca
User avatar
Andrés González
Posts: 625
Joined: Thu Jan 19, 2006 10:45 am
Location: Mallorca

Re: oTree para video FUNCIONANDO

Post by Andrés González »

Ya funciona todo, sirve para añadir ficheros de video (solo uno por cada tipo) a un directorio y relacionarlo con un registro por ejemplo:

Code: Select all

#include "FiveWin.ch"

function Main()
     //Video(".\DAT\VID\"+RTRIM(Q_T)+".*")
     Video(".\DAT\VID\"+"DOC000003"+".*")
Return nil


function Video()
    parameters x_file, x_msg

    local oDlg, oTree

    DEFAULT x_msg := "Fichero no localizado..."

    DEFINE DIALOG oDlg SIZE 500, 340 TITLE "Archivos de video relacionados"

   @ 0.5, 1 TREEVIEW oTree OF oDlg SIZE 100, 150

     @ 1, 27 BUTTON "&Ver" OF oDlg SIZE 40, 12 ;
     ACTION ( WinExec("CMD /C START /separate " + cFilePath(x_file) + oTree:GetSelected():cPrompt,0) , oDlg:End()) DEFAULT

     @ 3, 27 BUTTON "&Añadir " OF oDlg SIZE 40, 12 ;
     ACTION ( AddVideo(x_file), oDlg:End() )

     @ 5, 27 BUTTON "&Borrar " OF oDlg SIZE 40, 12 ;
     ACTION (iif(MsgYesNo("Deseas eliminar el fichero"),filedelete(cFilePath(x_file) + oTree:GetSelected():cPrompt),),oDlg:End())

   @ 7, 27 BUTTON "&Abandonar" OF oDlg SIZE 40, 12 ;
     ACTION ( cValue := nil, oDlg:End() )


   ACTIVATE DIALOG oDlg CENTERED ;
      ON INIT FillTree( oTree, x_file )

return nil


function FillTree( oTree, cPath, oItem )

   local aInfo := Directory( cPath, "D" )
   local n, oNode


     xbrowse (aInfo)
   for n = 1 to Len( aInfo )
      if ! aInfo[ n ][ 1 ] $ ".,.."
         if oItem == nil
            oNode = oTree:Add( aInfo[ n ][ 1 ] )
         else
            oNode = oItem:Add( aInfo[ n ][ 1 ] )
         endif
         if "D" $ aInfo[ n ][ 5 ]
            FillTree( oTree, cPath + aInfo[ n ][ 1 ] + "\", oNode )
         endif
      endif
   next

return nil

function AddVideo(x_file)

     Local cFile := cGetFile("*.mp4;*.mov;*.avi;*.mkv;*.flv;*.swf;*.m4v" ,"Selecciona fichero", , "C:\")
            x_file := cFilePath(x_file) + cFileNoExt(x_file) + "." + cFileExt(cFile)
            CopyFile(cFile, x_file)

Return nil


Image
Saludos

Andrés González desde Mallorca
Post Reply