Deshabilitar doble clic del mouse incluso en la columna Xbrw

Deshabilitar doble clic del mouse incluso en la columna Xbrw

Postby anserkk » Sat Dec 20, 2008 4:09 am

¿Alguien ayuda?

Ya he pasado horas tratando de resolver este problema.

Creo que puedo resolver el problema si yo sé cómo hacer caso omiso de un ratón doble clcik sobre un caso particular de la columna xBrowse.

Problema: Haga doble clic sobre una columna en xBrowse es un avtivating GET, que no quiero. Quiero pasar por alto el evento doble clic.

Estoy tratando de hacer un CheckOn, CheckOff sobre una columna por xBrowse ya sea usando una tecla Enter, o clic del ratón. Introduzca la clave y haga clic en el ratón está trabajando bien, pero haga doble clic es la activación de un GET (que No quiero).

Una muestra que contiene código libre se publica en este mismo hilo.

Instantánea de la pantalla

Image

¿Es esto posible o estoy mueve en una dirección equivocada?.

Me adjunta un escrito código de ejemplo que reproducir el problema que tengo expalined

Puede copiar y pegar ejecutar exe a su fin.

Usted debe tratar tecla Enter, clic izquierdo del ratón y botón izquierdo del ratón haga doble clic en la columna, es decir, 2 ª Categoría

Por favor tenga en cuenta el problema al utilizar Haz doble clic del ratón

TestXbrw.Prg
Code: Select all  Expand view
#Include "FiveWin.ch"
#Include "xBrowse.ch"

*------------------------------------*
Function Main()
*------------------------------------*
Local oDlg,oBrwMenu,oBtnCancel
Local aMenu:={}, aClrCol:={}

aAdd(aMenu,{ 1,"Masters                       ",.F.,.T. })
aAdd(aMenu,{ 2,"     Account Groups           ",.F.,.F. })
aAdd(aMenu,{ 3,"     Account Heads            ",.F.,.F. })
aAdd(aMenu,{ 4,"     Exit                     ",.F.,.F. })
aAdd(aMenu,{ 5,"Transactions                  ",.F.,.T. })
aAdd(aMenu,{ 6,"     Voucher Entry            ",.F.,.F. })
aAdd(aMenu,{ 7,"     Sales Postings           ",.F.,.T. })
aAdd(aMenu,{ 8,"          From GDMS           ",.F.,.T. })
aAdd(aMenu,{ 9,"               Test sub menu 1",.F.,.F. })
aAdd(aMenu,{10,"          From PDMS           ",.F.,.F. })
aAdd(aMenu,{11,"     Test Menu                ",.F.,.F. })
aAdd(aMenu,{12,"Reports                       ",.F.,.T. })
aAdd(aMenu,{13,"     Trial Balance            ",.F.,.F. })
aAdd(aMenu,{14,"     Profit & Loss Statement  ",.F.,.F. })
aAdd(aMenu,{15,"     Balance Sheet            ",.F.,.F. })
aAdd(aMenu,{16,"     Statement of Account     ",.F.,.F. })
aAdd(aMenu,{17,"     Debtor                   ",.F.,.F. })
aAdd(aMenu,{18,"Tools                         ",.F.,.T. })
aAdd(aMenu,{19,"     Select Financial Year    ",.F.,.F. })
aAdd(aMenu,{20,"     Calculator               ",.F.,.F. })
aAdd(aMenu,{21,"Users                         ",.F.,.T. })
aAdd(aMenu,{22,"     Create User              ",.F.,.F. })
aAdd(aMenu,{23,"     Set user Permissions     ",.F.,.F. })

aClrCol:={ { 0, nRGB(192,221,255) }, { 0, nRGB(221,245,255) } } // Xbrowse Alternative Column colours

DEFINE DIALOG oDlg FROM 70,20 to 630,690 TITLE "Test" PIXEL

@ 0,100 XBROWSE oBrwMenu ;
    COLUMNS 2, 3 ;
    HEADERS "Menu", "Status" ;
    OF oDlg ;
    ARRAY aMenu   // should not use AUTOCOLS now

oBrwMenu:lHScroll:=.F.  // Horizontal Scroll Bar not required
oBrwMenu:lFooter:=.T.

// Sub Menu in different colour and Menu's in different Coclour
oBrwMenu:bClrStd := { || iif(oBrwMenu:aArrayData[oBrwMenu:nArrayAt][4],aClrCol[1],aClrCol[2]) }
oBrwMenu:lUpdate   := .t.
oBrwMenu:nColSel   := 2   
oBrwMenu:bGotFocus:={ || oBrwMenu:nColSel:= 2 }
oBrwMenu:aCols[1]:nWidth:=350

// Easiest way to dispplay a BMP based on the Logical Value
*oBrwMenu:aCols[2]:SetCheck( { "CheckOn", "CheckOff" } )

// Alternative way to display BMP, if multiple conditions and more than 2 bitmaps are there
oBrwMenu:aCols[2]:AddResource("CheckOn")
oBrwMenu:aCols[2]:AddResource("CheckOff")

// Checkbox should be displayed only if the menu type is not a Submenu
oBrwMenu:aCols[2]:bBmpData :={ || iif(oBrwMenu:aArrayData[oBrwMenu:nArrayAt][4],0,iif(oBrwMenu:aArrayData[oBrwMenu:nArrayAt][3],1,2))  }

