Jag har länge försökt på detta men utan resultat jag ska dynamiskt kunna lägga till en textbox via en knapp sen ska en annan knapp finnas för att ta bort den sista textrutan nån som vet hur jag ska koda detta? Och det ska inte finnas nån kontroll i formuläret från början alltså som man skapat i designläga utan först när man klickar på knappen ska det läggas till Har försökt såhär: Om det absolut inte får finnas någon knapp ifrån början så måste du skaffa dig ett vettigt programmeringsspråk eller så får du börja meckla med win32 api:er vilket inte rekommenderas precis...vb 6.0 - hjälp med dynamiska kontroller
<code>
Option Explicit
Private Const DESIGN_CREATED = 5 'This is how many controls you have created at design time, i declare it so it is global for all the project
Private Sub Form_Load()
Dim i
For i = 0 To 4
cbomusikstil(i).AddItem "Pop"
cbomusikstil(i).AddItem "Rock"
cbomusikstil(i).AddItem "Techno"
cbomusikstil(i).AddItem "Trance"
cbomusikstil(i).AddItem "Schlager"
cbomusikstil(i).AddItem "Folkmusik"
cbomusikstil(i).AddItem "Klassisk musik"
cbomusikstil(i).AddItem "Ballader"
cbomusikstil(i).AddItem "Dansbandsmusik"
cbomusikstil(i).AddItem "Folkvisa"
cbomusikstil(i).AddItem "Hip Hop & R&B"
Next i
End Sub
Private Sub cmdNewArtist_Click()
'Add artist
'Försöka rätta till kod: Markera texten i artistnamn funkar inte
Load textrName(textrName.UBound + 1)
Load cbomusikstil(cbomusikstil.UBound + 1)
textrName(textrName.UBound).Left = textrName(textrName.UBound - 1).Left
textrName(textrName.UBound).Top = textrName(textrName.UBound - 1).Top + textrName(textrName.UBound - 1).Height + 50
textrName(textrName.UBound).Visible = True
cbomusikstil(cbomusikstil.UBound).Left = cbomusikstil(cbomusikstil.UBound - 1).Left
cbomusikstil(cbomusikstil.UBound).Top = cbomusikstil(cbomusikstil.UBound - 1).Top + cbomusikstil(cbomusikstil.UBound - 1).Height + 50
cbomusikstil(cbomusikstil.UBound).Visible = True
'Försöka rätta till kod: Försök hämta arrayen från förra kontrollerna...se ovan
cbomusikstil(cbomusikstil.UBound).AddItem "Pop"
cbomusikstil(cbomusikstil.UBound).AddItem "Rock"
cbomusikstil(cbomusikstil.UBound).AddItem "Techno"
cbomusikstil(cbomusikstil.UBound).AddItem "Trance"
cbomusikstil(cbomusikstil.UBound).AddItem "Schlager"
cbomusikstil(cbomusikstil.UBound).AddItem "Folkmusik"
cbomusikstil(cbomusikstil.UBound).AddItem "Klassisk musik"
cbomusikstil(cbomusikstil.UBound).AddItem "Ballader"
cbomusikstil(cbomusikstil.UBound).AddItem "Dansbandsmusik"
cbomusikstil(cbomusikstil.UBound).AddItem "Folkvisa"
cbomusikstil(cbomusikstil.UBound).AddItem "Hip Hop & R&B"
textrName(textrName.UBound).SetFocus
textrName(textrName.UBound).SelStart = 0
textrName(textrName.UBound).SelLength = Len(textrName(textrName.UBound))
End Sub
Private Sub cmdDeleteArtist_Click()
'Delete the latest dynamic control both textbox and combobox, i use if and unload to unload the control
If Not textrName.UBound = DESIGN_CREATED - 1 Then
Unload textrName(textrName.UBound)
End If
If Not cbomusikstil.UBound = DESIGN_CREATED - 1 Then
Unload cbomusikstil(cbomusikstil.UBound)
End If
End Sub
Private Sub cmdEnd_Click()
'End this program!!
End
End Sub
</code>
mvh
nicklasSv: vb 6.0 - hjälp med dynamiska kontroller
Om du kan ha en knapp ifrån början så förenklar det hela med 10000%.
Gör så att du stoppar ut en knapp. Sätt Index till 0 på den. Sätt visible = false. Döp den till min_knapp.
Sedan kan du skapa nya knappar genom att ta:
<code>
Load min_knapp(1) 'Skapar en ny knapp
Load min_knapp(2) 'Skapar ännu en ny knapp
</code>
Observera att båda är osynliga.
För att göra dem synliga måste du ändra visible samt bestämma var de ska hamna:
<code>
min_knapp(1).Visible=true
min_knapp(2).Visible=true
min_knapp(1).Move(vad, det, nu, är, för, argument, hit)
min_knapp(2).Move(vad, det, nu, är, för, argument, hit)
</code>
För att sedan ta bort en knapp har du:
<code>
Unload min_knapp(1) 'Tar bort första knappen
Unload min_knapp(2) 'Tar bort andra knappen, är inte helt säker på att den här raden fungerar... Du märker
</code>
Ungefär något sådant