Agregar la extensión automáticamente a cGetFile32()

Agregar la extensión automáticamente a cGetFile32()

Postby quique » Wed May 01, 2013 5:10 am

Como puedo indicarle a cGetFile32() que le ponga automáticamente la extensión al archivo.

Según encontré en internet sería con la bandera:

#define OFN_ADDEXTENSION 32

pero, o no he atinado donde meterla, o no funciona.
Saludos
Quique
User avatar
quique
 
Posts: 408
Joined: Sun Aug 13, 2006 5:38 am

Re: Agregar la extensión automáticamente a cGetFile32()

Postby Patricio Avalos Aguirre » Wed May 01, 2013 2:28 pm

hola

la funcion esta en

C:\fwh\source\function\dlgs32.prg
C:\fwh\source\winapi\getfile.c


deberas probar, yo no lo he probado
Saludos
Patricio

__________________________________________________________________
Version: Harbour 3.2.0dev (r1307082134),Compiler: Borland C++ 5.8.2 (32-bit)
PCode version: 0.3, FWH 13.2
http://www.sialm.cl
User avatar
Patricio Avalos Aguirre
 
Posts: 1059
Joined: Fri Oct 07, 2005 1:56 pm
Location: La Serena, Chile

Re: Agregar la extensión automáticamente a cGetFile32()

Postby quique » Thu May 02, 2013 3:13 am

Gracias, pero no me sirvió de mucho, no se C, asi que ni para monitorear, aunque lo intenté con la función cgetfile de fivewin y con la que pusieron en el foro para multiples archivos, con ninguna funcionó.
Saludos
Quique
User avatar
quique
 
Posts: 408
Joined: Sun Aug 13, 2006 5:38 am

Re: Agregar la extensión automáticamente a cGetFile32()

Postby cnavarro » Thu May 02, 2013 8:03 am

