Questo sito utilizza cookies solo per scopi di autenticazione sul sito e nient'altro. Nessuna informazione personale viene tracciata. Leggi l'informativa sui cookies.
Username: Password: oppure
Visual Basic 6 - Click multipi su CommandButton
Forum - Visual Basic 6 - Click multipi su CommandButton

Pagine: [ 1 2 ] Precedente | Prossimo
Avatar
Sal47 (Normal User)
Pro


Messaggi: 96
Iscritto: 05/02/2009

Segnala al moderatore
Postato alle 8:09
Sabato, 30/01/2010
Buongiorno a tutti.
In un programma che sto preparando ho due CommanButton,
due CommonDialog e due TextBox;cliccando sui Button
seleziono rispettivamente un file e una cartella e i
rispettivi nomi compaiono nelle TextBox.
Il sorgente approntato è il seguente:
- - - - - - - - - -
Option Explicit
Dim Filename_1 As String
Dim CheckFile, CheckCartella As Boolean

Private Sub cmdCheckFile_Click()
CheckFile = True
With CommonDialog1
  .DialogTitle = "Seleziona un file"
  .Flags = cdlOFNFileMustExist
  .ShowOpen
  txt1 = .FileName
End With
End Sub

Private Sub cmdCheckCartella_Click()
Dim i As Integer
Dim Cartella As String
CheckCartella = True
With CommonDialog2
   .DialogTitle = "Seleziona un file "
   .Filter = "All files|*.*"
' .Flags = cdlOFNLongNames '* (questa istruz. non fa quello che vorrei)
   .Flags = cdlOFNAllowMultiselect
   .ShowOpen
   txt2 = .FileName
   For i = 1 To Len(txt2)
     Cartella = Mid(txt2, i, 1)
     If Cartella = " " Then txt2 = Mid(txt2, 1, i - 1) & "*": GoTo 1
   Next i
1: End With
End Sub
- - - - - - - - - -
Però non conoscendo a priori il numero di files/cartelle da selezionare avrei necessità
di cliccare più volte sugli stessi Button e ovviamente nelle citate TextBox si dovrebbero
aggiornare di volta in volta i rispettivi nomi di files e cartelle.
La cosa è possibile? Vi sarei grato anche di un piccolo input su come proseguire.
Ancora grazie.

PM Quote
Avatar
Alfonso (Ex-Member)
Guru


Messaggi: 688
Iscritto: 30/09/2009

Segnala al moderatore
Postato alle 10:42
Sabato, 30/01/2010
' .Flags = cdlOFNLongNames '* (questa istruz. non fa quello che vorrei)
   .Flags = cdlOFNAllowMultiselect

I flags vanno sommati

.Flags = cdlOFNAllowMultiselect + cdlOFNLongNames.

Per il resto spiega meglio cosa vuoi ottenere.

PM Quote
Avatar
GrG (Member)
Guru^2


Messaggi: 3430
Iscritto: 21/08/2007

Segnala al moderatore
Postato alle 12:51
Sabato, 30/01/2010
per cliccare su un pulsante basta usare:

Call Command1_Click

p.s. Attenzione a non fare doppi post e/o topic

PM Quote
Avatar
Sal47 (Normal User)
Pro


Messaggi: 96
Iscritto: 05/02/2009

Segnala al moderatore
Postato alle 13:48
Sabato, 30/01/2010
Grazie per la risposta; proverò a sommare i flag come indicato.
Cerco di spiegarmi meglio:
sto cercando di realizzare un "wizard fai da te" per creare un file ".iss" da utilizzare poi con Inno Setup. Mi occorre quindi poter cliccare più volte su un CommandButton in modo da scegliere ad es. più files/cartelle e salvare in un file dedicato tutti i percorsi completi dei files/cartelle selezionate.
PS. Mi scuso per l'involontario doppio post.
Ancora grazie per l'interessamento.

PM Quote
Avatar
Alfonso (Ex-Member)
Guru


Messaggi: 688
Iscritto: 30/09/2009

