Toon posts:

[VB] Listbox meerdere items opslaan

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

Verwijderd

Topicstarter
Hallo allemaal,

Ik ben voor stage bezig met een simpele applicatie. Ik moet gewoon enkele form waarden opslaan. Dit alles gebeurt op een PDA. Alles van het formulier wordt lokaal opgeslagen in een database en met active sync weer gesynct met een pc. Maar dat is voor het verhaal niet zo belangrijk. De applicatie, nou applicatie, tis eigenlijk maar een formulier, moet enkele gegevens dus opslaan. Nou wilde ik daar de listbox van VB voor gebruiken. Na wat gekut kwam ik erachter dat Listbox1.Text niet werkte, en alleen een lege string gaf en dat ik dus
code:
1
List1.List(List1.ListIndex)

moet gebruiken. Deze methode geeft echter alleen de string terug waar je met je cursor op dat moment op staat en ik wil ook meerdere items op kunnen slaan. Ik wil dus dat gebruikers in de listbox meerdere dingen kunnen aanklikken (dat kan al) en dat deze ook opgeslagen worden (dat kan nog niet, alleen het laatst geselecteerde wordt opgeslagen) Weet iemand hoe ik de meerdere waarden kan uitlezen of heeft iemand een alternatief?

  • whoami
  • Registratie: December 2000
  • Nu online
De MultiSelect property van uw listbox op true zetten.
Alle items van de listbox overlopen.
Als een item geselecteerd is, opslaan.

https://fgheysels.github.io/


Verwijderd

Topicstarter
Ja multiselect staat op true. Maar moet ik dan eerst de listindex uitlezen ofzo en aan de hand daarvan een voor een de geselecteerde waarden weer eruit halen? Meerdere dingen selecteren lukt wel, hij slaat ze alleen niet op....

  • whoami
  • Registratie: December 2000
  • Nu online
ListIndex is de property waarmee je een bepaald item kunt selecteren of waarmee je kunt weten welk item in de list geselecteerd is.
In C# en VB.NET heb je iets als ListBox.SelectedItems waarmee je direct een collection krijgt van alle items die in uw listbox geselecteerd zijn, maar ik weet niet of je dat in VB ook hebt. Ik denk het niet.

Je moet gewoon gaan lopen door al uw items van uw listbox en bij ieder item gaan kijken of de Selected property op true staat. Staat het op True, dan is het geselecteerd en kun je het gaan opslaan.
code:
1
2
3
4
5
for Indx := 0 to ListBox.Items.Count - 1 do begin
  if ListBox.Items[Indx].Selected then begin
     SaveListItem();
  end;
end;

https://fgheysels.github.io/


Verwijderd

Topicstarter
Ah thnx, ik kom niet zo snel uit de code die je hebt gegeven, maar dat maakt niet uit, je heb me weer op een idee gebracht. Ik ga ff aan de slag met de .selected property, stom dat ik die over het hoofd heb gezien.
THNX!

Verwijderd

