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 Sub
Kiitos molemmille vastauksista. Nämä olivat juuri sitä mitä olin ajatellutkin.
Aihe on jo aika vanha, joten et voi enää vastata siihen.