Visualizzazione dei risultati da 1 a 10 su 10
  1. #1
    Utente di HTML.it
    Registrato dal
    Jul 2006
    Messaggi
    41

    Aprire una cartella fissa da vb6

    salve
    Per andare direttamente in una precisa cartella, automaticamente cliccando
    su un commbutton, io uso il codice seguente. Per esmpio per aprire subito la
    cartella 'foto', che si trova pure nella cartella di installazione:
    ---
    Private Sub Command1_Click()
    Dim Slash As String
    If Right(App.Path, 1) <> "\" Then Slash = "\"
    CommonDialog1.InitDir = App.Path & Slash & "foto"
    CommonDialog1.ShowOpen
    -------
    Questo codice funziona. Ma...
    se io dopo essere stato nella cartella'foto', vado manualmente in un'altro posto
    sul disco, allora, cliccando sul commbutton, non vado più automaticamente nella cartella fissa'foto', ma ritorno dove sono stato l'ultima volta.

    Come posso fare/aggiungere per far si che , cliccando sul commbutt io venga sempre portato direttamente a 'foto' anche se poi per un momento sono stato momentaneamente in un'altra cartella?

    grazie.pazienza

  2. #2
    Utente di HTML.it L'avatar di LMondi
    Registrato dal
    Sep 2004
    Messaggi
    1,291
    Ciao,
    dipende dalla proprietà Flags della ComDial in particolare cdlOFNNoChangeDir ed anche da come hai impostato il codice. A tale proposito ti posto un esempio per trovarti sempre nella Dir desiderata:

    codice:
    With FrmProva.CommonDialog1
                .CancelError = True             ' Imposta CancelError su True
            On Error GoTo ErrHandler
                .Filter = "File di programma (*.csv)|*.csv|Documenti di Testo (*.txt)|*.txt|" & _
                "Tutti i Files (*.*)|*.*"
                .FilterIndex = 1
                .DefaultExt = "csv"
                .Flags = cdlOFNNoChangeDir Or cdlOFNFileMustExist Or cdlOFNNoReadOnlyReturn
                .InitDir = App.Path & "\...\....\"
                .DialogTitle = "Selezionare il file da aprire"
                .FileName = FrmProva.CommonDialog1.FileName
                .ShowOpen
    
    ErrHandler:
                If Err.Number = 32755 Then      ' E' stato scelto Annulla
                    Exit Sub
                    Else: boolErrAnnCO1 = False
                End If
                
                FileName = .FileName
                FileTitle = .FileTitle
                ' Visualizza nome e percorso del file in uso nel Titolo della Frm:
                MDIFrm.Caption = " ::::::::: - " & FrmProva.CommonDialog1.FileName
                FileNum = FreeFile()
        
                ' Esce se l'utente ha fatto clic su annulla:
                If Len(FileName) = 0 Then
                    Exit Sub
                End If
            End With
    LM

  3. #3
    Utente di HTML.it
    Registrato dal
    Jul 2006
    Messaggi
    41
    grazie per lintervento, Lmondi. Ho testato il tuo codice, nonché ho effettuato poi le stesse impostazioni nella propertje del commdialog, ma purtroppo si ripete il fatto:

    Inzialmente vengo ben condotto nella directory desiderata. Ma poi, se io vado anche per un solo secondo in un'altra directory diversa, cliccando sul butt non vado piu dove si dovrebbe ma dove sono stato l'ultima volta.

    Si potrebbe risolvere secondo me mettendo all'inizio del codice del butt per andare in quella certa cartella, come un reset, fargli dimenticare cioé dove é stato poco fa
    (scusa il paragone poco...professionale)


    pazienza

  4. #4
    Utente di HTML.it L'avatar di LMondi
    Registrato dal
    Sep 2004
    Messaggi
    1,291
    "... se io vado anche per un solo secondo in un'altra directory ..."
    Ma come selezioni l'altra Dir, sempre con una commonDialog ?
    Se è così togli il Flag "cdlOFNNoChangeDir Or " che in effetti apre la CD sull'ultima Dir aperta.
    Il "Reset" dovrebbe avvenire con il comando .InitDir = App.Path & "\...\....\" che dovrebbe impostare il percorso della CD.
    LM

  5. #5
    Utente di HTML.it
    Registrato dal
    Jul 2006
    Messaggi
    41
    Rispiego tutto dall'inizio:
    Sotto un commbutt ho il codice
    --------------
    Private Sub Command1_Click()
    Dim Slash As String
    If Right(App.Path, 1) <> "\" Then Slash = "\"
    CommonDialog1.InitDir = App.Path & Slash & "foto"
    CommonDialog1.ShowOpen
    end sub
    ------------
    cliccando sul button vengo portato alla cartella 'foto'. Fin qui tutto ok.
    SE io carico qualcosa in 'foto' e vado via, se poi clicco nuovamente sul button ritorno ancora a 'foto'. Ancora ok

    Il problema comincia se io, trovandomi in 'foto', cambio idea e seleziono un'altra cartella sul disco (ad esmpio 'documenti')e da questo carico qualcosa.

    La prossima volta che clicco sul button per andare (logicamente) su 'foto' , a questo punto vengo portato in 'documenti' e non più direttamente su 'foto'anche se sotto il button il codice é rimasto uguale ed indica ancora 'foto'
    questo é il problema.

    E' da tempo che cerco di risolverlo, in vari programmi.

    pazienza

  6. #6
    Utente di HTML.it L'avatar di LMondi
    Registrato dal
    Sep 2004
    Messaggi
    1,291
    Scusami ma non mi hai risposto: "Il problema comincia se io, trovandomi in 'foto', cambio idea e seleziono un'altra cartella sul disco (ad esmpio 'documenti')e da questo carico qualcosa."
    Come selezioni un'altra cartella, dalla finestra aperta con la CommDial che normalmente seleziona la Dir Foto, o in quale altro modo?
    LM

  7. #7
    Utente di HTML.it
    Registrato dal
    Jul 2006
    Messaggi
    41
    Esattamente, dalla finestra aperta con il commdialog che normalmente seleziona la Dir Foto

    SE io sono in 'foto' aperta col common dialog, io posso, volendo, andare in una altra cartella, o no?

    SE dunque al posto di restare in foto, vado altrove,navigando tra le cartelle, in un secondo momento, cliccando nuovamente sul button per ri-selezionare la dir Foto, non vengo piu portato automaticamente in foto, ma alla dir dove sono stato l'ultima volta.

    E' altresi chiaro che io in qesto caso posso andare 'manualmente' alla dir Foto , ma io vorrei che si andasse SEMPRE automaticamente, anche se ho "peccato" ad andare altrove.

  8. #8
    Utente di HTML.it L'avatar di LMondi
    Registrato dal
    Sep 2004
    Messaggi
    1,291
    Ho fatto delle prove.-
    Il problema non é della CD bensì di App.Path che ricorda l'ultimo percorso.
    Daltronde il comando InitDir "Questa proprietà consente di specificare la directory iniziale per una finestra di dialogo Apri o Salva con nome. Se questa proprietà non viene specificata, verrà utilizzata la directory corrente .
    Penso quindi che il problema si può risolvere togliendo App.Path e specificando in dettaglio il percorso di base C:\Foto\...
    LM

  9. #9
    Utente di HTML.it
    Registrato dal
    Jul 2006
    Messaggi
    41
    Caro Lmondi; grazie dei tuoi interventi, ma intanto provando
    ho trovato la soluzione !

    adattando cosi (aggiungendo la parte in rosso, aggiungendo cioé FILENAME ) si torna sempre al dir originale, in tutti i casi.
    ----------------------------

    Private Sub Command1_Click()
    Dim Slash As String
    If Right(App.Path, 1) <> "\" Then Slash = "\"
    CommonDialog1.InitDir = App.Path & Slash & "foto"

    commondialog1.filename = app.path & slash & "foto" & "\*.*"
    CommonDialog1.ShowOpen
    end sub
    --------------------------

    Ho messo la soluzione in caso quacuno abbia lo stesso problema.

    grazie ancora
    pazienza

  10. #10
    Utente di HTML.it L'avatar di LMondi
    Registrato dal
    Sep 2004
    Messaggi
    1,291
    Ciao pazienza,
    hai ragione su l'utilizzo di FileName, però si ha l'effetto voluto solo se si toglie App.Path.
    Infatti con .FileName = App.Path & "\Foto\*.*" la finestra della CD si apre sull'utima Dir selezionata - che non è la cosa voluta;
    mentre togliendo App.Path e specificando l'intero percorso
    .FileName = "D:\Test2\Foto\*.*" viene aperta sempre la stessa Dir, come segue:
    codice:
    Private Sub Command1_Click()
        Dim FileName As String
        With CommonDialog1
            ' Imposta CancelError su True:
                .CancelError = True
                On Error GoTo ErrHandler
                .DialogTitle = "Selezionare la destinazione del file"
                .Flags = cdlOFNHideReadOnly Or cdlOFNPathMustExist Or cdlOFNOverwritePrompt Or cdlOFNNoReadOnlyReturn
                .Filter = "File di programma (*.bmp)|*.bmp|Documenti di Testo (*.txt)|*.txt|" & _
                "Tutti i Files (*.*)|*.*"
                .FilterIndex = 1
                .DefaultExt = "bmp"
                .InitDir = "D:\Test2\Foto"
                '.FileName = App.Path & "\Foto\*.*"
                .FileName = "D:\Test2\Foto\*.*"
                .ShowOpen
    ErrHandler:
            ' é stato scelto Annulla:
                If Err.Number = 32755 Then
                    Exit Sub
                End If
            End With
    End Sub
    Ciao e buon lavoro !
    LM

Permessi di invio

  • Non puoi inserire discussioni
  • Non puoi inserire repliche
  • Non puoi inserire allegati
  • Non puoi modificare i tuoi messaggi
  •  
Powered by vBulletin® Version 4.2.1
Copyright © 2025 vBulletin Solutions, Inc. All rights reserved.