Discussione:
[VB6] Common Dialog FileOpen con intervaccia tipo Explorer
(troppo vecchio per rispondere)
Filippo
2009-07-20 10:39:03 UTC
Permalink
Buongiorno a tutti.

(SO: XP VB: 6 SP: 6)

Vorrei riuscire aprire in un programma via codice, un CommonDialog
FileOpen, con visualizzazione del tipo 'Esplora' e non 'Apri'.
Intendo quella con due finestre affiancate, a destra la Tree con tutti
i drives, le cartelle e i nodi espandibili e a sinistra la directory
selezionata. Magari anche con la possibilità di accedere alle opzioni
di visualizzazione (Icone grandi, piccole, elenco, dettagli etc.)
Cercando un po' qua e la' leggo che bisognerebbe usare il usare il
Flag cdlOFNExplorer (in unione con cdlOFNAllowMultiselect, altrimenti
non funziona) ma a me non funziona lo stesso. Ho provato anche con
varie combinazioni di flag ma non c'è niente da fare.
Intendiamoci, con un po' di fatica e di codice si può creare un form
personalizzato, con TreeView, DirList e File etc. ma io credo che,
magari invocando qualche API, si dovrebbe riuscire ad aprire la
finestra di visualizzazione files e Cartelle varie in formato
'Esplora'.
Tra l'altro a me piace molto la possibilità di poter ordinare la
directory visualizzata, per Nome, per Dimensione, per Data ultima
modifica etc. con il click sulla barra, cosa che se si dovesse creare
un form personalizzato via codice come ho detto sopra richiederebbe un
po' troppo lavoro.
Insomma, è mai possibile che non si possa aprire la finestra
'Esplora'?
Qualcuno sa aiutarmi?
Grazie.
Filippo
XP
2009-07-20 11:08:54 UTC
Permalink
Post by Filippo
Insomma, è mai possibile che non si possa aprire la finestra
'Esplora'?
Qualcuno sa aiutarmi?
Grazie.
Filippo
devi lanciare explorer.exe /.... e non mi ricordo quale lettera forse n
oppure e

Pero' non ti restituisce un bel niete !!! (almeno per quanto ne so io)
Andrea [Work]
2009-07-20 12:04:57 UTC
Permalink
Post by Filippo
Insomma, è mai possibile che non si possa aprire la finestra
'Esplora'?
Qualcuno sa aiutarmi?
Come ti han detto non mi pare restituisca proprio nulla. Anche perchè
quello è un file manager e nient'altro.

L'unica è che ti fai una form ad hoc in cui fai tutto quello che ti serve.
Ma non è proprio velocissimo.

Secondo me il cliente va istruito a standardizzarsi con il comportamento di
windows ove possibile.
Filippo
2009-07-20 17:58:45 UTC
Permalink
On Mon, 20 Jul 2009 12:04:57 GMT, "Andrea [Work]"
Post by Andrea [Work]
L'unica è che ti fai una form ad hoc in cui fai tutto quello che ti serve.
Ma non è proprio velocissimo.
Secondo me il cliente va istruito a standardizzarsi con il comportamento di
windows ove possibile.
Grazie della risposta.
Ma a me sembra che è porpio il comportamento di Windows che io non
riesco ad ottenere.
Infatti da Windows è possibile usare due diversi comandi: [Tasto
destro]+Apri e [Tasto destro]+Esplora, e la visualizzazione cambia.
Perché non devo riuscirci da VB?
E soprattutto perché la documentazione (nonché la risposta di Stefano
Minardi che segue) mi suggerisce il Flag con cui dovrebbe apparire la
visualizzazione in formato Esplora e a me non funziona?
Grazie
Filippo
Andrea [Work]
2009-07-21 06:47:57 UTC
Permalink
Post by Filippo
Ma a me sembra che è porpio il comportamento di Windows che io non
riesco ad ottenere.
Infatti da Windows è possibile usare due diversi comandi: [Tasto
destro]+Apri e [Tasto destro]+Esplora, e la visualizzazione cambia.
Perché non devo riuscirci da VB?
E dai.
Diciamo che apri esplora risorse (win+e).
Se la stessa applicazione ms non prevede di restituirti il file di ritorno
che te ne fai?
Se si tratta solo di aprire explorer ti basta fare così:
%SystemRoot%\explorer.exe /n,/e,c:\MiaCartellaDaAprire

Ma non certo se devi leggere il file selezionato...

