Avatar billede fqthjoe Nybegynder
18. september 2002 - 13:34 Der er 9 kommentarer og
1 løsning

Data i ComboBox.

Kan man opdater sin combo-liste automatisk, hvor den viser filnavnene fra en bestemt mappe.
F.eks. hvis der ligger følgende filer i mappen c:\knud - 1.jgp, 2.jpg, 3.jpg
Så viser Combo-boksen disse navne. Og hvis man så smider flere filer ind i mappen, ja så bliver Combo-boksen opdaterret.
Kan det lade sig gøre ?
Avatar billede martin_moth Mester
18. september 2002 - 14:30 #1
hmmm - hvis en ekstern applikation (fx. stifinderen) ændrer indholdet af en mappe, så skal du kunne opfange denne ændring fra dit VB-program - det tror jeg ikke du kan. Men jeg lytter lige med, just in case.

PS: En fuskerløsning er jo at have en timer, der fx. en gang i sekundet opdaterer indholdet. Den løsning er nem at lave, men det er vel ikke det du vil have? /Martin
Avatar billede fqthjoe Nybegynder
18. september 2002 - 17:14 #2
Tja. egentligt rigtigt forstået. Men som alternativ kunne jeg godt tænke mig at se løsningen med timeren på. Eller at jeg alternativt smider den i min form_load. Og så skal jeg selvfølge bare starte prg. forfra når der smides nye ting i mappen. Eller bare have lukket mit prg. når jeg smider filer i mappen. Så vil da gerne se løsningen :-)
Avatar billede mikker Nybegynder
18. september 2002 - 18:22 #3
Private Sub Timer1_Timer()
List1.Clear
For i = 0 To (File1.ListCount - 1)
List1.AddItem File1.List(i)
Next i
End Sub

Du kan sætte timeren til hvad du vil, personligt synes jeg det er irriterende med hvert sekund fordi listboksen blinker. Jeg har valgt en listbox istedet for en combo...
Nedenstående vælger kun .jpg filer ud
Anyway kig på det.

Private Sub Timer1_Timer()
List1.Clear
For i = 0 To (File1.ListCount - 1)
If LCase(Right(File1.List(i), 3)) = "jpg" Then List1.AddItem File1.List(i)
Next i
End Sub

- Mikker
Avatar billede fqthjoe Nybegynder
18. september 2002 - 18:38 #4
Takker. Men får fejl ved File1.Listcount...
Den sige variable ikker er defineret ?
Hvor ved den hvilke mappe den skal "kigge" i ? Tager den mappen som prg. køres fra ?
Avatar billede mikker Nybegynder
18. september 2002 - 18:55 #5
Nu har jeg leget lidt med tanken :o)

Private Sub Dir1_Change()
File1.Path = Dir1.Path
Timer1_Timer
End Sub

Private Sub Drive1_Change()
Dir1.Path = Drive1.Drive
End Sub


Private Sub Form_Load()
List2.Visible = False
Image1.Stretch = True
Label1.Visible = False
Timer1_Timer


End Sub

Private Sub List1_Click()
Dim sti As String
sti = File1.Path
DoEvents
If Len(File1.Path) > 3 Then sti = File1.Path & LTrim("\")
Image1.Picture = LoadPicture(sti & List1.Text)
End Sub

Private Sub Timer1_Timer()
For i = 0 To (File1.ListCount - 1)
If File1.List(i) <> List2.List(i) Then
    List2.Clear
    List1.Clear
    For x = 0 To (File1.ListCount - 1)
    List2.AddItem File1.List(x)
    If LCase(Right(File1.List(x), 3)) = "jpg" Then List1.AddItem File1.List(x)
    Next x
End If
DoEvents
Next i
End Sub

- Mikker
Avatar billede mikker Nybegynder
18. september 2002 - 18:58 #6
Du kan ændre lidt i din form_load() selvfølgelig...

Private Sub Form_Load()
' *********************************
Drive1.Drive = App.Path
' *********************************
List2.Visible = False
Image1.Stretch = True
Label1.Visible = False
Timer1_Timer
End Sub
Avatar billede mikker Nybegynder
18. september 2002 - 19:24 #7
Hvis ikke du kan bruge det, så har jeg da moret mig i en times tid :o)

Nu her jeg form1 OG form2

Der er kun få ændringer til form1... Men her er det hele
Form1:


Private Sub Dir1_Change()
File1.Path = Dir1.Path
Timer1_Timer
End Sub

Private Sub Drive1_Change()
Dir1.Path = Drive1.Drive
End Sub


Private Sub Form_Load()
Drive1.Drive = App.Path
List2.Visible = False
Image1.Height = 1000 ' twips !!!
Image1.Width = 1000 ' twips !!!
Image1.Stretch = True
Label1.Visible = False
Timer1_Timer
End Sub

Private Sub Image1_Click()
Form2.Show
End Sub

Private Sub List1_Click()
Dim sti As String
sti = File1.Path
DoEvents
If Len(File1.Path) > 3 Then sti = File1.Path & LTrim("\")
Image1.Picture = LoadPicture(sti & List1.Text)
End Sub

Private Sub Timer1_Timer()
For i = 0 To (File1.ListCount - 1)
If File1.List(i) <> List2.List(i) Then
    List2.Clear
    List1.Clear
    For x = 0 To (File1.ListCount - 1)
    List2.AddItem File1.List(x)
    If LCase(Right(File1.List(x), 3)) = "jpg" Then List1.AddItem File1.List(x)
    Next x
End If
DoEvents
Next i
End Sub


Her er form2:

Private Sub Form_Click()
Picture1.Cls
Unload Me
Form1.SetFocus
End Sub

Private Sub Form_Load()
Me.AutoRedraw = True
Me.WindowState = 2
With Picture1
.AutoRedraw = True
.AutoSize = True
.Picture = Form1.Image1.Picture
.Refresh
End With
End Sub

Private Sub Picture1_Click()
Picture1.Cls
Unload Me
Form1.SetFocus
End Sub

Endnu engang takker jeg fordi du har givet mig noget at tumle lidt med :o)
Spørg endelig løs, jeg er tilbage imorgen.

- Mikker
Avatar billede mikker Nybegynder
19. september 2002 - 20:11 #8
HMMmmm ikke interessant nok?

- Mikker
Avatar billede fqthjoe Nybegynder
24. september 2002 - 19:49 #9
Jo meget interessant.. Mange tak for hjælpen... Grunden til det sene svar, er at der lige kom noget i vejen, så jeg først nu har tjekket det. Takker mange gange :-)
Avatar billede mikker Nybegynder
25. september 2002 - 16:57 #10
Selv tak :o)

- Mikker
Avatar billede Ny bruger Nybegynder

Din løsning...

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.

Loading billede Opret Preview
Kategori
Kurser inden for grundlæggende programmering

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester