Hej !! Jag har ett liknande formulär som du. Kolla denna koden det kanske kan vara något du söker.Drivelistbox, Dirlistbox & Fillistbox -- söker en speciell lösning
I formuläret frmMain, finns har 3 st textfält (txtBildExt, txtBildInt & txtPlanLosning) där händelsen DoubleClick i fälten visar ett formulär (frmPath) med en Drivelistbox, Dirlistbox, Fillistbox samt en textruta (txtPath).
När man dubbelklickat på någon av kontrollerna txtBildExt, txtBildInt eller txtPlanLosning, visas formuläret (frmPath) där man väljer ut önskad fil. Resultatet av selekteringen läggs i en textruta (frmPath) och när man stänger ner formuläret så skall resultatet (sökvägen) läggas tillbaka i samma kontroll som man klickade på för att starta filvalet. Funktionen måste alltså "komma ihåg" (ex.vis txtBildExt) från vilken kontroll förfrågan kom ifrån och lägga tillbaka resultatet i samma kontroll (ex.vis txtBildExt).
Hoppas att ni förstår vad jag menar !!
/ArneSv: Drivelistbox, Dirlistbox & Fillistbox -- söker en speciell lösning
0. Skapa nytt projekt och en frmMain, lägg en Commandbutton på denna.
1. Lägg till ytterligare en form. döp formen till frmPathFile
2. Placera ut följande komponenter Drive1 och Dir1
3. Placera även ut cmdOK samt cmdNOK (command buttons)
4. Sedan placerar du ut en picture1 (Behövs eventuellt inte för att testa exemplet)
på frmMain under command1_click
private sub command1_click
call frmPathFile.getPathFileName("Sökväg",lPath)
msgbox lPath
end sub
Filnamnet behandlar du sperat då det inte ingår i sökvägen (pathen).
/Lycka till
[peter.h]
<code>
Option Explicit
Private vPath As String
Private lOK As Boolean
Private lNOK As Boolean
Private Sub cmdNOK_Click()
lNOK = True
End Sub
Private Sub cmdOK_Click()
lOK = True
End Sub
Private Sub Drive1_Change()
'Om enhetsbeteckningen ändras måste dir1 uppdateras
'Ignorera fel. Ett fel uppstår exvis om användaren väljer
'En CD-Rom enhet där ingen skiva sitter i.
On Error Resume Next
Err.Clear
Dir1.Path = Drive1.Drive
'Nästa rad gör "fel-skylten" synlig om enheten
'inte finns eller är otillgänglig.
Picture1.Visible = CBool(Err.Number)
On Error GoTo 0
End Sub
Private Sub Form_Load()
'Lägg formen always on top
SetWindowTopMost Me.hWnd
'Placera ut formuläret där det stängdes ner. Default är centrerat
Me.Top = GetSetting(App.Path & "\settings.txt", "form pathfile", "top", (Screen.Height - Me.Height) \ 2)
Me.Left = GetSetting(App.Path & "\settings.txt", "form pathfile", "left", (Screen.Width - Me.Width) \ 2)
End Sub
Public Function getPathFileName(lCaption As String, ByRef lPath As String) As Long
'In i funktionen kommer en sökväg och ett filnamn. Samt en "caption" som
'tilldelas formens captionegenskap. I sökvägen lPath finns enhetsbeteckningen.
'Börja med att plocka ut enhetsbeteckningen, alltid de två vänstraste tecknen.
'För säkerhets skull ignorera fel
On Error Resume Next
Drive1.Drive = Left(lPath, 2)
'Sätt drive och dir och text1.text
vPath = lPath
Dir1.Path = lPath
On Error GoTo 0
'Visa formen
Me.Caption = lCaption
Me.Visible = True
'Invänta att användaren trycker nån av knapparna
'Detta förhindrar att kodexekveringen fortsätter efter
'calling procedure.
lOK = False
lNOK = False
Do
DoEvents
Loop Until lOK = True Or lNOK = True
'Återvänd från denna med värden och returvärde
If lOK = True Then
lPath = Dir1.Path
getPathFileName = 0
Else
getPathFileName = -1
End If
'Ladda ur formen
Unload Me
End Function
Private Sub Form_Unload(Cancel As Integer)
If lOK = False And lNOK = False Then
Cancel = True
End If
'Spara formulärets placering
Call SaveSetting(App.Path & "\settings.txt", "form pathfile", "top", Me.Top)
Call SaveSetting(App.Path & "\settings.txt", "form pathfile", "left", Me.Left)
End Sub
Private Sub Label2_Click()
'Klickar man på denna label såååå tar man bort felrutan
'och sätter enheten till c:
Picture1.Visible = False
Drive1.Drive = Left(vPath, 2)
Dir1.Path = vPath
End Sub
</code>