Inoltre ti pare che qualche finestra anche di ms ti apra esplora risorse
per farti scegliere un file?
Come ti ripeto tentare di abituare i clienti ad una cosa che devi fare tu
da codice, e che non ritroveranno in alcuna altra applicazione andrebbe
evitato.
Tanto se vanno su notepad o su paint troveranno sempre la solita finestra
di windows. Se salvano una pagina web o un pdf idem.

Se invece è una cosa che serve a te, beh explorer non restituisce alcun
valore selezionato, anche perchè non seleziona alcunchè.
http://support.microsoft.com/kb/314853

L'albero a sx poi ok può essere utile, ma non certo fondamentale.
Hai l'albero in alto e poi sfogli le cartelle.
Molto più utile aprire la cartella che dovrebbe essere quella dove uno
carica/salva i file, così da evitare le noiose navigazioni.
Al limite uno in quella cartella predefinita si mette i link alle cartelle
dove pescare i file.
Post by Filippo
E soprattutto perché la documentazione (nonché la risposta di Stefano
Minardi che segue) mi suggerisce il Flag con cui dovrebbe apparire la
visualizzazione in formato Esplora e a me non funziona?
Non funziona manco a me, sarà qualche flag che valeva per win98 o simile.
Ma come ti ripeto explorer.exe non seleziona file e ti dice cosa hai
selezionato. Sarebbe un po' come chiedere se word può disegnare un file
autocad.
Non lo fa e non lo prevede. E nessuna API può far fare qualcosa ad un
programma che non lo prevede.

Poi se cercando a fondo trovi il sistema di farlo bene, ma la vedo dura.

La cosa più semplice, se proprio la vuoi, è costruirtelo da solo.
Stefano Minardi
2009-07-20 14:50:13 UTC
Permalink
Post by Filippo
Buongiorno a tutti.
(SO: XP VB: 6 SP: 6)
Vorrei riuscire aprire in un programma via codice, un CommonDialog
FileOpen, con visualizzazione del tipo 'Esplora' e non 'Apri'.
Intendo quella con due finestre affiancate, a destra la Tree con tutti
i drives, le cartelle e i nodi espandibili e a sinistra la directory
selezionata. Magari anche con la possibilità di accedere alle opzioni
di visualizzazione (Icone grandi, piccole, elenco, dettagli etc.)
Cercando un po' qua e la' leggo che bisognerebbe usare il usare il
Flag cdlOFNExplorer (in unione con cdlOFNAllowMultiselect, altrimenti
non funziona) ma a me non funziona lo stesso. Ho provato anche con
varie combinazioni di flag ma non c'è niente da fare.
Intendiamoci, con un po' di fatica e di codice si può creare un form
personalizzato, con TreeView, DirList e File etc. ma io credo che,
magari invocando qualche API, si dovrebbe riuscire ad aprire la
finestra di visualizzazione files e Cartelle varie in formato
'Esplora'.
Tra l'altro a me piace molto la possibilità di poter ordinare la
directory visualizzata, per Nome, per Dimensione, per Data ultima
modifica etc. con il click sulla barra, cosa che se si dovesse creare
un form personalizzato via codice come ho detto sopra richiederebbe un
po' troppo lavoro.
Insomma, è mai possibile che non si possa aprire la finestra
'Esplora'?
Qualcuno sa aiutarmi?
Grazie.
Filippo
Quel che ti hanno detto è corretto: usando cdlOFNExplorer nei flags ottieni
il tipo di visualizzazione che vuoi (con Vista lo ottieni comunque, forse
anche con XP2 e 2003). P.es:
CommonDialog1.Flags = cdlOFNAllowMultiselect Or cdlOFNExplorer Or
cdlOFNFileMustExist Or cdlOFNLongNames
CommonDialog1.ShowOpen

Stefano
Filippo
2009-07-20 17:56:00 UTC
Permalink
Post by Stefano Minardi
Quel che ti hanno detto è corretto: usando cdlOFNExplorer nei flags ottieni
il tipo di visualizzazione che vuoi (con Vista lo ottieni comunque, forse
CommonDialog1.Flags = cdlOFNAllowMultiselect Or cdlOFNExplorer Or
cdlOFNFileMustExist Or cdlOFNLongNames
CommonDialog1.ShowOpen
Stefano
Grazie della risposta.
Ma il punto è proprio questo: io uso esattamente i flags che dici tu
ma la finestra che si apre è sempre la stessa, con la stessa
visualizzazione.
L'unica cosa è che consente la selezione multipla (che poi non è
quello che sto cercando!!!)

