Newsgroup: it.comp.lang.visual-basic
Titolo: [ToolTipText] in una Listbox

Ciao
siccome visualizzo una serie di file in una listbox ed alcuni hanno il nome
troppo lungo, ho pensato di servirmi della ToolTipBox sono che non funziona
sempre
sub list1_click()
form1.list1.ToolTipBox = form1.list1.text
end sub
devo aggiungere qualcosa?

> form1.list1.ToolTipBox = form1.list1.text
ToolTipBox?????????
Cosa intendi? ToolTipText? Boh, dovrebbe funzionare, chiaramente ti mostra
sempre e solo l'elemento sottolineato e non l'elemento che si trova sotto il
mouse in quel momento.
                        Ciao
                                Allanon

 mouse in quel momento.
Si scusa ho fatto un'errore di scrittura, è tooltiptext, ma non funziona
sempre associandolo al click
ciao

 ha scritto

metti un lstbox su un form e incolla il codice qui sotto.
Option Explicit
Private Sub Form_Load()
    Dim j As Integer
    For j = 1 To 500
        List1.AddItem "item " & CStr(j)
        ' i principanti, ma solo loro, scrivano:
        ' list1.additem "item" & " " & cstr(j) <g>
        ' nb: wblake, non e' per te...
    Next
End Sub
Private Sub List1_Click()
    List1.ToolTipText = List1.List(List1.ListIndex)
End Sub
altra faccenda beccare l'elemento non al click ma al mousemove.
cmq devo avere il codice da qualche parte.
ciao, j.lst

cmq devo avere il codice da qualche parte.
Eh eh, possiamo riciclare un codice che avevo postato tempo fa
per il mousedown con il bottone destro.
Ok, per il nostro wblake76 l' esempietto e' sotto la firma.
ciao, hal
-----------------------------------------------------
// Avviare un progetto nuovo e mettere una listbox nel form creato di default.
// Nel codice del form incollare quanto segue:
Option Explicit
Private Sub Form_Load()
    Dim m As Long
    With List1
        .Clear
        For m = 1 To 12
            .AddItem Format$(DateSerial(2001, m, 1), "Mmmm")
        Next m
    End With
End Sub
Private Sub List1_MouseMove(Button As Integer, Shift As Integer, X As Single, Y As Single)
    Dim mi_Index
    mi_Index = GetLBItemUnderCursor(List1.hwnd)
    If (mi_Index < 0) Then
        List1.ToolTipText = vbNullString
    Else
        List1.ToolTipText = List1.List(mi_Index)
    End If
End Sub
////////////////////////
// Aggiungere un modulo .bas ed incollarvi quanto segue:
Option Explicit
Private Type POINTAPI
    X As Long
    Y As Long
End Type
Private Type RECT
    Left As Long
    Top As Long
    Right As Long
    Bottom As Long
End Type
Private Const LB_GETITEMRECT = &H198
Private Const LB_GETTOPINDEX = &H18E
Private Const LB_GETCOUNT = &H18B
Private Declare Function GetCursorPos Lib "user32" ( _
                            ByRef lpPoint As POINTAPI _
                            ) As Long
Private Declare Function ScreenToClient Lib "user32" ( _
                            ByVal hwnd As Long, lpPoint As POINTAPI _
                            ) As Long
Private Declare Function SendMessage Lib "user32" Alias "SendMessageA" ( _
                            ByVal hwnd As Long, ByVal wMsg As Long, _
                            ByVal wParam As Long, ByRef lParam As Any _
                            ) As Long
Private Declare Function GetClientRect Lib "user32" ( _
                            ByVal hwnd As Long, ByRef lpRect As RECT _
                            ) As Long
