Gå til innhold

Hvordan lage en browse for å peke på en fil


Anbefalte innlegg

Jeg har akkurat mekket ferdig et program som leser inn en tesktfil linje for linje, og kontrollerer en del fakta om filen, der etter vurderes det om det skal skrives til fil 1 eller fil 2.

 

Det jeg nå ønsker å gjøre er å lage en browse mulighet, slik at brukeren kan browse maskinen, og bare dobbeltklikke på filen det er ønskelig å lese ut fra, og at sti + filnavn.extention kommer av seg selv inn i tekstboksen jeg har laget til dette.

 

Jeg sliter litt med å få dette til å fungere, så om noen har noen god ide, så hadde jeg blitt takknemmelig.

Lenke til kommentar
Videoannonse
Annonse

Dette er langt ifra vanskelig og kan løses relativt lett med Microsoft Common Dialog Control. For å bruke denne må du først legge en referanse til dette objektet ved å trykke CTRL+T. Så går du igjenom listen til du finner benevnte objekt og kryss av for haken ved siden av. Trykk så på OK, og legg inn det som nettopp ble synlig på kontrol menyen.

 

For å gjøre det hele litt lettere har jeg forberedet en liten metode som du kan kalle når det er nødvendig. Legg derfor følgede kode inn i formen (eller en modul):

 

Public Sub ShowBrowse(txtFile As TextBox)

' Når brukeren trykker avbryt, gå til enden av prosedyren
On Error GoTo Feil:

' Kaller de respektive funksjonene i Common Dialog kontrollen
With CommonDialog1
   .CancelError = True ' Resulterer en feilmelding (kun uten første linje) når bruker trykker på avbryt
   .Filter = "All files|*.*" ' Setter filter til alle filtyper
   .ShowOpen ' Viser browse-formen
   
   txtFile.Text = CommonDialog1.FileName
End With

Exit Sub
Feil:

If Err.Number = 32755 Then
' Feilmelding er ikke nødvedig ettersom bruker har trykket avbryt
   Exit Sub
End If

MsgBox "Error " & Err.Number & "; " & Err.Description, vbCritical, "Error"

End Sub

 

Du bruker denne metoden omtrentlig slik:

 

ShowBrowse txtFile ' Endre txtFile til hva teksboksen hvor filnavnet skal legges inn heter

 

Håper dette hjalp.

Endret av aadnk
Lenke til kommentar

Det hjalp lite, for jeg skjønte ikke hvordan du hadde tenkt jeg skulle bruke dette.

Jeg la inn det du skrev helt nederst i koden min.

Jeg trykket først ctrl+t og valgte det slik du ba om.

Jeg la så over en knapp i formen, hvor det sto common dialog box.

når jeg starter programmet nå, så forsvinner denne knappen, og jeg skjønner ikke helt hva som er meningen her.

En ting jeg ikke skrev sist, men jeg er avhengig av programmet ikke skal kreve egne dll filer eller annet som ikke ligger i standard Windows.

Slik systemet var før jeg la inn denne knappen (common dialog), så fungerte exe filen min i standard Windows uten noen ekstra DLL filer.

Slik må det også være i fremtiden, så en browser må fungere slik uten noe ekstra krav.

Lenke til kommentar

Du skulle bruke koden ved å legge den siste linjen inn i en prosedyre. Hvis du f.eks har en knapp som du har kalt cmdBrowse, og du vil at dialogen skal komme opp når du har trykket på den skriver du dette inn:

 

Private Sub cmdBrowse_Click()

Text1.Text = ""
ShowBrowse Text1

End Sub

 

Text1 er bare navnet på den tekstboksen du vil at banen til filen skal legges inn i etter den har blitt valgt.

 

Når det gjelder å ungå bruken av Microsoft Common Dialog Control lar dette seg gjøre ved å bruke API-calls. Dette er mer komplisert, men gir den fordelen at brukeren ikke trenger denne OCX filen (som det heter). Jeg skal gi deg koden, men jeg tviler egentlig på at du vil ha problemer med dette, da de brukerene som kan kjøre programmet også har denne filen.

 

Uansett, legg denne koden inn hvis du ikke vil bruke kontrollen (husk å fjerne kontrollen både fra formen og fra menyen i CTRL+T):

 

Public Sub ShowBrowse(txtFile As TextBox)

' Når det oppstår en feil, gå til enden av prosedyren
On Error GoTo Feil:

Dim OpenSave As New OpenSave

' Kaller de respektive funksjonene i Common Dialog kontrollen
With OpenSave
  .Filter = "All files|*.*"  ' Setter filter til alle filtyper
  .OpenFile Me.hwnd, "Open file" ' Viser browse-formen
  
  If .File = "" Then Exit Sub ' Hvis bruker avbryter, gå ut av prosedyre
  txtFile.Text = .File
End With

Exit Sub
Feil:

MsgBox "Error " & Err.Number & "; " & Err.Description, vbCritical, "Error"

End Sub

 

I tillegg til denne koden må du også legge inn en CLASS-modul som kan lastes ned her. Denne mudulen vil legges inn i EXE filen når den komplimeres, så det er ikke noe problem.

 

For å legge filen inn i prosjektet trykker du Project, Add Class-module og browser deg fram til filen. Trykk så på OK, og koden vil fungere.

Lenke til kommentar

Hei.

Da forstod jeg.

Jeg hadde missforstått det med tekstboksen som blir henvist til i prosedyren, slik at jeg ikke henviste slik jeg skulle.

 

Nå fungerer browseren, men er ikke sikker på om jeg kan bruke den i dette prosjeketet eller ikke, må undersøke litt på det med den ekstra filen man trenger.

Om jeg adder filen inn i prosjektet, vil den bli bakt inn i exe filen min, eller blir den bare med som en dll eller liknende i samme katalog?

Lenke til kommentar

Opprett en konto eller logg inn for å kommentere

Du må være et medlem for å kunne skrive en kommentar

Opprett konto

Det er enkelt å melde seg inn for å starte en ny konto!

Start en konto

Logg inn

Har du allerede en konto? Logg inn her.

Logg inn nå
×
×
  • Opprett ny...