Visualizzazione dei risultati da 1 a 7 su 7
  1. #1
    Utente di HTML.it
    Registrato dal
    Sep 2005
    Messaggi
    361

    [VB6]:Individuare dati da ListBox

    Ciao ragazzi
    come dice il titolo, io ho una textbox chiamata "TXT_COGNOME", un Pulsante chiamato CMD_CERCAESALVA e una ListBox riempita in Form_Load di dati di una tabella.mdb.

    Io vorrei che l'utente abbia la possibilità di visualizzare tramite un MsgBox se un nome sia già presente prima di salvarlo nel db.mdb con il pulsante CMD_CERCAESALVA all'interno di una ListBox

    Spero di essermi fatto capire abbastanza bene.
    vr-claudio

  2. #2
    Utente di HTML.it L'avatar di Boolean
    Registrato dal
    Oct 2005
    Messaggi
    758
    Hai 2 alternative.

    La prima, più semplice ma decisamente meno performante, è quella di realizzare un ciclo sugli elementi della ListBox confontando la stringa con ogni elemento, per valutarne l'uguaglianza.
    Capirai che se la lista è molto lunga potrebbe volerci un po'.

    La seconda strada (che personalmente è quella che adotterei) è quella di utilizzare un'API: la SendMessage

    in ogni caso, sarebbe bastata una semplice ricerca sul forum per avere entrambe le soluzioni:

    http://forum.html.it/forum/showthrea...hreadid=864824

    Boolean

  3. #3
    Utente di HTML.it L'avatar di LMondi
    Registrato dal
    Sep 2004
    Messaggi
    1,291
    Ciao vr-claudio,
    tenuto conto dell'indicazione di Boolean, qui
    trovi un progetto completo (e funzionante) di ricerca di una frase in una ListBox.
    PS. se poi, in alternativa, ti dovesse servire un esempio di ciclo fammelo sapere.
    LM

  4. #4
    Utente di HTML.it
    Registrato dal
    Sep 2005
    Messaggi
    361

    RE...

    Ciao ragazzi gentilissimi entrambi
    scusate il ritardo ma ieri mi sono preso un giorno di rilassamento totale, in tanto grazie provo e vi faccio sapere.

    Grazie ancora per l'aiuto
    vr-claudio

  5. #5
    Utente di HTML.it
    Registrato dal
    Sep 2005
    Messaggi
    361

    OK...

    Ciao LMondi e Boolean
    osservando le vs indicazioni preziose, ho risolto semplicemente in questo modo anche se un po' inosuale:

    Dichiaro le costanti:

    Private Declare Function SendMessage Lib "user32" Alias "SendMessageA" (ByVal hwnd As Long, ByVal wMsg As Long, ByVal wParam As Integer, ByVal lParam As Any) As Long
    Private Const LB_FINDSTRING = &H18F
    Private Const LB_FINDSTRINGEXACT = &H1A2

    Nel evento_LostFocus della casella ho scritto:
    List1.ListIndex = SendMessage(List1.hwnd, LB_FINDSTRINGEXACT, -1, ByVal CStr(Text.Text))

    E nel pulsante salva_click ho scritto in questo modo:

    If Text.Text = List1.Text Then
    MsgBox "Il seguente contatto è già presente nel Database!", vbCritical
    Else
    ...
    End If

    Sembra funzionare ma se ci sono imprecisioni nel codice sono a completa disposizione
    In tanto infinitamente grazie
    vr-claudio

  6. #6
    Utente di HTML.it L'avatar di Boolean
    Registrato dal
    Oct 2005
    Messaggi
    758

    Re: OK...

    Originariamente inviato da vr-claudio
    Nel evento_LostFocus della casella ho scritto:
    List1.ListIndex = SendMessage(List1.hwnd, LB_FINDSTRINGEXACT, -1, ByVal CStr(Text.Text))

    E nel pulsante salva_click ho scritto in questo modo:

    If Text.Text = List1.Text Then
    MsgBox "Il seguente contatto è già presente nel Database!", vbCritical
    Else
    ...
    End If
    In realtà puoi scrivere direttamente così, nell'evento LostFocus:

    codice:
    Dim retval As Long
    retval = SendMessage(List1.hwnd, LB_FINDSTRINGEXACT, -1, ByVal CStr(Text.Text))
    If retval >-1 Then
        MsgBox "Il seguente contatto è già presente nel Database!", vbCritical
    End If
    Boolean

  7. #7
    Utente di HTML.it L'avatar di LMondi
    Registrato dal
    Sep 2004
    Messaggi
    1,291
    Devo dire che il codice di cui sopra su una lista di 20.000 combinazioni casuali trova quella cercata in meno di un battito di ciglia.
    LM

Permessi di invio

  • Non puoi inserire discussioni
  • Non puoi inserire repliche
  • Non puoi inserire allegati
  • Non puoi modificare i tuoi messaggi
  •  
Powered by vBulletin® Version 4.2.1
Copyright © 2026 vBulletin Solutions, Inc. All rights reserved.