Finns det någon funktion för att sortera bokstäver i en label eller textruta? Går det att göra överhuvudtaget? Ja det går givetvis, du kan betrakta bokstäver som siffror. Asc("A") tex är 65 'Ett program "Hangman" där ett ord slumpas och som sedan användaren ska gissa bokstäver i genom Skrev detta fritt ur minnet, skall bli kul att höra vilka tankevurper jag gjort. <code> Inte en lösning, men väl en fundering.Sortera bostäver i textruta och label
Sv: Sortera bostäver i textruta och label
Om du ger ett exempel hur det kan se ut i en Label och hur du vill ha det kan jag visa en lösning.Sv: Sortera bostäver i textruta och label
'att skriva in en boakstav i en textruta och trycka på knappen Gissa.
'Rätt gissade bokstäver skrivs ut på rätt plats i ordet men samtliga använda bokstäver skrivs ut i
'en särskild label. Den labeln skulle jag vilja ha sorterad i bokstavsordning.
Private Sub cmdGissa_Click()
Dim strBokstav As String, i As Integer
strBokstav = LCase(txtGissa.Text)
For i = 1 To Len(strOrdet)
If strBokstav = Mid(strOrdet, i, 1) Then
Mid(strGiss, i, 1) = strBokstav
End If
Next i
intAntalGiss = intAntalGiss + 1
lblOrdet.Caption = strGiss
lblInfo.Caption = "Antal gissningar är: " & intAntalGiss
lblUsedLetters.Caption = lblUsedLetters.Caption & txtGissa.Text
If intAntalGiss > 5 Then
lblInfo.Caption = "Du är hängd! Ordet var: " & strOrdet
End If
End SubSv: Sortera bostäver i textruta och label
Har inte kunnat provköra.
<code>
Option Explicit
Private Sub cmdGissa_Click()
Dim strBokstav As String, i As Long
strBokstav = LCase(txtGissa.Text)
For i = 1 To Len(strOrdet)
If strBokstav = Mid$(strOrdet, i, 1) Then
Mid$(strGiss, i, 1) = strBokstav
End If
Next 'i
intAntalGiss = intAntalGiss + 1
lblOrdet.Caption = strGiss
lblInfo.Caption = "Antal gissningar är: " & intAntalGiss
Call Sortera(strBokstav)
If intAntalGiss > 5 Then
lblInfo.Caption = "Du är hängd! Ordet var: " & strOrdet
End If
End Sub
Sub Sortera(ByVal sInput As String) 'sInput skall vara det som står i txtGissa
Dim usedArray(97 To 246) As Long ' dvs alla dom riktiga bokstäverna
Dim i As Long, letter As String
For i = 1 To Len(sInput)
letter = Mid$(sInput, i, 1)
usedArray(Asc(letter)) = 1
Next 'i
lblUsedLetters.Caption = ""
For i = 97 To 246
If usedArray(i) = 1 Then _
lblUsedLetters.Caption = lblUsedLetters.Caption & " " & Chr$(i)
Next 'i
End Sub
</code>Sv: Sortera bostäver i textruta och label
...
lblUsedLetters.Caption = InsertSorted(lblUsedLetters.Caption, txtGissa.Text)
...
Function InsertSorted(strIn As String, strAdd As String) As String
For ii = 1 To Len(strIn)
If Mid(strIn, ii, 1) > strAdd Then Exit For
Next
InsertSorted = Left(strIn, ii - 1) & strAdd & Mid(strIn, ii)
End Function
</code>Sv: Sortera bostäver i textruta och label
Kan du inte rita ut bokstäverna och sen lägga shapes ovanpå?
När man gissar så döljer du shapen och bokstaven visas.
//Anna-Karin