'// =======================================================
Public Function GetLBItemUnderCursor(ByVal hwndList As Long) As Long
    Dim ntop As Long, nCount As Long, nRectheight As Long
    Dim rc As RECT, itemrect As RECT
    Dim pt As POINTAPI
    Dim nProgrHeight As Long
    '// legge la posizione del cursore del mouse
    Call GetCursorPos(pt)
    '// e la converte in coordinate della listbox
    Call ScreenToClient(hwndList, pt)
    '// primo item visibile
    ntop = SendMessage(hwndList, LB_GETTOPINDEX, 0, 0)
    '// numero degli item complessivi
    nCount = SendMessage(hwndList, LB_GETCOUNT, 0, 0)
    '// legge il rettangolo della listbox
    Call GetClientRect(hwndList, rc)
    '// calcola l' altezza della listbox
    nRectheight = rc.Bottom - rc.Top
    '// cicla fino alla fine della listbox
    '// o finche' raggiunge l' ultimo item
    nProgrHeight = 0
    While ((nRectheight >= nProgrHeight) And (ntop < nCount))
 
        '// ottiene il rettangolo dell' item corrente
        Call SendMessage(hwndList, LB_GETITEMRECT, ntop, itemrect)
 
        '// aggiorna il progressivo dell' altezza raggiunta
        nProgrHeight = nProgrHeight + (itemrect.Bottom - itemrect.Top)
 
        '// verifica se l' ordinata del mouse e' contenuta nel
        '// progressivo dell' altezza, allora abbiamo trovato l' item
        If (pt.Y <= nProgrHeight) Then
            GetLBItemUnderCursor = ntop
            Exit Function
        End If
 
        '// muove alla riga successiva
        ntop = ntop + 1
    Wend
 
    '// esito negativo
    GetLBItemUnderCursor = -1
 
End Function    '// GetLBItemUnderCursor
/////////////////////////
// Press F5 and have fun !

!!!!!!!!!!!!!!!!!!!!!
Divino hal!
Come sempre mi lasci senza parole...
Grazie!
                        Ciao
                                    Allanon

per il mousedown con il bottone destro.
Sai già cosa ti sto per chiedere, vero? :-P
Ciao,
Moreno
#sirri#@#
morenosoft.com#
(togliete "#" dall'indirizzo)
Moreno Sirri VB Site - 
http://www.msvbsite.net
---------------------------------------------------------------------------
Le risposte alle tue domande le trovi sul Sito Comune di questo NewsGroup:
 
http://www.it-lang-vb.net
---------------------------------------------------------------------------

 Sai già cosa ti sto per chiedere, vero? :-P
no, non lo si potrebbe assolutamente immaginare.
e comunque deve chiederlo il wm in carica,
non la release precedente,
i suoi requisiti non sono piu' supportati :)
j.commonsite.page

i suoi requisiti non sono piu' supportati :)
mmm io l'ho sempre chiesto come partecipante del ng, sia prima che
dopo... non basta? C'è bisogno del wm wm proprio proprio? Non ci si
accontenta di un comune nger? Azz... riformulo:
"prostrandomi umilmente alla Sua Santissima tastiera l'imploro di
pubblicare sul Sito Comune codesto esempio, acciocché sia di aiuto e di
immediata reperibilità a noi modestissimi frequentatori di questo
discussion-gruppo"
Suo *venereo* atque anonimo *ventilatore*.

>



ROTFLOL
^___^
(però non hai riportato la parte più bella... :-P)


grazie hal1961 per il codice interessante
Segnalo sotto due errori di battitura :
nel modulo.bas verso la fine:
'ottiene il rettangolo dell'item corrente
call SendMessage(hwndList, LB_GETITEMRECT,ntop,itemrect)
' aggiorna il progressivo dell'altezza raggiunta
nProgrHeight = nProgrHeight + (itemrect.Bottom - itemrect.Top)
La struttura itemrect non è definita ma è la stessa di RECT
crearne una identica itemrect per leggibilità invece di usare la stessa
RECT?
ciao §uNRi§e§

Grazie!
Un complimento dal "prof." Allanon fa sicuramente piacere :-)
Speriamo che qualcuno lassu' non si inquieti per l' aggettivo ;-)
ciao, hal

Sai già cosa ti sto per chiedere, vero? :-P
Vabbe', provvederemo ...
obtorto collo ...
hal.ahiahiahi

in fede, servitor suo umil.mo ecc. ecc.
Ma allora non sono l' unico pazzo :-DDD

RECT?
Ah, ho capito:
1. Nella sezione dichiarazioni del modulo e' definita la struttura RECT;
2. All' inizio della funzione sono dichiarate due variabili di tipo RECT:
     rc                            e' il rettangolo dell' area  client della listbox
     itemrect                   e' il rettangolo dell' item corrente
Grazie per la colalborazione, in ogni caso :-)
ciao, hal

 Ma allora non sono l' unico pazzo :-DDD
،__،
avevi dubbi?
--
Fibia "Homer Simpson" FBI


Lol!!
Che coppia!
Mai pensato di darvi al cabaret?   :-)))
ciao
ugo

 Mai pensato di darvi al cabaret?   :-)))
vuole mandare avanti me con alcune strisciate recenti dal ng.
ma non riesce a trovarle.
non dirglielo ti prego:
le sue coronarie hanno fatto dei gran block sender / remove posts.