Newsgroup: it.comp.lang.visual-basic
Titolo: Problema con una finestra simile alla finestra apri; mi serve un aiuto per DirListBox e FileListBox...

Salve, 
come da subject, ho un problema nel creare una finestra, che per le
sue funzioni può sembrare simile alla classica finestra che esce fuori
quando dal menu file si clicca su apri/open. Mi spiego subito meglio. 
Devo fare una finestra dalla quale posso vedere l' interno del mio hd
per poter selezionare o file .jpg o file .doc; fin qui sembrerebbe
fare le stesse cose della classica finestra apri, però a differenza di
questa, io non devo aprire il file che ho scelto, ma devo andare
avanati, mi deve infatti apparire un altra finestra dove inserire un
po di cosette. Questa nuova finestra che apparirà avrà campi diversi a
seconda del tiipo di file che ho scelto prima, se .jpg avrà alcuni
campi da riempire, se invece ho scelto un .doc ne avrà altri. All'
inizio ho pensato di disegnarmi io la finsetra...e ho creato un form
con i seguenti elementi:
- 1 DriveListBox (per scegliere il drive da cui prendere il file)
- 1 DirListBox (per vedere le mie directory e i files)
- 1 TextBox (per metterci il nome del file che seleziono)
- 1 ComboBox (per scegliere i due fotmati, doc o jpg)
- 2 Pulsanti (uno per andare avanti e uno per chiudere la finestra)
Disegnata tutta la finestrella l' ho provata e...non ha funzionato una
mazza :)) Allora, il DriveList mi vede i miei due hd, i due lettroi
che ho e il floppy, però se clicco in un' unità diversa da C non
succede niente, infatti vede solo le directory di C. Inoltre, non
riesco a vedere i file nel DirList, ma solo le directoy...se però
cambio il DirListBox con un FileListBox, vedo solo un insieme di file
(che non ho capito da dove escono fuori) e non ho più la possibilità
di girare tra le directory...insomma un macello :))
Prima domanda: come posse vedere directory e files insieme?
Logicamente, quando poi dal ComboBox selezionavo uno dei due tipi di
file, non accadeva niente...
Seconda domanda: come faccio a vedere le directory e SOLO i file che
hanno l' estensione che ho scelto io? Io volevo che scegliendo .doc
dal Combo, vedevo le dire presenti e solo i file  che hanno
estensione. doc.
Fallito il primo tentativo ho avuto un lampo di genio (di genio?!?).
Infatti invece che creare una fittizia finestrella che mi facesse
vedere l' interno del mio hd e che mi facesse scegliere dei file, ho
usato il componente Common Dialog. Così infatti pensavo che avendo già
la finestrella fatta avrei risolto tuti i problemi...invece no! Primo,
quella è una vera finestra APRI, mi funziona la scelta del file in
base al tipo, riesco a vedere file e directory tutti
insieme...però...io non devo aprire il documento che scelgo ma devo
visualizzare un altra finestra in base al tipo di file.
Quindi non sapendo come fare per modificare questa fiinestra qua ho
bocciato anche quest' altra alternativa...e sono tornato a
ridisegnarmi la mia finestrella che però non funziona...qualcuno sa
chiarirmi un po le idee a riguardo? Grazie :))

 Quindi non sapendo come fare per modificare questa fiinestra
qua ho bocciato anche quest' altra alternativa...e sono
tornato a ridisegnarmi la mia finestrella che però non
funziona...qualcuno sa chiarirmi un po le idee a riguardo?
Spero che questo piccolo esempio possa aiutarti a chiarirti le
idee:
Form1 (Form1.frm)
-----------------
' Text1
FMain (Main.frm)
----------------
' CommonDialog1
' Command1
'
Option Explicit
Private Function GetExt( _
  ByVal FileName As String _
) As String
Dim i As Integer
  For i = Len(FileName) To 1 Step -1
    If Mid$(FileName, i, 1) = "." Then
      Exit For
    Else
      Let GetExt _
        = LCase$(Mid$(FileName, i, 1)) _
        & GetExt
    End If
  Next
End Function
Private Sub Command1_Click( _
)
Dim lngErr      As Long
Dim strPathName As String
Dim strExt      As String
  With CommonDialog1
    Let .CancelError = True
    On Local Error Resume Next
    Call .ShowOpen
    Let lngErr = Err.Number
    On Local Error GoTo 0
    Select Case lngErr
    Case 0
      Let strPathName = .FileName
      Let .InitDir _
        = Mid$( _
          strPathName _
        , 1 _
        , Len(strPathName) - Len(.FileTitle))
      Let .FileName = .FileTitle
      Let strExt = GetExt(strPathName)
      Select Case strExt
      Case "doc":         ' [...]
      Case "gif":         ' [...]
      Case "jpg", "jpeg": ' [...]
      Case Else:          Let strExt = ""
      End Select
      If Len(strExt) Then
        With Form1
          Let .Text1.Text = strPathName
          Call .Show(vbModal)
        End With
      Else
        Call MsgBox( _
            "Tipo di file non gestito." _
          , vbExclamation _
          , .FileTitle)
      End If
    Case cdlCancel
    Case Else
    End Select
  End With
End Sub
Private Sub Form_Load( _
)
  With CommonDialog1
    Let .InitDir = "C:\Documenti\"
    Let .Filter _
      = "File JPEG (*.jpg;*.jpeg)|*.jpg;*.jpeg|" _
      & "File GIF (*.gif)|*.gif|" _
      & "Documenti di Word (*.doc)|*.doc|" _
      & "File dell'applicazione (*.doc;*.jpg;*.jpeg;*.gif)|" _
      & "*.doc;*.jpg;*.jpeg|" _
      & "Tutti i file (*.*)|*.*"
    Let .FilterIndex = 4
    Let .Flags _
      = cdlOFNAllowMultiselect _
      + cdlOFNExplorer _
      + cdlOFNFileMustExist _
      + cdlOFNHideReadOnly _
      + cdlOFNLongNames _
      + cdlOFNPathMustExist _
      + cdlOFNShareAware
    Let .DialogTitle = "Seleziona file"
  End With
End Sub
--
Ciao.
Maurizio