Voiko ks ohjelmalla määrittää textboksiin sellaista ominaisuutta, että se muistaisi edelliset kirjoitukset? Siis esim hakukenttään, jos haetaan samalla sanalla useasti niin ei tarvitsisi aina kirjoittaa sitä uudelleen vaan valitsisi sen listasta.
Ja toinen, kuinka pystyn tutkimaan esim. tämän tekstikenttään kirjoitetun muuttujan sisältöä? Jos haluaisin esimerkiksi tarkistaa, että siellä ei ole pistettä, pilkkua tms?
Tekstikentän muistin voi ainakin ohjelmoida itse keräämällä sanoja taulukkoon ja lisäämällä tekstikentän alapuolelle valintalistan, jossa ovat näkyvissä aiemmat sanat, joiden alkuosana on tekstikenttään sillä hetkellä kirjoitettu sana.
Kenties tämä ominaisuus on jossain valmiissa kontrollissa, jolloin sitä ei tarvitse ohjelmoida itse. Minulla ei ole kuitenkaan tarkempaa tietoa asiasta.
Tekstikenttään kirjoitettua tekstiä voi tutkia samalla tavalla kuin merkkijonoja yleensä. Esim. Length kertoo tekstin pituuden ja Chars palauttaa tietyssä kohdassa olevan merkin. Tässä tulee esimerkki, josta on ehkä hyötyä sinulle.
Dim i As Integer
Dim pituus As Integer
Dim merkki As Char
Dim pilkku As Boolean = False
Dim piste As Boolean = False
pituus = TextBox1.Text.Length
MsgBox("Merkkejä: " & pituus)
For i = 0 To pituus - 1
merkki = TextBox1.Text.Chars(i)
MsgBox("Merkki " & i & ": " & merkki)
If merkki = "," Then pilkku = True
If merkki = "." Then piste = True
Next
If pilkku Then MsgBox("Tekstissä oli pilkku.")
If piste Then MsgBox("Tekstissä oli piste.")Heippa Sam76!
väännä oheinen VB-classic jutska VB.NET muotoon
Dim hakusanat() As String
Private Sub Form_Load()
If Dir(App.Path & "\hakusanat.dat") <> "" Then
Open App.Path & "\hakusanat.dat" For Input As #1
hakusanat = Split(Input$(LOF(1), 1), vbCrLf)
Close #1
Else
ReDim hakusanat(0)
End If
End Sub
Private Sub Text1_KeyUp(KeyCode As Integer, Shift As Integer)
If hakusanat(0) <> "" Then
For i = 0 To UBound(hakusanat)
If Len(Text1) > 2 Then
If Len(hakusanat(i)) >= Len(Text1.Text) Then
If Left(hakusanat(i), Len(Text1.Text)) = Text1.Text Then
Text1.Text = hakusanat(i): Exit For
End If
End If
End If
Next i
End If
End Sub
Private Sub Form_QueryUnload(Cancel As Integer, UnloadMode As Integer)
If hakusanat(0) <> "" Then
Open App.Path & "\hakusanat.dat" For Output As #1
For i = 0 To UBound(hakusanat)
If hakusanat(i) <> "" Then
Print #1, hakusanat(i) & vbCrLf
End If
Next i: Close #1
End If
Erase hakusanat
End Sub
Private Sub Text1_Change()
Text1.SelStart = Len(Text1.Text)
End Sub
Private Sub Text1_LostFocus()
If Text1.Text <> "" Then
For i = 0 To UBound(hakusanat)
If hakusanat(i) = Text1.Text Then: Exit Sub
Next i
hakusanat(UBound(hakusanat)) = Text1.Text
ReDim Preserve hakusanat(UBound(hakusanat) + 1)
End If
End SubKiitos molemmille vastauksista. Nämä olivat juuri sitä mitä olin ajatellutkin.
Aihe on jo aika vanha, joten et voi enää vastata siihen.