26. september 2006 - 19:52Der er
14 kommentarer og 1 løsning
Find billedfil i bibliotek - klik og vis
I et bibliotek har jeg en række foto liggende. Jeg har behov for at se filnavne i en form for listbox, give brugeren mulighed for at klikke på filnavnet og få det pågældend foto vist i en imagebox ... kan det lade sig gøre ?
FilNavn = Dir(Mappe & FilType, vbNormal) Do Until FilNavn = "" If .RowSource <> "" Then .RowSource = .RowSource & ";" .RowSource = .RowSource & FilNavn FilNavn = Dir Loop .Requery End With End Sub
Private Sub Form_Open(Cancel As Integer) Call FillFilesInCombo("Combo1", "E:\Ad\", "*.rtf") End Sub
Måske man så kunne indsætte et imagebox på formen og skrive ved dobbeltklik på listboksen:
FilNavn = Dir(Mappe & FilType, vbNormal) Do Until FilNavn = "" If .RowSource <> "" Then .RowSource = .RowSource & ";" .RowSource = .RowSource & FilNavn FilNavn = Dir Loop .Requery End With End Sub
Ved formens OnOpen event indsættes nedenstående kode:
Private Sub Form_Open(Cancel As Integer) Call FillFilesInCombo("lstfiles", "C:\Billeder\", "*.jpg") End Sub
'Du skal naturligvis angive din egen sti.'
På listboksen lstfiles indsættes nedenstående kode på OnClick eventen på lstfiles:
Private Sub lstfiles_Click() Me!ImageBox.Picture = Me!lstfiles End Sub
Kender det godt :o), men når du nu skal teste har der desværre indsneget sig en fejl i min kode, for at filen kan vises i billedrammen er det nødvendigt at kende hele stien til filen i selve listboksen lstfiles. nedenstående kode virker:
Filnavn = Dir(Mappe & FilType, vbNormal) Do Until Filnavn = "" If .RowSource <> "" Then .RowSource = .RowSource & ";" .RowSource = .RowSource & Mappe & Filnavn Filnavn = Dir Loop .Requery End With
Anders > nu har jeg haft lejighed til at teste dit forslag igennem ... det virker men kan jeg på nogen måde undgå, at sti ( mappe ) også vises i listfiles ... altså således at kun filnavnet vises ... jeg kan godt se i dit første forslag, at du forsøgte ... og opgav ???
Filnavn = Dir(Mappe & FilType, vbNormal) Do Until Filnavn = "" If .RowSource <> "" Then .RowSource = .RowSource & ";" .RowSource = .RowSource & Filnavn
Filnavn = Dir Loop .Requery End With
End Sub
Indsæt nedenstående kode på listen lstfiles ved klik eventen, koden skriver som det første den foruddefineret sti i tekstboksen txt1, derefter "fanges" det filnavn der klikkes på i listen lstfiles og skrives efter den foruddefineret sti i txt1.
Private Sub lstfiles_Click() Me.txt1 = ("C:\Billeder\") & Me.lstfiles Me!Billedboks.Picture = Me.txt1 End Sub
Nu loades billed i din billedramme på baggrund af den sammensatte værdi i txt1, og ikke filnavnet i lstfiles. Jeg har testet det, og det virker. Indrømmet det ikke så pænt, men det virker. Man kan evt. skjule tekstboksn hvis man ønsker det.
Fandt en gangbar løsning hvor jeg kun ser filnavn i lstfiles
.RowSource = .RowSource & Filnavn
og så har stien i en tabel
Sub lstfiles_Click() Dim Folder As String Folder = DLookup("[ImportFil]", "tblFilplacering", "[JobID] = 1") Me!Imagebox.Picture = Folder & Me!lstfiles End Sub
Glimrende løsning :o), noget pænere end mit sidste forslag. Din løsning indeholder så vidt jeg kan vurdere en tabel, jeg troede ikke at det var en option her, så havede jeg nok kommet på noget andet :o)
Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.