Topicstarter
Voor geintreseerden op MSDN staat er (uiteraard) een stuk over, stom dat ik dat niet heb gezien: |:(
http://msdn.microsoft.com/library/default.asp?url=/library/en-us/dninvb00/html/ivb0064.asp

Verwijderd

Topicstarter
Hmm ik kom er toch niet helemaal uit.
Op MSDN stond een artikel met dit voorbeeldje erin:
code:
1
2
3
4
5
For i = 0 To list1.ListCount
    If list1.Selected(i) = True Then
      MsgBox "Selected Item: " & list1.List(i)
    End If
Next

Wat ik voor mijn form het liefst zou willen is alles in een variabele flikkeren zodat ik het later weer uit kan lezen.

Dus zoiets:
code:
1
2
3
4
5
For i = 0 To list1.ListCount
    If list1.Selected(i) = True Then
      Variabele = Variabele & list1.List(i)
    End If
Next

Bij allebei de stukjes code, dus ook de voorbeeld code krijg ik de melding:
Subscript out of range.
De voorbeeld code werkte voor de rest wel, dus ik zag eerst bijvoorbeeld 3 keer een message box als ik 3 dingen had geselecteerd en de geselecteerde text erin. Maar daarna kwam de error.
Heb dat iets te maken met dat het een VB voorbeeld is en de applicatie draait in eVB? Hmm ik heb het gevoel dat er een simpele oplossing is, maar toch kan ik het niet echt vinden op MSDN of DEVBUZZ

  • whoami
  • Registratie: December 2000
  • Nu online
Subscript out of range wil zeggen dat je buiten de grenzen van een array gaat.
Er zou toch wel een lichtje moeten gaan branden bij deze foutmelding hoor.

VB en alle andere moderne development environments hebben zo een handig tooltje, dat ook wel eens een 'debugger' genoemd wordt...

En WTF is eVB ?

https://fgheysels.github.io/


Verwijderd

Topicstarter
eVB is Visual Basic voor mobiele pc'tjes als de pocket pc. De debugger zegt niet veel meer dan
Idientifier under cursor not recoginized
Ik las al iets over "Re-Dimmen" ofzo, maar werd er niet veel wijzer van....

Verwijderd

Topicstarter
Misschien was het handig geweest als ik had gezegd dat ik nogal een beginner ben. Ben niet gewend wat te posten meestal kom ik een heel eind met de search van tweakers, MSDN of devbuzz....

  • whoami
  • Registratie: December 2000
  • Nu online
Dat is de compiler die dat zegt.
Met de debugger kun je stap voor stap door je programma wandelen en zien waar wat foutloopt.

https://fgheysels.github.io/


  • whoami
  • Registratie: December 2000
  • Nu online
Op dinsdag 16 april 2002 11:50 schreef Ch1Ch3ng het volgende:
Dus zoiets:
code:
1
2
3
4
5
For i = 0 To list1.ListCount
    If list1.Selected(i) = True Then
      Variabele = Variabele & list1.List(i)
    End If
Next
Wat wil je hiermee bereiken?
Waarom
code:
1
Variable = Variable & List1.List(i)

?

Je zult die variable ook moeten declareren natuurlijk, vandaar dat de compiler klaagt.

https://fgheysels.github.io/


  • whoami
  • Registratie: December 2000
  • Nu online
Op dinsdag 16 april 2002 11:59 schreef Ch1Ch3ng het volgende:
Misschien was het handig geweest als ik had gezegd dat ik nogal een beginner ben. Ben niet gewend wat te posten meestal kom ik een heel eind met de search van tweakers, MSDN of devbuzz....
Misschien ben je met een boek over VB wel beter af dan met de MSDN, devbuzz of GoT.

https://fgheysels.github.io/


  • DigiK-oz
  • Registratie: December 2001
  • Laatst online: 09-09 19:29
Op dinsdag 16 april 2002 11:50 schreef Ch1Ch3ng het volgende:
Bij allebei de stukjes code, dus ook de voorbeeld code krijg ik de melding:
Subscript out of range.
De voorbeeld code werkte voor de rest wel, dus ik zag eerst bijvoorbeeld 3 keer een message box als ik 3 dingen had geselecteerd en de geselecteerde text erin. Maar daarna kwam de error.
FOR i = 0 TO list1.listcount - 1

Whatever


Verwijderd

Topicstarter
Op dinsdag 16 april 2002 12:02 schreef whoami het volgende:

[..]

Wat wil je hiermee bereiken?
Waarom
code:
1
Variable = Variable & List1.List(i)

?
Nou ik wil dus dat de variabele gevuld wordt met de waarden uit het select menu, in ASP deed ik het eigenlijk altijd zo.
Je zult die variable ook moeten declareren natuurlijk, vandaar dat de compiler klaagt.
Ja in principe Dim ik het wel aan begin van de functie, maar dat zal ik wel niet goed doen, maar ik ga zelf wel ff op zoek, want dat is gewoon een kwestie van gebrek aan ervaring. Ik dacht dat iemand misschien in een oogopslag zou zien wat er fout was of wat er ontbrak.

  • whoami
  • Registratie: December 2000
  • Nu online
Je wilt dus met een array werken.

https://fgheysels.github.io/


Verwijderd

Topicstarter
Op dinsdag 16 april 2002 12:05 schreef sjis het volgende:

[..]

FOR i = 0 TO list1.listcount - 1
Ow shit sorry dit stond al in de thread volgens mij. hmpf beetje lomp bezig vandaag srry. iig bedankt!

  • whoami
  • Registratie: December 2000
  • Nu online
Op dinsdag 16 april 2002 12:05 schreef sjis het volgende:

[..]

FOR i = 0 TO list1.listcount - 1
Ik had het hem eens zelf laten uitzoeken..

https://fgheysels.github.io/


  • mim
  • Registratie: Juni 2001
  • Laatst online: 03-05-2007

mim

Op dinsdag 16 april 2002 11:50 schreef Ch1Ch3ng het volgende:
Hmm ik kom er toch niet helemaal uit.
Op MSDN stond een artikel met dit voorbeeldje erin:
code:
1
2
3
4
5
For i = 0 To list1.ListCount
    If list1.Selected(i) = True Then
      MsgBox "Selected Item: " & list1.List(i)
    End If
Next

Wat ik voor mijn form het liefst zou willen is alles in een variabele flikkeren zodat ik het later weer uit kan lezen.

Dus zoiets:
code:
1
2
3
4
5
For i = 0 To list1.ListCount
    If list1.Selected(i) = True Then
      Variabele = Variabele & list1.List(i)
    End If
Next

Bij allebei de stukjes code, dus ook de voorbeeld code krijg ik de melding:
Subscript out of range.
De voorbeeld code werkte voor de rest wel, dus ik zag eerst bijvoorbeeld 3 keer een message box als ik 3 dingen had geselecteerd en de geselecteerde text erin. Maar daarna kwam de error.
Heb dat iets te maken met dat het een VB voorbeeld is en de applicatie draait in eVB? Hmm ik heb het gevoel dat er een simpele oplossing is, maar toch kan ik het niet echt vinden op MSDN of DEVBUZZ
Volgens mij moet er in beide gevallen nog een -1 achter de listcount dus zoiets:


For i = 0 To list1.ListCount -1 <<<<<<<<
If list1.Selected(i) = True Then
MsgBox "Selected Item: " & list1.List(i)
End If
Next

Doe je dit niet dan krijg je dus een 'Subscript Out Of Range' fout omdat je dan altijd 1 maal meer de lus doorloopt dan dat er items zijn.

Verwijderd

Topicstarter
Hey bedankt voor de hulp he, sorry dat ik het een beetje lomp van mijn kant was. Uiteindelijk heb ik nu dit:
code:
1
2
3
4
5
6
7
8
9
10
11
12
Private Sub Command1_Click()
Dim Textje
Dim i As Integer

For i = 0 To list1.ListCount - 1
    If list1.Selected(i) = True Then
      Textje = Textje & list1.List(i)
    End If
Next i

Label1.Caption = Textje
End Sub

Dit heb ik even gebruikt om te testen. Ik heb dus een Listbox met waarden. Er kunnen meerdere waarden geselecteerd worden en zodra je op de command button druk gooit ie de geselecteerde waarden in een variabele. Voor het gemak laat de waarden nu even zien in label1, zodat ik even kan zien water mee gebeurt. Op zich een simpel verhaal maar ik kwam er even niet uit, sorry als ik iemands tijd verspilt heb.
Laterzzz
Pagina: 1