here is the complete example, the problem is that when I click on a row there is a flicker that denotes that there is something wrong
to select a row I use a popup menu
@ 85, 10 BTNBMP aBtnBrow ;
FLAT SIZE 80, 20 OF oDlg PIXEL ;
PROMPT "Select menu" ;
NOROUND ;
ACTION ::ShowPopUp( { |oBtn| MenuContextual(oBtn,oBrw,oDbf,oDlg) } )
When I click on xbrowse not run ok
#include 'fivewin.ch'
#include 'xbrowse.ch'
#include "constant.ch"
#include "report.ch"
Function test()
聽 聽local oDlg,oDbf,oFont
聽 聽local oBar,aBtnBar:=array(8)
聽 聽local aBtnBrow
聽 聽local 聽nBottom 聽 := 27.2
聽 聽local 聽nRight 聽 聽:= 89
聽 聽local 聽nWd 聽 聽 聽 := Max( nRight * DLG_CHARPIX_W, 180 )
聽 聽local 聽nHt 聽 聽 聽 := nBottom * DLG_CHARPIX_H
聽 聽 聽 聽oDbf :=TDatabase():Open( , "Customer", "DBFCDX", .T. )
聽 聽 聽 聽oDbf:setorder(1)
聽 聽 聽 聽oDbf:Gotop()
聽DEFINE DIALOG oDlg SIZE nWd, nHt PIXEL TRUEPIXEL;
聽 聽 聽 聽 聽TiTle "test"
聽@ 110,10 XBROWSE oBrw SIZE -10,-10 PIXEL OF oDlg ;
聽 聽 聽 聽 聽 DATASOURCE oDbf AUTOCOLS 聽;
聽 聽 聽 聽 聽 AUTOSORT FONT oFont;
聽 聽 聽 聽 聽 NOBORDER CELL LINES
聽 聽 聽WITH OBJECT oBrw
聽 聽 聽 聽 聽 聽 :nRowHeight 聽 聽 聽 聽 聽:= 25
聽 聽 聽 聽 聽 聽 :l2007 聽 聽 聽 聽 聽 聽 聽 := .F.
聽 聽 聽 聽 聽 聽 :l2015 聽 聽 聽 聽 聽 聽 聽 := .T.
聽 聽 聽 聽 聽 聽 :lRecordSelector 聽 聽 := .F.
聽 聽 聽 聽 聽 聽 :nColDividerStyle 聽 聽:= LINESTYLE_LIGHTGRAY
聽 聽 聽 聽 聽 聽 :nRowDividerStyle 聽 聽:= LINESTYLE_LIGHTGRAY
聽 聽 聽 聽 聽 聽 :nStretchCol 聽 聽 聽 聽 := STRETCHCOL_WIDEST
聽 聽 聽 聽 聽 聽 :nMarqueeStyle 聽 聽 聽 聽:= MARQSTYLE_HIGHLROW
聽 聽 聽 聽 聽 聽 :lAllowRowSizing 聽 聽 := .F.
聽 聽 聽 聽 聽 聽 :lAllowColSwapping 聽 := .F.
聽 聽 聽 聽 聽 聽 :lAllowColHiding 聽 聽 := .F.
聽 聽 聽 聽 聽 聽 :lAllowSizings 聽 聽 聽 := .F.
聽 聽 聽 聽 聽 聽 聽:lDrawBorder := .t.
聽 聽 聽 聽 聽 聽 聽:nClrBorder := Rgb(195,195,185)
聽 聽 聽 聽 聽 聽 :bClrStd := { || { CLR_BLACK, If( oBrw:KeyNo % 2 == 0, CLR_WHITE,RGB(243,243,238)) } }
聽 聽 聽 聽 聽END
聽 聽 聽 WITH OBJECT oBrw
聽 聽 聽 聽 聽 聽:bLClicked := { || 聽;
聽 聽 聽 聽 聽 聽 聽 聽 聽 聽If( oBrw:IsSelectedRow(), ;
聽 聽 聽 聽 聽 聽 聽 聽 聽 聽 聽 聽 聽Btnbar(1,oDlg:oBar,oDlg,oDbf,oBrw), ;
聽 聽 聽 聽 聽 聽 聽 聽 聽 聽 聽 聽 聽Btnbar(2,oDlg:oBar,oDlg,oDbf,oBrw)) }
聽 聽 聽 聽 聽 聽 :SetMultiSelectCol()
聽 聽 聽 聽 聽 聽 :CreateFromCode()
聽 聽 聽 聽 聽 END
聽 聽 @ 85, 10 BTNBMP aBtnBrow ;
聽 聽 聽 聽 聽 聽 聽 聽 FLAT 聽SIZE 80, 20 聽OF oDlg 聽 PIXEL ;
聽 聽 聽 聽 聽 聽 聽 聽 PROMPT "Select menu" 聽;
聽 聽 聽 聽 聽 聽 聽 聽 聽NOROUND 聽;
聽 聽 聽 聽 聽 聽 聽 聽 ACTION ::ShowPopUp( { |oBtn| MenuContextual(oBtn,oBrw,oDbf,oDlg) 聽} )
聽 聽 聽 聽 聽 ACTIVATE DIALOG oDlg 聽CENTER 聽 ;
聽 聽 聽 聽 聽 ON INIT ( 聽Btnbar(0,oBar,oDlg,oDbf,oBrw),;
聽 聽 聽 聽 聽 聽 聽 聽 聽 聽 聽Btnbar(1,oDlg:oBar,oDlg,oDbf,oBrw),;
聽 聽 聽 聽 聽 聽 聽 聽 聽 聽 聽ChangeButtons( oDlg:oBar ) )
RETURN NIL
//---------------------------------------------------------------------------------//
Function Btnbar(nBar,oBar,oDlg,oDbf,oBrw) 聽// ,aBtnBar
聽 聽local aBtnBar
聽 聽local x
聽 聽if Valtype( oBar ) = "O"
聽 聽 聽 For x := Len( oBar:aControls ) to 1 step - 1
聽 聽 聽 聽 聽oBar:Del( x )
聽 聽 聽 Next x
聽 聽endif
聽 Do case
聽 case nbar = 0
聽 聽 聽DEFINE BUTTONBAR oBar OF oDlg 聽SIZE 80,70 聽TOP NOBORDER 聽2015
聽 case nbar = 1
聽 聽aBtnBar := array(6)
聽 聽DEFINE BUTTON aBtnBar[1] OF oBar PROMPT "New" 聽 聽 聽ACTION NIL
聽 聽DEFINE BUTTON aBtnBar[2] OF oBar PROMPT "Modify" 聽 聽ACTION NIL
聽 聽DEFINE BUTTON aBtnBar[3] OF oBar PROMPT "Duplicate" 聽 ACTION NIL
聽 聽DEFINE BUTTON aBtnBar[4] OF oBar PROMPT "Del" 聽 聽ACTION NIL
聽 聽DEFINE BUTTON aBtnBar[5] OF oBar PROMPT "Print" 聽 聽action oBrw:Report( )
聽 聽DEFINE BUTTON aBtnBar[6] OF oBar PROMPT "HElp" 聽 聽ACTION NIL 聽 聽BTNRIGHT
聽 case nbar = 2
聽 聽aBtnBar := array(3)
聽 聽DEFINE BUTTON aBtnBar[1] OF oBar PROMPT "Del" 聽 聽ACTION NIL
聽 聽DEFINE BUTTON aBtnBar[2] OF oBar PROMPT "Print" 聽 聽 action oBrw:Report( )
聽 聽DEFINE BUTTON aBtnBar[3] OF oBar PROMPT "Help" 聽 聽 ACTION NIL 聽BTNRIGHT
聽 endcase
return oBar
//-------------------------------------------------------------------------------//
聽function ChangeButtons( oBar )
聽 聽 聽 聽AEval( oBar:aControls, { | oCtrl | oCtrl:nTop += 4, oCtrl:nHeight -= 4 } )
聽 聽 return .T.
//-------------------------------------------------------------------------------//
//-------------------------------------------------------------------------------//
Function MenuContextual(oControl,oBrw,oDbf,oParent)
聽 聽local oMenu
聽MENU oMenu POPUP
聽 聽 聽 聽 聽 聽if oBrw:IsSelectedRow()
聽 聽 聽 聽 聽 聽 聽 MENUITEM "Deselect row" action (oBrw:SelectRow( 0 ) , Btnbar(1,oParent:oBar,oParent,oDbf,oBrw))
聽 聽 聽 聽 聽 聽 聽 聽 else
聽 聽 聽 聽 聽 聽 聽 MENUITEM "Select row" 聽 action (oBrw:SelectRow( 2 ), Btnbar(2,oParent:oBar,oParent,oDbf,oBrw) )
聽 聽 聽 聽 endif
聽 聽 聽 聽SEPARATOR
聽 聽 聽 聽 聽 聽 聽 MENUITEM "Print" 聽 action oBrw:Report( )
聽 聽 聽ENDMENU
聽 聽return oMenu
//-------------------------------------------------------------------------------//
Since from 1991/1992 ( fw for clipper Rel. 14.4 - Momos)
I use : FiveWin for Harbour March-April 2024 - Harbour 3.2.0dev (harbour_bcc770_32_20240309) - Bcc7.70 - xMate ver. 1.15.3 - PellesC - mail: silvio[dot]falconi[at]gmail[dot]com