Avatar billede thewizard Nybegynder
23. januar 2008 - 22:55 Der er 18 kommentarer

Slette objekt i array

Hej :)

Jeg har lavet et 10 knapper på en form. Alle er i array med hinanden, fra 0 til 9. Hvordan sletter jeg knap nr. 7? Den skal fjernes fra formen, ikke bare visible = false.

Samtidig må arrayet ikke blive påvirket. Da jeg senere vil kunne lave knap nr. 7 igen ;).

Tough spørgsmål, håber nogen derude kan finde ud af det.
Avatar billede supertekst Ekspert
23. januar 2008 - 22:59 #1
Det kan lade sig gøre ved at opbygge knapperne dynamisk - men hvordan skal tilstedeværelse af de enkelte knapper styres?
Avatar billede thewizard Nybegynder
23. januar 2008 - 23:02 #2
Hvordan mener du, supertekst? :o.
Avatar billede thewizard Nybegynder
23. januar 2008 - 23:05 #3
Kan faktisk forklare det bedre.
2 listbokse og en masse knapper. Knapperne får deres left og top-attributes fra listboxene. I det man trykker på en bestemt knap, laves 10 knapper, med "koordinaterne" ud fra hvad der står i de to listbox'e.

Men personen kan senere vælge at fjerne et koordinat fra hver af listboxene, og når knappen trykkes igen, så fjernes én knap fra formen :O.

Giver det bedre mening nu?
Avatar billede thewizard Nybegynder
23. januar 2008 - 23:06 #4
(listbox1 indeholder top-"koordinatet", listbox2 indeholder left-"koordinatet")
Avatar billede thewizard Nybegynder
23. januar 2008 - 23:07 #5
Og knapperne SKAL være i array :/
Avatar billede thewizard Nybegynder
23. januar 2008 - 23:11 #6
Så opsummering:

2 listboxe, som indeholder tal. Tal som giver info om hvor knapperne skal stå.
1 "start"-knap som opretter 10 knapper i array.
10 knapper, som intet kan.

Brugeren skal kunne slette et par koordinater fra listboxen, og trykke igen på "start" knappen, som derefter lave 100 eller måske 3 knapper. Alt efter hvor mange koordinater der er i listboxene.
Avatar billede supertekst Ekspert
23. januar 2008 - 23:11 #7
Med dynamisk mener jeg at de enkelte knapper oprettes via VBA-kode.
Avatar billede thewizard Nybegynder
23. januar 2008 - 23:13 #8
Jeg er oldschool koder, selvoplært ;) VBA-kode? Ja knapperne bliver oprettet on-the-fly.
Avatar billede thewizard Nybegynder
23. januar 2008 - 23:15 #9
i = 0
Do Until i = lstX.ListCount
   
    Load knap(i + 1)
    knap(i + 1).Left = lstX.List(i)
    knap(i + 1).Top = lstY.List(i)
    knap(i + 1).Visible = True

         
    i = i + 1
Loop


Sådan laves knapperne. Det er jo nemt nok. Men hvordan fjerner vi dem så igen? ;).
Avatar billede supertekst Ekspert
23. januar 2008 - 23:25 #10
Hvad gemmer der sig mig Load knap?
Avatar billede thewizard Nybegynder
23. januar 2008 - 23:30 #11
Pt. lægger der kun knap(0) ... load knap(i+1), henter knap(1) frem .. :).
Avatar billede thewizard Nybegynder
23. januar 2008 - 23:32 #12
knap(0) er bare gemt - den har ingen betydning, den skal bare være starten på "kopierne".
Avatar billede supertekst Ekspert
23. januar 2008 - 23:41 #13
Måske kan dette hjælpe:

Private Sub UserForm_activate()
    danKnapper
   
    Stop
   
    sletKnapper
End Sub
Private Sub danKnapper()
    bygKnap 10, 10, "Knap1", "cb_1"
    bygKnap 10, 50, "Knap2", "cb_2"
   
End Sub
Private Sub bygKnap(Xleft, Xtop, xCap, xName)
    Set cc = UserForm1.Controls.Add("Forms.commandbutton.1", Visible)
   
    With cc
        .Top = Xtop
        .Left = Xleft
        .Name = xName
        .Width = 60
        .Height = 18
        .Caption = xCap
    End With
End Sub
Private Sub sletKnapper()
    For Each cc In UserForm1.Controls
        If InStr(cc.Name, "cb_") = 1 Then
            Controls.Remove cc.Name
        End If
    Next
End Sub
Avatar billede thewizard Nybegynder
23. januar 2008 - 23:46 #14
Hvad skal der være på formen? :) Du har ændret dit navn på form1, til userform?
Avatar billede supertekst Ekspert
23. januar 2008 - 23:52 #15
Er det VB du anvender? - mit eksempel er VBA
Avatar billede thewizard Nybegynder
23. januar 2008 - 23:53 #16
Siden jeg skriver under VB, så ja ;).
Avatar billede supertekst Ekspert
23. januar 2008 - 23:55 #17
VBA kan nu også optræder her - men jeg stopper nu, da jeg ikke har VB.
Avatar billede thewizard Nybegynder
23. januar 2008 - 23:57 #18
:/ okay okay, din kode minder meget om VB; så kan prøve at gå udfra det. Behøver stadig hjælp hvis nogen er derude :).
Avatar billede Ny bruger Nybegynder

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.

Loading billede Opret Preview
Kategori
Kurser inden for grundlæggende programmering

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester