realbasic-nug.fr
[Top] [All Lists]

Re: Comment ajouter un RowTag ? (était Re: ListBox1.CellTag: ne marche p

To: REALbasic NUG French <realbasic-nug dot fr at lists dot realsoftware dot com>
Subject: Re: Comment ajouter un RowTag ? (était Re: ListBox1.CellTag: ne marche pas ici)
From: Benoit GRIVEAU <contact at agbsoft dot com>
Date: Wed, 23 May 2007 17:48:09 +0200
Delivered-to: listarchive at realsoftware dot com
Delivered-to: realbasic-nug dot fr at lists dot realsoftware dot com
References: <464E188A dot 50209 at wanadoo dot fr> <464E252C dot 5060607 at realsoftware dot fr> <464E2BB5 dot 6070406 at wanadoo dot fr> <550E8BB0-2244-4E6B-A4A6-172C42B42BDB at tribu dot ch> <464E2FF0 dot 1060507 at wanadoo dot fr> <1303502E-D030-4DB7-B12E-813888A87B17 at tribu dot ch> <4654449F dot 5000803 at wanadoo dot fr>
Bonjour,

C'est très intéressant, merci !

Mais pourquoi faire Return True dans MouseMove ?
Il me semble que cela marche sans et évite les inconvénients que vous exposez.

rowNbr = (Y \ RowHeight) - 1 // Row is 0-Based

Est-ce une erreur dans votre code ? je mets : rowNbr = (Y \ DefaultRowHeight) - 1 // Row is 0-Based

A+

Benoit


Le 23 mai 07 à 15:41, Emile Schwarz a écrit :

Bonjour,

C'est vrai, la nuit apporte la réflexion! [Plus quelques jours pour les vérifications.]

J'ai donc pris une nuit de repos et ce matin (il y a une dizaine de minutes), j'ai eu la bonne idée: utiliser ListBox1.MouseMove, calculer la position (Row #) Y de la souris et enfin afficher le ListBox1.CellTag DANS ListBox1.HelpTag. Ne pas oublier de mettre Listbox1.HelpTag à "" dans MouseExit (encore que...).

L'idée est d'utiliser le mécanisme en place: HelpTag en lieu et place d'une machine compliquée (un StaticText par exemple!).

Et le code ?

Voilà:

1. Prendre sur Internet là:

http://www.declaresub.com/Articles/HowDoI.html#listboxRowHeight

le code et suivre les instructions.

2. Ajouter Return True dans ListBox1.MouseDown

3. Dans ListBox1.MouseMove mettre le code:
Return True

4. Dans ListBox1.MouseExit mettre
Me.HelpTag = ""

5. Dans ListBox1.MouseMove:

 //
 // Report in a StaticText an "online help"
 //
 Dim RowHeight As Integer
 Dim CellWidth As Integer
 Dim RowNbr    As Integer
 Dim CellNbr   As Integer
 // Get this ListBox Row Height
 RowHeight = Me.RowHeight
  // Search the Row # where the Mouse is
 RowNbr = (Y \ RowHeight) - 1 // Row is 0-Based
 // I store the CellTag in Cell 0
 CellNbr = 0 // Always in the column 0 (in my program)
 // Display the CellTag contents in the StaticText
 If RowNbr >= 0 And RowNbr < Me.ListCount Then
   // Set the ListBox HelpTag
   Me.HelpTag = Me.CellTag(RowNbr,CellNbr)
   Else
   // Clears the ListBox HelpTag
   Me.HelpTag = ""
 End If

Et voilà.

En fait, le "Tag" est installé pour chaque Row (toutes les Cell). Pour une cellule individuelle, il faut tester la valeur X de la position de la souris, calculer le numéro de la cellule qui se trouve dessous et placer cette valeur dans CellNbr.

En revanche, j'ai un petit soucis: la souris n'est plus capable de changer la largeur de la colonne, ni de bouger l'ascenseur vertical (là, une souris avec roue contourne le problème). Un click dans une ligne (Row) du ListBox est également rejeté (mais on peut naviguer avec les touches fléchées, Page Up / Down / Home / End).
Celà est dû au Return True de l'évènement MouseDown.

A +,

Emile




<Prev in Thread] Current Thread [Next in Thread>