29. november 2003 - 18:30Der er
5 kommentarer og 1 løsning
Hjælp med RemoveItem
Hej fra en Nybegynder
Jeg har et problem med at jeg har lavet 10 Checkboxe der overføre værdier fra 1 til 10 til en listbox.Nu er mit problem så,hvis jeg sætter Checkboxene til Unchecked vil jeg gerne have at værdien bliver fjernet fra listboxen igen.Jeg har lavet følgende kode i hver Checkbox. Private Sub Check1_Click() If Check1.Value = 1 Then List1.AddItem 1 Else List1.RemoveItem.Index 1 End If End Sub Det virker ikke helt som jeg havde håbet ;-) Kan en af jer hjælpe mig?
Problemet er at index skifter når du fjerner f.eks. item 2. Så rykker de øvrige en plads op. Kan du ikke lade listeboksen have værdierne 0 eller 1 efter om chekboksen er sat eller ej? Så er der altid 10 værdier.
Der findes andre løsninger, men tlnk lige over denne simple.
Jeg har brug for at når jeg har sat 4 Chekboxe til vbChecked og så sætter den til vbUnchecked,så fjerner den værdien fra listboxen.Har haft den til at fjerne værdier fra boxen,men det er desværre kun den sidste der er sat ind i feltet den fjerner og ikke den som den skal...
Jeg ved ikke hvad formålet er med at en listeboks skal indeholde værdier fra tjekbokse. Selve det lyder for mig som lidt molboagtigt. Idéen med tjekbokse er at en kommando udføres forskelligt efter om en tjekboks er markeret eller ikke er markeret. Hvorfor så skrive værdien til en anden kontrol, hvor det er meget vanskeligere at få fat i den relevante igen?
Men ønsker du virkelig noget sådant udført, så må du knytte et yderligere indeks til hver post i listeboksen, nemlig det indeks som tjekboksen har. Derved vil du kunne identificere det rigtige 1-tal, ligegyldigt hvilket listindekx, det har. Men som sagt, det virker total, codyl mærkeligt, det du har gang i. Se om andre har lyst til at skrive kodeeksempler. Læs om arrays i hjælpen, det er også en vej.
Altså. Er det bare en øvelse? Eller skal det bruges til noget?
Jeg har lavet et eksempel med 5 tjekbokse der skriver deres eget index til en list, når de sætter aktive.
Dim a As Integer
Private Sub Check1_Click(Index As Integer) If Check1(Index).Value = 1 Then List1.AddItem Check1(Index).Index Else If List1.ListCount = 0 Then Exit Sub For a = 0 To List1.ListCount - 1 List1.ListIndex = a If List1.Text = Check1(Index).Index Then List1.RemoveItem a Exit Sub End If Next a End If End Sub
Alt er bare øvelse for mig her i starten,Jeg har kun leget med VB i 3 uger nu og prøver så godt jeg kan at lavet nogle projekter jeg har sat mig i hovdet. Men forhåbentlig bliver jeg bedre en dag. Du skal i hvert tilfælde have tak "Det Virkede"...
M.V.H. Kim
Synes godt om
Ny brugerNybegynder
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.