/ Forside / Teknologi / Udvikling / VB/Basic / Nyhedsindlæg
Login
Glemt dit kodeord?
Brugernavn

Kodeord


Reklame
Top 10 brugere
VB/Basic
#NavnPoint
berpox 2425
pete 1435
CADmageren 1251
gibson 1230
Phylock 887
gandalf 836
AntonV 790
strarup 750
Benjamin... 700
10  tom.kise 610
Søgning i Listbox
Fra : Casper Clausen


Dato : 06-08-01 11:20

Jeg har hørt at der skulle være et API kald til at søge i listboxes med hvor
det går meget hurtigere end hvad man kan lave med en for.next løkke. Er der
ën der kan give mig et eksempel??

Venlig hilsen
Casper Clausen
Svar venligst på casperc@get2net.dk såvel som nyhedsgruppen så andre også
kan følge med




 
 
Jens Andersen (06-08-2001)
Kommentar
Fra : Jens Andersen


Dato : 06-08-01 16:00

Er det noget i denne her stil du søger

Option Explicit

Private Sub Form_Load()

List1.AddItem "Jens"
List1.AddItem "Tine"

End Sub

Private Sub Command1_Click()

MsgBox Sog("Tine")

End Sub

Property Get Sog(ByVal Navn As String) As Long

Dim Tel As Long

For Tel = 0 To List1.ListCount - 1
If List1.List(Tel) = Navn Then Sog = Tel
Next

End Property




Jens Andersen (06-08-2001)
Kommentar
Fra : Jens Andersen


Dato : 06-08-01 16:25

Ups det kan godt være denne her er bedere

Her tænker jeg nemlig også på hvis der er flere med samme navn eller hvis
der slet ikke er nogle

Property Get Sog(ByVal Navn As String) As String

Dim Tel As Long

Sog = ""
Tel = 0

For Tel = 0 To List1.ListCount
If List1.List(Tel) = Navn Then
If Sog = "" Then
Sog = Tel
Else
Sog = Sog & vbCrLf & Tel
End If
End If
If Tel = List1.ListCount And Sog = "" Then Sog = "Findes ikke i listen
!"
Next

End Property




Bjarke Walling Peter~ (06-08-2001)
Kommentar
Fra : Bjarke Walling Peter~


Dato : 06-08-01 19:52

Jens Andersen skrev:
> Ups det kan godt være denne her er bedere
>
> Her tænker jeg nemlig også på hvis der er flere med samme navn eller hvis
> der slet ikke er nogle
>
> Property Get Sog(ByVal Navn As String) As String
>
> Dim Tel As Long
>
> Sog = ""
> Tel = 0
>
> For Tel = 0 To List1.ListCount
> If List1.List(Tel) = Navn Then
> If Sog = "" Then
> Sog = Tel
> Else
> Sog = Sog & vbCrLf & Tel
> End If
> End If
> If Tel = List1.ListCount And Sog = "" Then Sog = "Findes ikke i listen
> !"
> Next
>
> End Property

Men det er jo ikke API...
Og foresten så mangler du at skrive -1 efter ListCount.
.... ellers virker det fint.

- Bjarke Walling Petersen



Casper Clausen (06-08-2001)
Kommentar
Fra : Casper Clausen


Dato : 06-08-01 21:59

Tak for svaret, men ideen er at man skal kunne skrive en del af et listitem
og få alle dem der indeholder det man har skrevet, for at lave det skal man
så have en løkke inde i løkken med din kode. Når man så kommer og omkring de
5000 items kan den metode godt tage lidt tid. Derfor er er det vigtigt at
det er en hurtig metode, og det har jeg hørt API metoden skulle være.

