Avatar billede martinfrost Nybegynder
11. oktober 2001 - 15:41 Der 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!

/ Martin
11. oktober 2001 - 16:32 #1
Skal der kunne være flere opslag i hver textbox? Det er ikke nok med at bruge en combobox, hvor du har en opslagsmulighed per comboboks?

Ellers er du nødt til at lave noget kode, som checker hvad der står fra markøren og tilbage til sidst space.

\"Nu vil jeg åbne et at mine prog\" + TAB = \"Nu vil jeg åbne et at mine programmer\"?
Er det sådan?
Avatar billede martinfrost Nybegynder
11. oktober 2001 - 16:38 #2
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.

/ Martin
11. oktober 2001 - 16:47 #3
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!)

/Thomas
Avatar billede cellaneous Nybegynder
11. oktober 2001 - 16:48 #4
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 :-)
Avatar billede cellaneous Nybegynder
11. oktober 2001 - 16:57 #5
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
Avatar billede martinfrost Nybegynder
11. oktober 2001 - 17:48 #6
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...

Avatar billede martinfrost Nybegynder
11. oktober 2001 - 17:53 #7
Men Cellaneous, du skulle jo sådan set have pointene for at løse problemet med en go idé :)

Så det får du, men lov mig så lige, at du på et tidspunkt kigger på et par af mine andre spørgsmål herinde. Bl.a.

- Indsætte billede i listbox
- Finde brugeren styresystem
- Låse en richtextbox i win2000

takker :)

/ martin
Avatar billede martinfrost Nybegynder
11. oktober 2001 - 18:02 #8
Hvis nogen af jer ved, hvordan det med tab kan lade sig gøre, så må I da gerne lige skrive :)
Avatar billede cellaneous Nybegynder
13. oktober 2001 - 11:39 #9
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.
Avatar billede Ny bruger Nybegynder

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.

Loading billede Opret Preview
Kategori
Kurser inden for grundlæggende programmering

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester