Wolverin Skrevet 9. mai 2004 Del Skrevet 9. mai 2004 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
aadnk Skrevet 9. mai 2004 Del Skrevet 9. mai 2004 (endret) 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 9. mai 2004 av aadnk Lenke til kommentar
Wolverin Skrevet 11. mai 2004 Forfatter Del Skrevet 11. mai 2004 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
aadnk Skrevet 11. mai 2004 Del Skrevet 11. mai 2004 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
Wolverin Skrevet 12. mai 2004 Forfatter Del Skrevet 12. mai 2004 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
aadnk Skrevet 12. mai 2004 Del Skrevet 12. mai 2004 Class moduler vil legges direkte inn i EXE filen, slik at det ikke blir nødvendig med eksterne dll-filer. Lenke til kommentar
Anbefalte innlegg
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 kontoLogg inn
Har du allerede en konto? Logg inn her.
Logg inn nå