[VB] Listbox + TXTFile Data Question

Pagina: 1
Acties:
  • 207 views sinds 30-01-2008
  • Reageer

  • Thunk
  • Registratie: Maart 2002
  • Laatst online: 05-09 14:13
Hey,
Ik heb de waarden de naamgegevens in een datafile in een listbox gezet. Nou wil ik dat als je op 1 van die namen klikt de overige productgegevens in textboxes ziet. Dit gebeurt met de routine PRODINF().
Nu heb ik deze code:

Private Sub lstViewList_Click()
lstViewList.Value = TempVal
For L = 1 To UBound(Supply)
If Supply(L).Naam = TempVal Then
PRODINF
End If
Next L

End Sub

Alleen als ik ergens op klik gebeurt er niks.
Wat doe ik fout?
is lstViewList.Value een getal en kan ik m daarom niet vergelijken met Supply(L).Naam (string)?
Ik zie eerlijk gezegd ff niet waar t aan kan liggen |:(

  • RobzQ
  • Registratie: Februari 2000
  • Laatst online: 21-12-2020

RobzQ

greedy as a pig

Stap er eens doorheen in debugging mode en controleer je variabelen een voor een..

..so be wary of any man who keeps a pig farm..


  • Gerco
  • Registratie: Mei 2000
  • Laatst online: 02-09 19:44

Gerco

Professional Newbie

Wat je moet gebruiken is ListIndex.

Je moet bij het vullen van de listbox zoiets doen:
code:
1
2
3
4
For i = 1 to 10
  lstBox.AddItem "Item " & CStr(i)
  lstBox.ItemData(lstBox.NewIndex) = 100-i
Next i

en dan kun je zo de itemdata uitlezen:
code:
1
2
3
Private Sub lstBox_Click()
  MsgBox lstBox.ItemData(lstBox.ListIndex)
End Sub

Je zet dus een uniek id van een produkt in de ItemData van het item. Bij de Click() kun je 'em aan de hand van dat ID opzoeken en laten zien.

Handiger is misschien een ListView te gebruiken, daar kun je meerdere kolommen data in kwijt.

- "Als ik zou willen dat je het begreep, legde ik het wel beter uit!" | All number systems are base 10!


  • Thunk
  • Registratie: Maart 2002
  • Laatst online: 05-09 14:13
zal t ff proberen
wat is CStr(i) dan?

  • Thunk
  • Registratie: Maart 2002
  • Laatst online: 05-09 14:13
Heb trouwens maar 1 kolom nodig met product namen, waarom zou ik dan meerdere kolommen moeten hebben :x

  • Thunk
  • Registratie: Maart 2002
  • Laatst online: 05-09 14:13
m'n listbox vul ik op deze manier, hoe kan ik nog jouw code er bij toevoegen dan?

Sub LISTBOXFILL()

For A = 1 To UBound(Supply)
lstViewList.AddItem Supply(A).Naam
Next A

End Sub

na For A.. blabla zetten en voor next A?

edit: dit is overigens allemaal niet bedoeld om mn topic omhoog te schoppen.. ben gwoon nogal desperate met listboxes ;)

  • Thunk
  • Registratie: Maart 2002
  • Laatst online: 05-09 14:13
Sorry gerco maar met jouw code komt mijn programma niet echt uit.. denk dat ik de integratie niet goed doe.. zijn er btw nog andere manieren dan die jij net deed?

Zoiets als ik eerst deed, alleen dan aangepast?

  • robjanssen
  • Registratie: September 2001
  • Laatst online: 02-08 16:10

robjanssen

Software Developer

Probeer eens zoiets:
code:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
Private Sub Form_Load()

For i = 1 To UBound(Supply)
  lstViewList.AddItem Supply(i).Naam
Next i

End Sub

Private Sub lstViewList_Click()

For i = 1 To UBound(Supply)
  If Supply(i).Naam = lstViewList.List(lstViewList.ListIndex) Then
    PRODINF
  End If
Next i

End Sub

Private Sub PRODINF()

End Sub

  • Thunk
  • Registratie: Maart 2002
  • Laatst online: 05-09 14:13
Sorry, werkt niet.
Is er nog een andere manier, bijvoorbeeld zoiets dat ik had, alleen aangepast?!

  • Thunk
  • Registratie: Maart 2002
  • Laatst online: 05-09 14:13
Tis de bedoeling dat ie de waarde van de geklikte item haalt (de naam dus, bijvoorbeeld Kaas)
dan door de supplies gaat, als Kaas is gevonden dat ie dan PRODINF uitvoert...
zoiets zoek ik!?

  • whoami
  • Registratie: December 2000
  • Laatst online: 11:04
't is wel een beetje very basic hoor.

Je kunt toch gewoon de waarde van het geselecteerde item gaan ophalen. Ik weet de precieze syntax niet in VB maar in Delphi gaat het bv zo:
code:
1
SelItem := ListBox.Items[ListBox.ItemIndex];

https://fgheysels.github.io/


  • Thunk
  • Registratie: Maart 2002
  • Laatst online: 05-09 14:13
Ik probeerde net die Gerco code:

For a = 1 To UBound(Supply)
lstViewList.AddItem Supply(a).Naam & CStr(a)
lstViewList.ItemData(lstViewList.NewIndex) = UBound(Supply) - a
Next a

Dat lijkt mij de goede aanpassing voor mijn script,
maar als ik m uitvoer krijg ik:


[NewIndex]: kan de methode of gegevenslid niet vinden,
wat doe ik dan fout?

  • Gerco
  • Registratie: Mei 2000
  • Laatst online: 02-09 19:44

Gerco

Professional Newbie

Gebruik je VBA?

In dat geval zou het best weleens kunnen dat die methode niet bestaat nee.

- "Als ik zou willen dat je het begreep, legde ik het wel beter uit!" | All number systems are base 10!


  • Thunk
  • Registratie: Maart 2002
  • Laatst online: 05-09 14:13
Ik moet het helaas in VBA doen hoewel ik ook VB heb.
Schoolopdracht :(
Enig ander idee dan?

  • Thunk
  • Registratie: Maart 2002
  • Laatst online: 05-09 14:13
24 uur zijn wel voorbij,.. up yuo go!

  • Thunk
  • Registratie: Maart 2002
  • Laatst online: 05-09 14:13
In VBA, hoe? Ben er nog steeds niet uit sorry hoor.

  • Gerco
  • Registratie: Mei 2000
  • Laatst online: 02-09 19:44

Gerco

Professional Newbie

Als de List() methode wel bestaat in VBA kun je misschien de record opzoeken met de waarde die je in de lijst zet (alleen als die uniek zijn natuurlijk).

Dan kun je zoiets als List1.List(List1.ListIndex) doen.

- "Als ik zou willen dat je het begreep, legde ik het wel beter uit!" | All number systems are base 10!


  • Thunk
  • Registratie: Maart 2002
  • Laatst online: 05-09 14:13
zal t proberen
Pagina: 1