Newsgroup: it.comp.lang.visual-basic
Titolo: autocomplete

mi sapete dare indicazioni su come si fa il completamente automatico
o intellisense (se si chiama così): diciamo che uno scrive in una
textbox e il prog gli da i suggerimenti prendendoli da un db.
Thanx
--
     Good luck!              
un...@softhome.net
     ADaM        
http://digilander.iol.it/unno2/
-- 
Posted from 
smtp3.libero.it
 [193.70.192.53] 
via Mailgate.ORG Server - 
http://www.Mailgate.ORG

 ha scritto nel messaggio
news:2001071110594...@mail.libero.it...
mi sapete dare indicazioni su come si fa il completamente automatico
o intellisense (se si chiama così): diciamo che uno scrive in una
textbox e il prog gli da i suggerimenti prendendoli da un db.
Allora, mettendo che tu abbia un Database Access con una Tabella "Parole" e
una colonna "Parola"
e un Form con una TextBox..potresti fare come segue:
nell'evento Change della Textbox metti questo codice: (è in DAO)
    Dim DB As Database
    Dim RS As Recordset
    Dim Str As String
    Set DB = OpenDatabase("c:\db1.mdb")
    Set RS = DB.OpenRecordset("Parole")
    RS.MoveFirst
    Do While Not RS.EOF
        If InStr(1, RS![Parola], Text1.Text) <> 0 Then
            Str = Text2.Text
            Text1.Text = RS![Parola]
            Text1.SelStart = Len(Str)
            Text1.SelLength = Len(Text1.Text)
            Exit Do
        End If
        RS.MoveNext
    Loop
    RS.Close
    DB.Close
N.B. Chiaramente il codice è abbozzato e non ha pretese di velocità....
Ciao
Fabio


Fabio ha scritto:

Piu' semplicemente.
    Dim DB As Database
    Dim RS As Recordset
    Dim Pos As Long
    Set DB = OpenDatabase("c:\db1.mdb")
    Set RS = DB.OpenRecordset("SELECT * FROM Parole WHERE Parola LIKE '" & Text1.Text & "*'")
    If Not RS.EOF Then
        Text1.Text = RS![Parola]
        Text1.SelStart = Pos
        Text1.SelLength = Len(Text1.Text)
    End If
    RS.Close
    DB.Close
-- 
Samuele Battarra
mail server: 
libero.it
, account: battarsa
prova il mio newsreader:
http://digilander.iol.it/battarsa/programmi/leggiminews.html

Qualcuno è così gentile da darmi una dritta su come abilitare e
disabilitare le voci di un generico menu Modifica (taglia, copia,
incolla) rispettivamente se è attivata qualche selezione di testo e
se c'è qualcosa nella clipboard? Come fa un controllo del genere a
funzionare in tutto il prog? Come si fa a dire se in  qualche
controllo è selezionato del testo e ad abilitare ad esempio il
copia nel menu?
Thanx in advance.
--
     Good luck!              
un...@softhome.net
     ADaM        
http://digilander.iol.it/unno2/
If debugging is the process of removing bugs,
then programming must be the process of putting them in.
(Dijkstra)
-- 
Posted from 
smtp1.libero.it
 [193.70.192.51] 


Dim Txt As Control
On Error Resume Next
For Each Txt In Form1.Controls
    If Not Txt.SelLength = 0 Then
        MsgBox Txt.Name & " Sel: " & Txt.SelText, vbInformation
    End If
Next Txt
al posto di msgbox puoi mettere una variabile pubblica Booleana tipo:
DelTestoSelezionato as Boolean.


Cercando su un libro ho trovato forse una soluzione migliore:
the state of most of the commands in a typical Edit menu (Copy, Cut,
Clear, Undo, and so on) depends on whether any text is currently
selected in the active control. In this case, changing the menu state
any time a condition changes (because the user selects or deselects
text in the active control, for example) is a waste of time, and it
also requires a lot of code. Therefore, it's preferable to set the
state of those menu commands in the parent menu's Click event just
before displaying the menu:
Private Sub mnuEdit_Click()
    ' The user has clicked on the Edit menu,
    ' but the menu hasn't dropped down yet.
    On Error Resume Next
    ' Error handling is necessary because we don't know if 
    ' the Active control actually supports these properties.
    mnuEditCopy.Enabled = (ActiveControl.SelText <> "")
    mnuEditCut.Enabled = (ActiveControl.SelText <> "")
    mnuEditClear.Enabled = (ActiveControl.SelText <> "")
End Sub
Thanx