Io dico, ma da Windows è possibile usare due diversi comandi: [Tasto
destro]+Apri e [Tasto destro]+Esplora, e la visualizzazione cambia.
Perché non devo riuscirci da VB?
Grazie
Filippo
Paperino
2009-07-20 18:15:19 UTC
Permalink
"Filippo" ha scritto
Post by Filippo
Post by Stefano Minardi
Quel che ti hanno detto è corretto: usando cdlOFNExplorer nei flags ottieni
il tipo di visualizzazione che vuoi (con Vista lo ottieni comunque, forse
CommonDialog1.Flags = cdlOFNAllowMultiselect Or cdlOFNExplorer Or
cdlOFNFileMustExist Or cdlOFNLongNames
CommonDialog1.ShowOpen
Grazie della risposta.
Ma il punto è proprio questo: io uso esattamente i flags che dici tu
ma la finestra che si apre è sempre la stessa, con la stessa
visualizzazione.
L'unica cosa è che consente la selezione multipla (che poi non è
quello che sto cercando!!!)
Io dico, ma da Windows è possibile usare due diversi comandi: [Tasto
destro]+Apri e [Tasto destro]+Esplora, e la visualizzazione cambia.
Perché non devo riuscirci da VB?
Perché non stai usando Explorer, ma la CommonDialog,
e la CommonDialog non mi risulta che faccia quello che cerchi.

Basta come risposta ? :-)

Bye, G.
Filippo
2009-07-20 18:33:49 UTC
Permalink
On Mon, 20 Jul 2009 20:15:19 +0200, "Paperino"
Post by Paperino
Perché non stai usando Explorer, ma la CommonDialog,
e la CommonDialog non mi risulta che faccia quello che cerchi.
Basta come risposta ? :-)
Bye, G.
Si questo lo capisco.
Mi chiedo:
a) a che serve il flag della CommonDialog cdlOFNExplorer, cioè che
cosa cambia allora se uso o non uso questo stramaledetto flag

b) se sia possibile (era la domanda originale del post) ottenere
quello che chiedo con una qualche chiamata API

(ma forse ho capito, non si tratta di funzioni 'native' di windows ma
di una vera e propria applicazione del S.O., appunto explorer.exe
mannaggia!!!)


grazie
Ciao
Filippo
Tiscali
2009-07-20 19:37:11 UTC
Permalink
Filippo ha scritto...
Post by Filippo
b) se sia possibile (era la domanda originale del post) ottenere
quello che chiedo con una qualche chiamata API
http://tinyurl.com/l6taxn
--
Ciao Fede

By Chicco Production
http://bcp.freetools.it
Tiscali
2009-07-20 19:40:47 UTC
Permalink
Filippo ha scritto...
Post by Filippo
b) se sia possibile (era la domanda originale del post) ottenere
quello che chiedo con una qualche chiamata API
Questo è ottimo!

http://tinyurl.com/nn5prz
--
Ciao Fede

By Chicco Production
http://bcp.freetools.it
Andrea [Work]
2009-07-21 06:40:25 UTC
Permalink
Post by Tiscali
Questo è ottimo!
http://tinyurl.com/nn5prz
Si ma c'è un treeview, insomma non è la finestra di windows (cioè se la
lanci su vista,win7, xp avrà la skin dell'os).
Tiscali
2009-07-21 15:59:09 UTC
Permalink
Andrea [Work] ha scritto...
Post by Andrea [Work]
Si ma c'è un treeview, insomma non è la finestra di windows (cioè se la
lanci su vista,win7, xp avrà la skin dell'os).
Se leggi il post iniziale...

Filippo ha scritto...
Post by Andrea [Work]
Vorrei riuscire aprire in un programma via codice, un CommonDialog
FileOpen, con visualizzazione del tipo 'Esplora' e non 'Apri'.
Intendo quella con due finestre affiancate, a destra la Tree con tutti
i drives, le cartelle e i nodi espandibili e a sinistra la directory
selezionata. Magari anche con la possibilità di accedere alle opzioni
di visualizzazione (Icone grandi, piccole, elenco, dettagli etc.)
Cercando un po' qua e la' leggo che bisognerebbe usare il usare il
Flag cdlOFNExplorer (in unione con cdlOFNAllowMultiselect, altrimenti
non funziona) ma a me non funziona lo stesso. Ho provato anche con
varie combinazioni di flag ma non c'è niente da fare.
Intendiamoci, con un po' di fatica e di codice si può creare un form
personalizzato, con TreeView, DirList e File etc. ma io credo che,
magari invocando qualche API, si dovrebbe riuscire ad aprire la
finestra di visualizzazione files e Cartelle varie in formato
'Esplora'.
Tra l'altro a me piace molto la possibilità di poter ordinare la
directory visualizzata, per Nome, per Dimensione, per Data ultima
modifica etc. con il click sulla barra, cosa che se si dovesse creare
un form personalizzato via codice come ho detto sopra richiederebbe un
po' troppo lavoro.
Insomma, è mai possibile che non si possa aprire la finestra
'Esplora'?
Qualcuno sa aiutarmi?
Grazie.
Filippo
...è esattamente quanto richiesto!
Io credo che tu non l'abbia neanche provato l'esempio in questione!
--
Ciao Fede