Quique
A mi la funcion cGetFile32( "*.PRG", "Fichero", 1, ".\" ) me devuelve el fichero seleccionado con el PATH y la Extension del fichero
Si lo que necesitas es que ponga la extension del fichero seleccionado en el dialogo de seleccion, creo que eso es una propiedad de las carpetas de Windows ("Ocultar Extensiones de Ficheros conocidos" o algo asi.
Seguramente no te he entendido lo que necesitas
Un saludo
Cristobal Navarro
Hay dos tipos de personas: las que te hacen perder el tiempo y las que te hacen perder la noción del tiempo
El secreto de la felicidad no está en hacer lo que te gusta, sino en que te guste lo que haces
User avatar
cnavarro
 
Posts: 6501
Joined: Wed Feb 15, 2012 8:25 pm
Location: España

Re: Agregar la extensión automáticamente a cGetFile32()

Postby quique » Thu May 02, 2013 12:45 pm

Nop, lo que necesito es que me ponga la extensión automáticamente, por ejemplo, si en word indico que el archivo se llame miArchivo, lo guarda automáticamente con la extensión miArchivo.doc o la extensión del formato que haya seleccionado en el dialogo de buscar archivo.

En el caso de fivewin no le pone la extensión, y no se que extensión es la que se seleccione, ahorita si el archivo no tiene extensión se la pongo manualmente, pero no puedo dar a escoger extensiones porque no sabría cual poner.

Según lo que he encontrado en internet, debería poderse pero con fivewin no lo he conseguido.
User avatar
quique
 
Posts: 408
Joined: Sun Aug 13, 2006 5:38 am

Re: Agregar la extensión automáticamente a cGetFile32()

Postby Antonio Linares » Thu May 02, 2013 1:31 pm

Quique,

En FWH/source/winapi/getfile.c busca por:

ofn.Flags

y modificalo asi:

Code: Select all  Expand view
  ofn.Flags           = OFN_PATHMUSTEXIST | OFN_NOCHANGEDIR | OFN_ADDEXTENSION |
                        IF( bSave, OFN_HIDEREADONLY, 0 ) |
                        IF( bLongNames, OFN_LONGNAMES, 0 );
regards, saludos

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

Re: Agregar la extensión automáticamente a cGetFile32()

Postby csincuir » Thu May 02, 2013 1:34 pm

Quique,
Y ya probaste de esta forma:

Code: Select all  Expand view
cFile := cGetFile(    "HOJA EXCEL (*.xls)| *.xls|"  ;
                            ,"Por Favor Seleccione el archivo xls" )


Saludos.

Carlos.
csincuir
 
Posts: 396
Joined: Sat Feb 03, 2007 6:36 am
Location: Guatemala

Re: Agregar la extensión automáticamente a cGetFile32()

Postby quique » Thu May 02, 2013 2:04 pm

Antonio, no funciona, sigue devolviendo nombre sin extensión.

Carlos, sip, lo hago de manera parecida, la idea es que si le pongo como nombre hoja, automáticamente me devuelva hoja.xls.
Saludos
Quique
User avatar
quique
 
Posts: 408
Joined: Sun Aug 13, 2006 5:38 am

Re: Agregar la extensión automáticamente a cGetFile32()

Postby Armando » Thu May 02, 2013 3:59 pm

Quique:

Tengo esto y me devuelve el archivo y su extensión
Code: Select all  Expand view

        REDEFINE BTNGET oGet VAR cFile ID 100 OF oDlg RESOURCE "Buscar" UPDATE;
            PICTURE "@!K";
            ACTION (cFile := ALLTRIM(cGetFile("*.Txt","Seleccione el archivo a importar",1,".\Importar")),;
            oDlg:UPDATE())
 


Saludos
SOI, s.a. de c.v.
estbucarm@gmail.com
http://www.soisa.mex.tl/
http://sqlcmd.blogspot.com/
Tel. (722) 174 44 45
Carpe diem quam minimum credula postero
User avatar
Armando
 
Posts: 3068
Joined: Fri Oct 07, 2005 8:20 pm
Location: Toluca, México

Re: Agregar la extensión automáticamente a cGetFile32()

Postby quique » Thu May 02, 2013 4:44 pm

aunque no le indiques la extensión del archivo?

por ejemplo, en lugar de seleccionar el archivo con el ratón escribes en donde indicas el archivo miArchivo, te devuelve "miArchivo.txt" o simplemente "miArchivo"
User avatar
quique
 
Posts: 408
Joined: Sun Aug 13, 2006 5:38 am

Re: Agregar la extensión automáticamente a cGetFile32()

Postby Armando » Thu May 02, 2013 4:54 pm

Quique:

Tienes razón, si escribo solo el nombre no me devuelve la extensión :shock:

Saludos
SOI, s.a. de c.v.
estbucarm@gmail.com
http://www.soisa.mex.tl/
http://sqlcmd.blogspot.com/
Tel. (722) 174 44 45
Carpe diem quam minimum credula postero
User avatar
Armando
 
Posts: 3068
Joined: Fri Oct 07, 2005 8:20 pm
Location: Toluca, México

Re: Agregar la extensión automáticamente a cGetFile32()

Postby karinha » Thu May 02, 2013 7:15 pm

Hola, mira se ayuda con este ejemplo: Graba en c:\fwh..\samples y compila.

Code: Select all  Expand view

// Shows how to change from Oem to Ansi and viceversa

/*
ÚÄ Programa ÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ¿
³   Aplicaci¢n: Cambia de Formato Oem a Ansi y viceversa                   ³
³      Fichero: DBFW.PRG                                                   ³
ÀÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÙ
*/


#include "fivewin.ch"

#define OEM_TO_ANSI      1
#define ANSI_TO_OEM      2
#define MAX_CHECK       10

Static oWnd, oMeter, oAtoO, oOtoA
Static nActual := 0

//----------------------------------------------------------------------------//

FUNCTION Main()

     LOCAL oIcon

     DEFINE ICON oIcon RESOURCE "ICON_DBFW"

     //MsgInfo( If( IsAnsi( "Hola" ), "Ok", "No" ) )

     DEFINE WINDOW oWnd FROM 1, 1 TO 12, 60 ;
          TITLE OemToAnsi("Conversi¢n de Ficheros DBF") ;
          ICON oIcon ;
          BORDER NONE ;
          COLOR "B/W" ;
          NOZOOM

     WndCenter(oWnd:hWnd)

     ACTIVATE WINDOW oWnd ;
          ON INIT Showcontrols()

RETURN (NIL)

//----------------------------------------------------------------------------//

STATIC FUNCTION ShowControls()

     @ 02,01 METER oMeter VAR nActual TOTAL 100 ;
          SIZE 455,20 ;
          OF oWnd

     @ 5,12 BUTTON oOtoA PROMPT "&Oem to Ansi" ;
           DEFAULT ;
           OF oWnd ;
           ACTION Conversion(OEM_TO_ANSI) ;
           SIZE 100,25

     @ 5,40 BUTTON oAtoO PROMPT "&Ansi to Oem" ;
           DEFAULT ;
           OF oWnd ;
           ACTION Conversion(ANSI_TO_OEM) ;
           SIZE 100,25


RETURN (NIL)

//----------------------------------------------------------------------------//

STATIC FUNCTION Conversion(nType)

     LOCAL aData
     LOCAL bBlock
     LOCAL cFichero, cCaption
     LOCAL nTotal, nMeter

     cFichero := GetFichero()

     IF empty(cFichero)
          RETURN NIL
     ENDIF

     oAtoO:disable()
     oOtoA:disable()

     cCaption := oWnd:cCaption

     oWnd:cTitle({"Oem to Ansi","Ansi to Oem"} [nType] + ;
                 ":  ["+SubStr(cFichero, Rat("\",cFichero)+1)+"]")


     IF nType == OEM_TO_ANSI

          bBlock := {|val,elem| iif(Valtype(Val)=="
C"             ,;
                                    Fieldput(elem,OemtoAnsi(val)) ,;
                                    NIL ) }

     ELSE

          bBlock := {|val,elem| iif(Valtype(Val)=="
C"             ,;
                                    Fieldput(elem,AnsitoOem(val)) ,;
                                    NIL ) }

     ENDIF

     USE (cFichero) NEW EXCLUSIVE
     SET INDEX TO

     IF CheckRec(nType,cFichero)

          oWnd:cTitle(cCaption)
          oAtoO:enable()
          oOtoA:enable()

          CLOSE ALL
          RETU NIL

     ENDIF

     GO TOP

     nTotal := lastrec()

     oMeter:nTotal = RecCount()

     DO WHILE !EOF()

          aData := Scatter()

          Aeval(aData ,bBlock)

          SKIP

          oMeter:Set( RecNo() )
          SysRefresh()
     ENDDO

     GO TOP

     BROWSE()

     CLOSE ALL

     MsgBeep()

     oMeter:Set(0)
     oWnd:cTitle(cCaption)
     oAtoO:enable()
     oOtoA:enable()

RETURN (NIL)

//----------------------------------------------------------------------------//

STATIC FUNCTION GetFichero()

     LOCAL cFile //:= "
"

     LOCAL cDbfNome := "
CUSTOMER" + ".DBF"

     cFile    := cFilePath( cDbfNome ) //+ cFileNoExt( cDbfNome )
     cFile    := ALLTRIM( cFile )

     /*
     cFile := cGetFile("
*.dbf"           ,;
                       "
Elija la base de datos")
     */

     cFile := cGetFile( cDbfNome )

     IF "
*"$cFile .OR. !file(cFile)
          cFile := "
"
     ENDIF

Return (cFile)

//----------------------------------------------------------------------------//

STATIC Function scatter()

     local fvals := {} , fnum := 1

     Asize(fvals,fcount())

     aeval(fvals, {|| fvals[fnum++] := fieldget(fnum)})

Return(fvals)

//----------------------------------------------------------------------------//

STATIC Function CheckRec(nType, cFichero)


     LOCAL aData
     LOCAL bBlock
     LOCAL nCounter := 0
     LOCAL lAlert   := .F.

     IF nType == OEM_TO_ANSI

          bBlock := {|val| iif(Valtype(Val)=="
C" .AND. IsAnsi(val) ,;
                               lAlert := .T.                       ,;
                               NIL ) }

     ELSE

          bBlock := {|val| iif(Valtype(Val)=="
C" .AND. IsOem(val)  ,;
                               lAlert := .T.                       ,;
                               NIL ) }

     ENDIF

     CursorWait()

     DO WHILE !Eof() .OR. nCounter <= MAX_CHECK

          aData := Scatter()

          Aeval(aData ,bBlock)

          IF lAlert
               EXIT
          ENDIF

          SKIP

          nCounter++

     ENDDO

     GO TOP

     CursorArrow()

     IF lAlert

          lAlert := !MsgYesNo(OemtoAnsi("
¨Ya esta en formato ")+;
                              {"
Ansi","Oem"}[nType]+", desea Continuar?",;
                              cFichero)

     ENDIF

RETURN lAlert

//----------------------------------------------------------------------------//


João Santos - São Paulo - Brasil - Phone: +55(11)95150-7341
User avatar
karinha
 
Posts: 7261
Joined: Tue Dec 20, 2005 7:36 pm
Location: São Paulo - Brasil

Re: Agregar la extensión automáticamente a cGetFile32()

Postby quique » Thu May 02, 2013 8:53 pm

Mismo resultado, no pone extensión por defecto, aunque con solo ver el código era de esperar, lo probé tal como lo pusiste y también utilizando el cGetFile que tienes comentado.

Tal como lo tienes es más lógico que no la ponga, porque utilizas un nombre completo, en el segundo caso se utiliza *.dbf, que sería la extensión tendría que añadir si no se especifica, pero no lo hace.
Saludos
Quique
User avatar
quique
 
Posts: 408
Joined: Sun Aug 13, 2006 5:38 am

Re: Agregar la extensión automáticamente a cGetFile32()

Postby Armando » Thu May 02, 2013 9:19 pm

Quique:

Una chapuza, si después de recibir el nombre del archivo validas si trae extensión, en caso de que
no la traiga, se la pegas !.

Saludos
SOI, s.a. de c.v.
estbucarm@gmail.com
http://www.soisa.mex.tl/
http://sqlcmd.blogspot.com/
Tel. (722) 174 44 45
Carpe diem quam minimum credula postero
User avatar
Armando
 
Posts: 3068
Joined: Fri Oct 07, 2005 8:20 pm
Location: Toluca, México

Re: Agregar la extensión automáticamente a cGetFile32()

Postby quique » Thu May 02, 2013 9:42 pm

Eso es fáci si solamente tienes una opción ("Proyectos (*.pry)|*.pry|Todos|*.*") ¿pero que pasa si tienes varias opciones ("Fuentes (*.prg)|*.prg|Cabecera (*.ch)|*.ch|Recursos (*.rc)|*.rc|Todos|*.*")?
Saludos
Quique
User avatar
quique
 
Posts: 408
Joined: Sun Aug 13, 2006 5:38 am


Return to FiveWin para Harbour/xHarbour

Who is online

Users browsing this forum: No registered users and 14 guests