Hi,

The issue with this problem is that the data is needed through the 'On Mouse 
Move' event which does not update the LISTBOX GET CELL POSITION command.

Instead you can create a method to get this information similarly to the 
methods described in the following Tech Tips:
http://kb.4d.com/assetid=77135
http://kb.4d.com/assetid=77119

The topic interested me and I created the method posted at the end which may 
help you. What I did was similar to the method described in the tech tip 
mentioned but instead utilized the LISTBOX GET CELL COORDINATES to determine 
which row is the mouse positioned over and more importantly figure out which 
rows are collapsed using the for loops. Hopefully this helps.

  // Util_LISTBOX_GET_MOUSE_HIER
  //
  // Details:
  //    Returns the element details of a row
  //    which has been hovered by the mouse cursor
  //
  // Parameters:
  //    $1 - Pointer to Hierarchical List Box
  // Output:
  //    $2 - Pointer To Pointer to Receive Pointer to Specific Array and Element
  //    $3 - Pointer To Longint to Receive Column Number (aka Hier Array Level)
  //    $4 - Pointer  To Longint to Receive Row Number (aka Array Element)

C_POINTER($1;$lbPtr)
C_POINTER($2;$resElem_p)
C_POINTER($3)
C_LONGINT($resCol_l)
C_POINTER($4)
C_LONGINT($resRow_l)

If (Count parameters>1)
ARRAY POINTER($hierVar_ap;0)

C_BOOLEAN($heir_B)

C_LONGINT($rowCount_l)
C_LONGINT($colCount_l)
C_LONGINT($mX;$mY;$mB)
C_LONGINT($lbBTrack)
C_LONGINT($rowStart_l)
C_LONGINT($lbL;$lbT;$lbR;$lbB)
C_LONGINT($tblNum;$fldNum)

C_TEXT($varName)
C_TEXT($fomula_t)

$lbPtr:=$1
$rowCount_l:=LISTBOX Get number of rows($lbPtr->)
LISTBOX GET HIERARCHY($lbPtr->;$hier_B;$hierVar_ap)
If($hier_B=True)
$colCount_l:=Size of array($hierVar_ap)
GET MOUSE($mX;$mY;$mB)

$resRow_l:=1
$resCol_l:=1
$lbTrack:=0
$rowStart_l:=1

For ($col_l;1;$colCount_l)
$lbBTrack:=0
For ($row_l;$rowStart_l;$rowCount_l)
LISTBOX GET CELL COORDINATES($lbPtr->;$col_l;$row_l;$lbL;$lbT;$lbR;$lbB)
Case of
: (($mY>$lbT) & ($mY<$lbB))
$resRow_l:=$row_l
$resCol_l:=$col_l
RESOLVE POINTER($hierVar_ap{$col_l};$varName;$tblNum;$fldNum)
$fomula_t:="$resElem_p:=->"+$varName+"{"+String($row_l)+}"
EXECUTE FORMULA($fomula_t)
$col_l:=$colCount_l
$row_l:=$rowCount_l
: ($mY>$lbB)
If ($lbB>$lbBTrack)
$lbBTrack:=$lbB
$rowStart_l:=$row_l
End if
: ($mY<$lbT)
$row_l:=$rowCount_l
End case
End for
End for
$2->:=$resElem_p
If(Count parameters>2)
$3->:=$resCol_l
$4->:=$resRow_l
End if
End if
End if

//End Method

Best Regards,
-Tai B.



**********************************************************************
4D Internet Users Group (4D iNUG)
FAQ:  http://lists.4d.com/faqnug.html
Archive:  http://lists.4d.com/archives.html
Options: http://lists.4d.com/mailman/options/4d_tech
Unsub:  mailto:[email protected]
**********************************************************************

Reply via email to