By Chicco Production
http://bcp.freetools.it
Tiscali
2009-07-21 16:01:54 UTC
Permalink
Beninteso, questa non è una CommonDialog!
Ma a questo punto ha tutti gli elementi necessari
per realizzarla velocemente e senza tanta fatica!
Il più è fatto... :)
--
Ciao Fede

By Chicco Production
http://bcp.freetools.it
Filippo
2009-07-21 16:51:21 UTC
Permalink
On Tue, 21 Jul 2009 18:01:54 +0200, "Tiscali"
Post by Tiscali
Beninteso, questa non è una CommonDialog!
Ma a questo punto ha tutti gli elementi necessari
per realizzarla velocemente e senza tanta fatica!
Il più è fatto... :)
Proprio così, infatti mi pare un ottimo punto di partenza.
Grazie mille
Filippo
Andrea [Work]
2009-07-22 07:13:28 UTC
Permalink
Post by Tiscali
Beninteso, questa non è una CommonDialog!
Ma a questo punto ha tutti gli elementi necessari
per realizzarla velocemente e senza tanta fatica!
Il più è fatto... :)
Ma non è explorer.
Ad esempio non utilizza i layout cartella impostati, tant'è che ogni volte
devo mettere dettagli.
Manca indietro/avanti/sopra, manca la barra degli indirizzi, la status bar
è ovviamente custom, e la toolbar manca.
Con Vista e simili non so poi come viene visualizzata.

Insomma per avere le cose richieste dall'OP uno deve comunque lavorarci.
Che sia un buon punto di partenza ok.

Ora non ho provato, ma il select del file lo fa o lo apre?
Perchè se è così tanto vale fare una shell di explorer.exe.

Comunque rimango della mia idea che inventarsi certe cose è
controproducente, cioè almeno che non ti paghino per fare proprio una cosa
del genere (o non serve a te personalmente), meglio standardizzarsi e usare
le cose che ci sono nel 99% degli altri sw.

Anche perchè quando mi son trovato davanti quella form è stata sicuramente
meno user friendly di una commondialog, immagino per un utente che sa a
fare a malapena copia incolla dal menu modifica e non col tasto destro o
con la tastiera...
Filippo
2009-07-22 09:13:41 UTC
Permalink
On Wed, 22 Jul 2009 07:13:28 GMT, "Andrea [Work]"
Post by Andrea [Work]
Ad esempio non utilizza i layout cartella impostati, tant'è che ogni volte
devo mettere dettagli.
Manca indietro/avanti/sopra, manca la barra degli indirizzi, la status bar
è ovviamente custom, e la toolbar manca.
Vero purtroppo
Post by Andrea [Work]
Ora non ho provato, ma il select del file lo fa o lo apre?
Lo apre, quindi non fa al caso mio, a meno che non riesca a
modificarlo (ma non credo)
Post by Andrea [Work]
Comunque rimango della mia idea che inventarsi certe cose è
controproducente, cioè almeno che non ti paghino per fare proprio una cosa
del genere (o non serve a te personalmente), meglio standardizzarsi e usare
le cose che ci sono nel 99% degli altri sw.
Tutto sommato credo proprio che tu abbia ragione, per lo meno in
generale.
Per quanto mi riguarda io mi impicco (!) con VB per mio esclusivo
piacere, non mi paga nessuno, e i programmi che faccio sono solo per
me.
Qualcosa di non banale l'ho anche fatta soprattutto ai tempi del
DOS/QUICK BASIC/ASSEMBLY
L'avvento del Visual/Oggetti/Classi etc. mi ha steso...... ma non
demordo, è esclusivamente un mio piacere intellettuale.
Ma se rinasco..................
Grazie di tutto e ciao.
Filippo
Andrea [Work]
2009-07-22 10:48:23 UTC
Permalink
Post by Filippo
Tutto sommato credo proprio che tu abbia ragione, per lo meno in
generale.
Per quanto mi riguarda io mi impicco (!) con VB per mio esclusivo
piacere, non mi paga nessuno, e i programmi che faccio sono solo per
me.
Qualcosa di non banale l'ho anche fatta soprattutto ai tempi del
DOS/QUICK BASIC/ASSEMBLY
Infatti se serve per te era uno dei motivi che ritenevo validi.

