If List2.Selected(List2.ListIndex) = True Then MsgBox "Du har valgt at fjerne mikrofon: " & Mic(List2.ListIndex) Mic(List2.ListIndex) = "" List2.ListIndex = -1 Exit Do End If If (List2.Selected(List2.ListIndex) = True And Len(Mic(List2.ListIndex)) = 0) Then MsgBox "Du har valgt et tomt felt" Exit Do End If Loop
Mange offentlige legacy-systemer rummer kritisk forretningslogik, som ikke findes i dokumentationen, men kun i koden.
Slettet bruger
15. oktober 2003 - 18:50#1
Whoops... den røg afsted for tidligt...
Problemet er at programmet aldrig når ned til if-sætning nr. 2 (ved godt, at man burde kunne bruge else - men jeg har ikke fået det til at køre - forslag til forbedring modtages med kyshånd!)
Hvis jeg vælger et tomt felt i listboxen - får jeg bare beskeden "Du har valgt at fjerne mikrofon: "
Jeg synes der burde være taget højde for det i if-sætning nr. 2 - men den er ligeglad med om størrelsen af elementet i arrayet er 0.
ok.. for at jeg ikke skal sidde og gætte hvad du har af ting og sager i din kode, bedes du paste ALT den kode der bruges af funktionen der fjerner elementer fra listboxen.. dvs selve funktion, plus evt henvisninger til andet kode..
Synes godt om
Slettet bruger
15. oktober 2003 - 19:11#8
Kode fra Generals-sektionen Option Explicit Dim I As Integer Dim J As Integer Dim Mic(9) As String 'opretter array til mikrofoner Dim Antal As Integer
du skal bare fjerne disse linier fra cmdFjern_click sub'en:
'Opdaterer listen List2.Clear
For I = 0 To 9 List2.AddItem Mic(I) Next I
Synes godt om
Slettet bruger
15. oktober 2003 - 21:53#14
//thesurfer
Jeg kan da prøve.. Jeg har et array med x elementer... Disse elementer bliver listet i listboxen. Man skal så kunne selecte et element og derefter fjerne det fra både listen og arrayet...
du er klar over at følgende er en sub, og ikke en knap, ik?:
Private Sub cmdFjern_Click(ListIndex As Integer)
Synes godt om
Slettet bruger
15. oktober 2003 - 21:58#16
//thesurfer..
med risiko for at lyde dum - (er helt ny i forhold til VB) hvilken forskel gør det... (har fulgt diverse tutorials hvor "knapper" blev oprettet på denne måde??)
det virker lidt dumt/fjollet at kalde en sub eller en funktion for "cmd" (forkortelsen for Command, som i CommandButton = knap) "et eller andet" og derefter "_click" (som bruges når noget klikkes på)..
Synes godt om
Slettet bruger
15. oktober 2003 - 22:05#18
Du svarer ikke på hvad forskellen er? Man kan måske ikke først vælge noget i en listbox? Og derefter klikke en knap for at få udført det valg som brugeren foretager?
det med navnet: når du engang laver et større program, vil du helst ikke sidde og undre dig over hvordan den knap er henne.. plus, så er det nemmere for andre at hjælpe dig med koden..
til listboxen: jeg kan ikke se hvad det er den skal gøre med list1.. den bliver populated (udfyldt) med "Mikrofon nr. " 0 til 9.. og så sker der ikke mere..?
Synes godt om
Slettet bruger
15. oktober 2003 - 22:17#20
den kode du ser til list1 køres når programmet starter (Private Sub Form_Load)
Dette gøres for at vise bruger - hvor mange mikrofoner der p.t. er i arrayet...
Bruger kan vælge at tilføje/fjerne mikrofoner til/fra arrayet..
steyr>> Mit svar var baseret på din overskrift i spørgsmålet: fjerne et element i listbox
Synes godt om
Slettet bruger
15. oktober 2003 - 22:28#23
jeg er ved at lave et brugerinterface til et konferenceanlæg (et anlæg som styrer mikrofoner on/off) Når en mikrofon aktiveres sender konferenceanlægget en kode til pc'en via RS232. Denne kode skal sammenlignes med de mikrofoner der ligger i mit array.
Matcher kode i array og kode fra RS232 sammen skal mikrofon aktiveres.
Dit allerførste eksempel - den kode der er i dit oprindelige spørgsmål. Du looper jo ikke over noget som helst - listindex ændrer sig slet ikke!!! Så din loop-løkke er forkert - du har glemt at ændrer på listindex undervejs i dit loop.
Derudover bør du Dim'me dit array... Fx Dim Mic(9) as String hvis der skal være plads til 10 strings...
Derudover ville jeg omskrive fra If (List2.Selected(List2.ListIndex) = True And Len(Mic(List2.ListIndex)) = 0) Then til If (List2.Selected(List2.ListIndex) = True) And (Len(Mic(List2.ListIndex)) = 0) Then ' ved ikek om de paranteser er nødvendige, men dine paranteser set forkerte ud, synes jeg. Bare et gæt
VRØVL - det er for tidligt om morgenen. Glem hvad jeg sagde om loop, men husk at Dim'me dit array...
Prøv at ret til følgende, og fortæl om der stadig er fejl, og hvis ja, hvad er så fejlen? Bemærk, at dit Loop er fjernet
If List2.Selected(List2.ListIndex) = True Then If Len(Mic(List2.ListIndex)) = 0 Then MsgBox "Du har valgt et tomt felt" Else MsgBox "Du har valgt at fjerne mikrofon: " & Mic(List2.ListIndex) Mic(List2.ListIndex) = "" List2.Clear For I = 0 To 9 List2.AddItem Mic(I) Next I End If Else MsgBox "Du har slet ikke valgt noget - klovn" End If
Synes godt om
Slettet bruger
16. oktober 2003 - 10:05#27
// martin moth
pyha - jeg har faktisk ventet på, at du skulle smide en kommentar til min kode (ser ud til på x-perten, at du har godt styr på VB :-) :-) )
Har pastet din kode ind i mit projekt, og det kører næsten optimalt... Dog får jeg denne fejl, hvis jeg ikke har valgt noget i listboxen
Invalid property array index (Error 381)
Det forstår jeg ikke helt, da det ser ud til, at du har taget højde for det i din kode (Else -> MsgBox "Du har slet ikke valgt noget - klovn")
Nu skriver du ikke hvor fejlen opstår, og jeg har ikke VB her - ovenstående kode er skrevet ud fra "hukommelsen". Men fejlbeskedden er jo, at du bruger et ulovligt index i dit array. Husk, at dit array går fra 0-9, og din listindex fra 1-10. Derfor skal du nok bruge Mic(List2.Listindex - 1)
PS: der er mange der er 100 gange bedre til VB end jeg, fx. sjh, terry og andre... Så det skal du ikke lade dig imponere af...
Synes godt om
Slettet bruger
16. oktober 2003 - 10:35#29
Det ser ikke ud til at løse problemet..
Når jeg kører programmet får jeg den førnævnte fejl:
Invalid property array index (Error 381)
Hvis jeg vælger at debugge bliver første linje i koden valgt
If List2.Selected(List2.ListIndex) = True Then
Synes godt om
Slettet bruger
16. oktober 2003 - 10:45#30
// martin moth
Fik løst problemet med følgende kode sat ind i starten af koden
If List2.ListIndex = -1 Then MsgBox "Du har slet ikke valgt noget - klovn" Exit Sub End If
Er du sikker på du bruger debuggeren rigtigt, og du ikke bare kører step by step, hvorfor den naturligvis stopper ved den første linie (selvom der ikke er fejl).
Når du kører programmet, og fejlmeddelsen kommer, stiller VB sig ved den linie kode der fremkalder fejlen. Hvilken linie er det?
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.