Hej! Objektorientering? Jag har tyvärr inte blivit introducerad i objektorienterad programmering än, måste nog först lära mig grunderna i programmering bra, så att jag kan bygga vidare på det sedan. Jag tycker som Andreas att en lösning med objekt och collections är det enda rätta, men om du ändå skulle vilja komma vidare med din lösning så kan du ju loopa genom din array på jakt efter den första "posten" där medlemsnumret är 0.Hur ta reda på första lediga positionen i en listbox?
Jag håller på att skapa ett medlemsregister i vilket jag ska kunna lägga till, ändra och ta bort poster.
När man lägger till en ny post har jag förut gjort så att man själv fick ange på vilken position posten skulle hamna, men nu vill jag att programmet automatiskt ska kunna ta reda på första lediga positionen i listboxen.
Någon som vet hur man kan göra detta?
Så här såg min kod ut innan, när användaren själv var tvungen att skriva in positionen i listan:
--------------------------------------------
Public Const g_conMaxAntal As Long = 200
Public Type ustMedlemsTyp
.....
.....
End Type
Public g_aMedlemsLista(0 To g_conMaxAntal - 1) As udtMedlemsTyp
--------------------------------------------
.....
.....
.....
If IsNumeric(txtPosition.Text) Then
intPosition = CInt(txtPosition.Text)
If intPosition > 0 Then
LasIndata = True
g_aMedlemsLista(intPosition - 1).intMedlemsnr = intMedlemsnr
g_aMedlemsLista(intPosition - 1).strEnamn = strEnamn
g_aMedlemsLista(intPosition - 1).strFnamn = strFnamn
g_aMedlemsLista(intPosition - 1).lngPersonnr = lngPersonnr
g_aMedlemsLista(intPosition - 1).strTelefonnr = strTelefonnr
g_aMedlemsLista(intPosition - 1).strAdressGata = strAdressGata
g_aMedlemsLista(intPosition - 1).strAdressPostnr = strAdressPostnr
g_aMedlemsLista(intPosition - 1).strAdressPostort = strAdressPostort
g_aMedlemsLista(intPosition - 1).blnBetalt = blnBetalt
Else
MsgBox ("Du måste skriva in ett värde större än 0.")
LasIndata = False
txtPosition.SelLength = Len(txtPosition.Text)
txtPosition.SetFocus
Exit Function
End If
Else
MsgBox ("Du måste skriva in ett numeriskt värde.")
LasIndata = False
txtPosition.SelLength = Len(txtPosition.Text)
txtPosition.SetFocus
Exit Function
End If
Mvh,
PiaSv: Hur ta reda på första lediga positionen i en listbox?
Skapa en klass istället för UDT och använd en collection istället för en array.Sv:Hur ta reda på första lediga positionen i en listbox?
Men jag ska ta det i beaktning och hittar jag ingen annan lösning just nu, så får jag nog ändå intensivstudera lite och försöka sätta mig in i det.
Tack i alla fall!
Mvh,
PiaSv: Hur ta reda på första lediga positionen i en listbox?
<code>
Dim intIdx As Integer
Dim bFound As Boolean
For intIdx = 0 To g_conMaxAntal - 1
If g_aMedlemsLista(intIdx).intMedlemsnr = 0 Then
bFound = True
Exit For
End If
Next intIdx
</code>
Efter loopen har du den första positionen i variabeln intIdx om bFound = True