Segnala al moderatore
Postato alle 14:16
Sabato, 30/01/2010
Con il flag cdlOFNAllowMultiselect ottieni il nome della cartella ed in fila i nomi dei files selezionati.
Con uno split Separi cartella e nomi files e invece di metterli in una textbox riempi una listbox con

Additem cartella + file1
Additem cartella + file2

Con la successiva ricerca aggiungi ulteriori files alla listbox ed ottieni l'elenco dei files da passare al tuo wizard.

PM Quote
Avatar
Sal47 (Normal User)
Pro


Messaggi: 96
Iscritto: 05/02/2009

Segnala al moderatore
Postato alle 15:28
Domenica, 31/01/2010
Grazie per il suggerimento di usare i ListBox. Proverò a modificare il mio codice e spero di risolvere, anche se la vedo dura. Ancora grazie.

PM Quote
Avatar
Alfonso (Ex-Member)
Guru


Messaggi: 688
Iscritto: 30/09/2009

Segnala al moderatore
Postato alle 15:33
Domenica, 31/01/2010

PM Quote
Avatar
Sal47 (Normal User)
Pro


Messaggi: 96
Iscritto: 05/02/2009

Segnala al moderatore
Postato alle 9:51
Venerdì, 05/02/2010
Egr. Sig. Alfonso,
grazie al Suo suggerimento e dopo molto "penare" da parte mia sono riuscito a risolvere
il problema con l'aggiunta di una ListBox e con il codice che segue:
----------------------
Private Sub MySplit()
    Dim Testo1, Testo2, Testo3, . . . , Testo9 As String
    'Dim Testo()
    Dim a(), b() As String
    On Error Resume Next
    b = Split(TestoListBox, " ", -1) '-1 -> cioè tutte le ricorrenze di " " nella frase
    For i = LBound(b) To UBound(b)
        Testo1 = b(0)
        Testo2 = b(1): If Testo2 = "" Then GoTo Salta
        Testo3 = b(2): If Testo3 = "" Then GoTo Salta
        Testo4 = b(3): If Testo4 = "" Then GoTo Salta
        . . . . . . . .
        . . . . . . . .
        Testo9 = b(8): If Testo9 = "" Then GoTo Salta
    Next
Salta:
        List1.AddItem Testo1 & Testo2
        If Testo3 = "" Then GoTo 1 Else List1.AddItem Testo1 & Testo3
        If Testo4 = "" Then GoTo 1 Else List1.AddItem Testo1 & Testo4
        . . . . . . . .
        . . . . . . . .
        If Testo9 = "" Then GoTo 1 Else List1.AddItem Testo1 & Testo9
1: End Sub
---------------------
Come può vedere le istruzioni sono per un n.ro prefissato di 9 files
(e 9 files per le mie modestissime applicazioni sono più che sufficienti;
mi piacerebbe poter indicare un n.ro imprecisato di files ma non riesco)
e li aggiungo al ListBox e poi li memorizzo ne file per il mio wizard.
In ogni caso La ringrazio ancora per il cortese interessamento e La saluto cordialmente.

PM Quote
Avatar
Alfonso (Ex-Member)
Guru


Messaggi: 688
Iscritto: 30/09/2009

Segnala al moderatore
Postato alle 10:34
Venerdì, 05/02/2010
Ti propongo delle migliorie:

Non serve dichiarare le variabili Testo1, 2, ecc.
Puoi usare direttamente l'array b()  dove già sono presenti i dati che ti servono.
LBound(b) creato da Split è sempre 0
Nel nostro caso b(0) indica il percorso del file
da b(1) in poi ci sono i nomi dei files
Per cui:

For i = 1 To UBound(b)
   List1.AddItem b(0) & b(i)
next

a questo punto puoi aggiungere il numero di righe che vuoi.

Poi non scrivere mai per uscire dalla sub

goto 1
1: End sub

se voui uscire dalla subroutine

Exit sub

Ciao

P.S.
Come vedi ti do del tu e ti saluto con un ciao.
Anche se apprezzo la tua formalità, siamo in un forum (divertimento) mica in un ufficio (lavoro):asd:

Ultima modifica effettuata da Alfonso il 05/02/2010 alle 10:39
PM Quote
Pagine: [ 1 2 ] Precedente | Prossimo