Puse el siguiente código en una grilla:

** init event

Local oColumn As Column, oControl
For Each oColumn In This.Columns
    For Each oControl In oColumn.Controls
        If Pemstatus(oControl,'MouseDown',5)
            Bindevent(oControl,'MouseDown',This,'MouseDown')
        EndIf
    endfor
EndFor

** mousedown event

LPARAMETERS nButton, nShift, nXCoord, nYCoord

Local nWhere, nRelRow, nRelCol,cBackColor,cForeColor,nCol

This.GridHitTest(nXCoord,nYCoord,@nWhere,@nRelRow,@nRelCol)

Do case
   Case nWhere = 3        && celda

    nCol = this.columncount - Abs(m.nRelCol)
nCol = Iif(nCol=0,1,nCol) && nCol sería 0 si hubiera solamente una columna en la grid

cBackColor = 'this.column'+Alltrim(Str(nCol))+'.text1.backcolor = ' +Transform(Rgb(255,0,0)) && rojo cForeColor = 'this.column'+Alltrim(Str(nCol))+'.text1.forecolor = ' +Transform(Rgb(255,255,255)) && blanco

    &cBackColor
    &cForeColor

   Otherwise
endcase

Este código hace que cada vez que se da click en cualquier celda, ésta se torna roja con letras blancas. Sin el código de arriba, al dar click, la celda queda "transparente" y no cambia de color.

Sin embargo, si tengo algún código en el evento dblclick del textbox de la columna, ese código no se dispara.
Es como si el mousedown matara al doubleclick

¿Cómo puedo hacer para que funcionen los dos?

Rafael Copquin

Responder a