oBrwMenu:aCols[2]:nWidth:=50
oBrwMenu:aCols[2]:bStrData:={ || NIL }
oBrwMenu:aCols[2]:nDataStrAlign := AL_CENTER

// No edit for SubMenu
oBrwMenu:aCols[2]:bEditWhen  := { || iif(oBrwMenu:aArrayData[oBrwMenu:nArrayAt][4],.F.,.T.) }
// Edit Type is set to GET, other options are List,Button Etc.
oBrwMenu:aCols[2]:nEditType  := EDIT_GET
oBrwMenu:aCols[2]:bEditvalue := { || space(0) }
*oBrwMenu:aCols[2]:bEditvalue := { || if(oBrwMenu:aArrayData[oBrwMenu:nArrayAt][3],"Disable ?","Enable ?") }
oBrwMenu:aCols[2]:bOnPostEdit:= { | oCol, xValue, nLastKey | MenuAccessOnEdit( oCol, xValue, nLastKey) }

// Enable user to click on the checkbox on column 2 only
oBrwMenu:bLClicked := { | nRow, nCol | iif(oBrwMenu:nColSel == 2,MenuAccessOnEdit(oBrwMenu:aCols[2],,),NIL) }

// Mouse Double Click event for the Whole column in this xBrowse
oBrwMenu:bLDblClick:={|nRow, nCol| if(nCol == 2, .F., ),MsgInfo("Test"),oBrwMenu:Refresh(),.T.}

// Mouse Double Click event for Column 2 of this xBrowse
*oBrwMenu:aCols[2]:bLDClickData := { |nRow,nCol| if(oBrwMenu:nColSel == 2,  PostMessage( oBrwMenu:hWnd, WM_KEYDOWN, 27 ),) }
*oBrwMenu:aCols[2]:bLDClickData := {|nRow, nCol| if(nCol == 2, .F., ),MsgInfo("Test"),oBrwMenu:Refresh()}

// 2nd Column should be the selected column to do the PostMessage with an ESC key, or else ESC key closes the dialog itself
// Also make sure that Postmessage should work only on 2 conditions ie
// It should be a menu item and not Sumbenu Item
*oBrwMenu:bKeyDown= {|nKey| if(oBrwMenu:nColSel == 2,if ( nKey  == VK_RETURN, PostMessage( oBrwMenu:hWnd, WM_KEYDOWN, 27 ), ),) }

oBrwMenu:bKeyDown= {|nKey| if(oBrwMenu:aArrayData[oBrwMenu:nArrayAt][4], , ; // Is submenu the do nothing, bwhen will take care
                        ( oBrwMenu:nColSel:=2 ,;  // else ie Menu items
                          if ( nKey  == VK_RETURN, PostMessage( oBrwMenu:hWnd, WM_KEYDOWN, 27 ), ) ;
                         ) ) }
                       
oBrwMenu:CreateFromCode()

@14.3,05 BUTTONBMP oBtnCancel PROMPT "Cancel" OF oDlg TEXTRIGHT BITMAP "Cancel24x24" ;
   SIZE 50,15 ACTION oDlg:End()     
   
ACTIVATE DIALOG oDlg CENTERED ;
   ON INIT ( oBrwMenu:nLeft:=220,oBrwMenu:nHeight:=oDlg:nHeight-35,oBrwMenu:nWidth:=450,;
          oBrwMenu:SetFocus()  )

Return

*---------------------------------------------*
Function MenuAccessOnEdit( oCol, xValue, nLastKey )
*---------------------------------------------*
Local oBrw  := oCol:oBrw
if oBrw:aArrayData[oBrw:nArrayAt][3]  // .T.
   oBrw:aArrayData[oBrw:nArrayAt][3]:=.F.
else
   oBrw:aArrayData[oBrw:nArrayAt][3]:=.T.
Endif
oBrw:Refresh()
Return NIL     


TestXbr.Rc

Code: Select all  Expand view
CheckOn              BITMAP  C:\FWH\Bitmaps\CheckOn.Bmp
CheckOff             BITMAP  C:\FWH\Bitmaps\CheckOff.Bmp


Usted puede sustituir FWH su instalación en el camino. RC para las imágenes CheckOn, CheckOff

Saludos,

Anser
User avatar
anserkk
 
Posts: 1329
Joined: Fri Jun 13, 2008 11:04 am
Location: Kochi, India

Postby Daniel Garcia-Gil » Sat Dec 20, 2008 2:39 pm

disculpa que me he demorado en responder... estube fuera del aire por asuntos personales

elimina esta linea
oBrwMenu:aCols[2]:bEditvalue := { || space(0) }

ya esta no la necesitas
oBrwMenu:bLDblClick:={|nRow, nCol| if(nCol == 2, .F., ),MsgInfo("Test"),oBrwMenu:Refresh(),.T.}

y agrega esto
oBrwMenu:aCols[2]:hChecked := .t.
User avatar
Daniel Garcia-Gil
 
Posts: 2365
Joined: Wed Nov 02, 2005 11:46 pm
Location: Isla de Margarita

Postby anserkk » Mon Dec 22, 2008 6:00 am

Daniel,

Su solución es perfecta y está trabajando ahora

Saludos

Anser
User avatar
anserkk
 
Posts: 1329
Joined: Fri Jun 13, 2008 11:04 am
Location: Kochi, India


Return to FiveWin para Harbour/xHarbour

Who is online

Users browsing this forum: No registered users and 13 guests