11. oktober 2001 - 15:41Der er
8 kommentarer og 1 løsning
Autofuldfør med tab
Hejza Folks!
...Sidder med et lille problem. Jeg vil gerne lave en funktion, der kan fuldføre en tekst ved klik på tab-tasten. (Hvis I kender Jubii-chatten, dér kan man fx fuldføre navne ved at trykke på tab).
Er der muligt at have en slags liste med nøgleord, som når de skrives i en tekstbox skal kunne fuldføres ved klik på tab-tasten.
ex:
Valgte Keywords: \"Spil, programmer, applications, drivers\"
Jeg skriver: \"pro\" og trykker tab, og der vil nu stå \"programmer\"
Nu skriver jeg så \"appl\" og trykker tab, og der vil nu stå \"applications\"
**********************
Håber det er forståeligt, hvad jeg skriver :) og ikke mindst at nogen kan hjælpe!
Ja, det er sådan som du skriver til sidst, dog behøver det ikke nødvendigvis at fungerer midt i en streng, hvis det gør det lettere :) Så hvis bare dette kunne virke, ville det være super:
\"prog\" + TAB = \"programmer\"
I dette tilfælde passer det ikke så godt med en combobox. Det skal helst være en textbox.
På textboxens KeyDown-event må man kunne lægge noget kode lige dette:
Private Sub Text1_KeyDown(Keycode as integer, Shift as integer)
Dim rs as ADODB.Recordset Dim cn as ADODB.Connection
if KeyCode = vbkeytab then Set rs = New ADODB.Recordset Set cn = ....whatever connection du ønsker? rs.Open \"KeyWords\", cn, adOpenStatic rs.Find \"KeyWord Like \'\" & Text1 & \'*\" if not rs.EOF then text1 = rs!KeyWord endif rs.close set rs = nothing cn.close Set cn = Nothing endif end sub
NB: Er ikke afprøvet men blot indtastet efter hovedet (Har ikke VB installeret på denne maskine!)
lav en skjult combobox med de ord som måske skal fuldføres, sorter dem alfabetisk, for hver gang brugeren har trykket på en tast og skrevet et bogstav, skal du sammenligne om der er et ord hvor den tilsvarende længde af venstre del af ordet ligner det som står i din tekstbox - og så foreslå det som fortsættelse i tekstboxen
har et kodeeksempel jeg har lavet et sted hvis det er :-)
Her er noget kode hvor jeg tjekker om det navn man skriver ligner et navn i adressebogen (og hvis det gør kan man vælge med en checkbox om programmet skal skrive email adressen i et andet felt) - måske kan du blive inspireret af det:
Private Sub FindA_navn() Dim I, Lengde As Integer If Check1Auto.Value = 1 Then txtToAddress.Text = \"\" Lengde = Len(Combo1Toname.Text) If Len(Combo1Toname.Text) < 1 Then Exit Sub For I = 0 To A_adressebogAntal - 1 If ejfind = False Then \'find et A_navn der ligner og skriv A_email adressen If UCase(Left$(A_navn(I), Len(Combo1Toname.Text))) = UCase(Left$(Combo1Toname.Text, Len(Combo1Toname.Text))) Then If Check1Auto.Value = 1 Then txtToAddress.Text = A_email(I) Combo1Toname.Text = A_navn(I) \'gør nemt at slette hvis gæt er forkert Combo1Toname.SelStart = Lengde Combo1Toname.SelLength = Len(A_navn(I)) \'tjek om comboboxen er alfabetisk for den vil her tage det sidste navn som ligner fordi den kører videre i løkken End If Else \'find kun A_emailadresse hvis A_navn er identisk If UCase(A_navn(I)) = UCase(Combo1Toname.Text) Then If Check1Auto.Value = 1 Then txtToAddress.Text = A_email(I) Combo1Toname.Text = A_navn(I) End If End If Next I End Sub
Det med den skjulte combobox er faktisk rigtig smart... har nsæten fået det til at funge nu... men problemet lige nu, er at hvis det er TAB-tasten der skal stå for autofuldførelse, så fucker det op, fordi at den har jo samtidig en anden funktion (at gå til næste objekt)...
Thomasjepsen >> jeg kunne desværre ikke få det til at funge...
Prøv at sætte formens keypreview til true, og så kan du aflure i keydown eller keypress (kan aldrig huske hvad for en det er) hvilken tast der trykkes - hvis der så trykkes \"tab\" så sætter du sub\'en til at udføre din kode (og bagefter sætter du keypress eller keyascii til 0, for at undgå du hopper videre hvis du er kommet til at lave tabstop = true på noget) omtrent på samme måde som man kan fange F10 så den ikke går op i menuen.
Angående rtf er det ikke mig du skal have fat i :-) jeg har aldrig prøvet at bruge en selv, og win2000 er græskkatolsk for mig. Men der kommer nok en anden og finder en løsning.
Synes godt om
Ny brugerNybegynder
Din løsning...
Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.