Ma se è per te puoi fare una shellexecute di explorer e poi fare il
drag&drop in un'area del tuo sw e in quel modo recuperare il file
indirettamente.

Insomma fare un doppioclick per "selezionare" o trasciare il file dove vuoi
non cambia molto.
Oppure in SendTo di windows ti aggiungi una shortcut al tuo sw e da lì
forse fai qualcosa.
Wodka40[Google]
2009-07-22 14:11:29 UTC
Permalink
Post by Filippo
On Wed, 22 Jul 2009 07:13:28 GMT, "Andrea [Work]"
zac
se è per puro piacere intellettuale...
allora molla tutto!

Usa/impara Java
Se vuoi tutto gratis
Linux+Java....curva all'inizio un po ripida (ma se sei al livello di
smanettare di api....non più di tanto!)
Che ci fai poi?
Di tutto...per dire (una cosa che in questi giorni è di moda in un
altro 3ead)
un "pazzo" ci ha fatto un clone del flash server si chiama red5
http://code.google.com/p/red5/


un altro "pazzo" lo ha preso mischiato con java apache/Tomcat +
qualche altra libreria e ci ha fatto un sistema di videoconferenza
adatto per l'elearning : si chiama openmeetings
http://code.google.com/p/openmeetings/


...oppure....se vuoi rimanere sempre in ambito "zioBill"...scaricati
VStudio express 2008 + fw 3.5 sp1
e dilettati con c# (o vb.net)....e LINQ to "qualcosa"
o con la grafica...

io sto spippolando in questi giorni di studio con "linq to dataset"
e mi si aprono strade che prima o poi porterò in produzione (più prima
che poi!)...

in conclusione....se vuoi farti una "sega mentale"...almeno fattela
bella: che ne valga la pena!
Filippo
2009-07-22 15:54:11 UTC
Permalink
On Wed, 22 Jul 2009 07:11:29 -0700 (PDT), "Wodka40[Google]"
Post by Wodka40[Google]
Post by Filippo
On Wed, 22 Jul 2009 07:13:28 GMT, "Andrea [Work]"
zac
se è per puro piacere intellettuale...
allora molla tutto!
Usa/impara Java
Se vuoi tutto gratis
Linux+Java....curva all'inizio un po ripida (ma se sei al livello di
smanettare di api....non più di tanto!)
...oppure....se vuoi rimanere sempre in ambito "zioBill"...scaricati
VStudio express 2008 + fw 3.5 sp1
Mi piacerebbe, non credere ma.... chi me lo da' il tempo di imparare
tutte 'ste cose?

Faccio prima a smettere del tutto (... e fai bene!!!!)

Grazie del suggerimento ma purtroppo non credo di riuscire a farcela.
Ma, come ho già detto ad Andrea, se rinasco........
Ciao
Filippo

Stefano Minardi
2009-07-21 09:09:32 UTC
Permalink
Post by Filippo
Ma il punto è proprio questo: io uso esattamente i flags che dici tu
ma la finestra che si apre è sempre la stessa, con la stessa
visualizzazione.
Io dico, ma da Windows è possibile usare due diversi comandi: [Tasto
destro]+Apri e [Tasto destro]+Esplora, e la visualizzazione cambia.
Perché non devo riuscirci da VB?
Grazie
Filippo
Non so su quale SO stai lavorando, io purtroppo ho solo dei Vista a portata
di mano e su questi la commondialog funziona esattamente come vorresti tu.
Mi pare di ricordare che su XP il layout e le funzionalità fossero molto
simili (a parte le cartelle tipiche di Vista). Ovvero: se apri la dialog e
fai click-destro ottieni il menù con 'apri', 'esplora', 'nuovo', etc.
Explorer è un'applicazione che non puoi richiamare da programma se non per
la semplice esecuzione, come ogni altra applicazione. Il modo per interagire
è appunto quello di usare le common dialog.
Il flag 'maledetto' serviva nei vecchi SO nei quali la visualizzazione di
default era in stile Windows3: con l'introduzione di nuovi layout, nomi
lunghi etc. (Win95) si rese necessario qualche flag per richiedere queste
funzionalità.

Stefano
Loading...