Bjarke Walling Petersen <bwp@bwp.dk> skrev i en
nyhedsmeddelelse:9kmov2$98b$1@news.cybercity.dk...
> Jens Andersen skrev:
> > Ups det kan godt være denne her er bedere
> >
> > Her tænker jeg nemlig også på hvis der er flere med samme navn eller
hvis
> > der slet ikke er nogle
> >
> > Property Get Sog(ByVal Navn As String) As String
> >
> > Dim Tel As Long
> >
> > Sog = ""
> > Tel = 0
> >
> > For Tel = 0 To List1.ListCount
> > If List1.List(Tel) = Navn Then
> > If Sog = "" Then
> > Sog = Tel
> > Else
> > Sog = Sog & vbCrLf & Tel
> > End If
> > End If
> > If Tel = List1.ListCount And Sog = "" Then Sog = "Findes ikke i
listen
> > !"
> > Next
> >
> > End Property
>
> Men det er jo ikke API...
> Og foresten så mangler du at skrive -1 efter ListCount.
> ... ellers virker det fint.
>
> - Bjarke Walling Petersen
>
>



Helge Bjørkhaug (06-08-2001)
Kommentar
Fra : Helge Bjørkhaug


Dato : 06-08-01 22:52

On Mon, 6 Aug 2001 22:58:48 +0200, "Casper Clausen"
<casperc@get2net.dk> wrote:

>Tak for svaret, men ideen er at man skal kunne skrive en del af et listitem
>og få alle dem der indeholder det man har skrevet, for at lave det skal man
>så have en løkke inde i løkken med din kode. Når man så kommer og omkring de
>5000 items kan den metode godt tage lidt tid. Derfor er er det vigtigt at
>det er en hurtig metode, og det har jeg hørt API metoden skulle være.
>
[snip]
Har brukt den en gang i ett prosjekt.
Gi meg frist til i morgen, så skal jeg finne den....

--
Snutten
Fjern helge fra mail adressen før du svarer.

No of SETI units returned: 5456
Processing time: 10 years, 307 days, 6 hours.
(Total hours: 94974)
www.setiathome.ssl.berkeley.edu

Helge Bjørkhaug (06-08-2001)
Kommentar
Fra : Helge Bjørkhaug


Dato : 06-08-01 23:27

On Mon, 06 Aug 2001 23:51:43 +0200, Helge Bjørkhaug
<helgesnutten@techie.online.no> wrote:

>On Mon, 6 Aug 2001 22:58:48 +0200, "Casper Clausen"
><casperc@get2net.dk> wrote:
>
>>Tak for svaret, men ideen er at man skal kunne skrive en del af et listitem
>>og få alle dem der indeholder det man har skrevet, for at lave det skal man
>>så have en løkke inde i løkken med din kode. Når man så kommer og omkring de
>>5000 items kan den metode godt tage lidt tid. Derfor er er det vigtigt at
>>det er en hurtig metode, og det har jeg hørt API metoden skulle være.
>>
>[snip]
>Har brukt den en gang i ett prosjekt.
>Gi meg frist til i morgen, så skal jeg finne den....

Her kommer'n.......

Private Declare Function SendMessage Lib "User32" _
Alias "SendMessageA" (ByVal hWnd As Long, ByVal _
wMsg As Long, ByVal wParam As Long, lParam As Any) As Long
Const LB_FINDSTRING = &H18F

Private Sub Command1_Click()
List1.ListIndex = SendMessage(List1.hWnd, LB_FINDSTRING, -1, ByVal
"Item 450")
End Sub

Private Sub Form_Load()
For X = 1 To 500
List1.AddItem "Item " & CStr(X)
Next X
End Sub

Kan også brukes på Combobox,
bytt ut Const LB_FINDSTRING = &H18F med Const CB_FINDSTRING = &H14C


--
Snutten
Fjern helge fra mail adressen før du svarer.

No of SETI units returned: 5456
Processing time: 10 years, 307 days, 6 hours.
(Total hours: 94974)
www.setiathome.ssl.berkeley.edu

Søg
Reklame
Statistik
Spørgsmål : 177501
Tips : 31968
Nyheder : 719565
Indlæg : 6408527
Brugere : 218887

Månedens bedste
Årets bedste
Sidste års bedste