Page 1 of 2

Search on a Xbrowse

PostPosted: Thu Feb 24, 2022 9:26 am
by Silvio.Falconi
If insert the get and the combobox on a buttonbar then not run ok the search on xbrowse
while combobox run correclty.




Image


I use customer.dbf

the test
Code: Select all  Expand view


#include "fivewin.ch"

 REQUEST DBFCDX
    #define  TXT_COLORE1 nRgb( 245,244,234)
    #define  TXT_COLORE2 nRgb(233,229,206)
    #define  TXT_COLORE3 RGB( 238,236,219 )
    #define  TXT_COLORE4 nRgb(218,214,179)


Static lToolbar

function Main()

       local oWnd, oBar, oMenu
       RddSetDefault( "DBFCDX" )
     


       DEFINE WINDOW oWnd MDI TITLE "Test"
       DEFINE BUTTONBAR oBar OF oWnd SIZE 100,32
       DEFINE BUTTON OF oBar PROMPT "Customer"   CENTER ACTION  Customer()
       ACTIVATE WINDOW oWnd
    return nil
//-----------------------------------------------------------//

Function Customer()
  local oTable
  local oCust
  local aBrowse
  local ctitle :="Table of Customer"

  oCust:=Tdatabase():Open( , "Customer", "DBFCDX", .T. )
  oCust:SetOrder("FIRST")
  oCust:Gotop()

 aBrowse    := { ;
               { "FIRST"   ,   "Surname"      ,,   140, },;
               { "LAST"     ,  "Name"        ,,   150, },;
               { "STREET"   ,  "Address"   ,,   150, },;
               { "CITY"     ,  "City"       ,,   150, },;
               { "STATE"    ,  "State"       ,,   150, },;
               { "ZIP"      ,  "Zip"         ,,   150, },;
               { "HIREDATE" ,  "Hiredate"  ,,   150, },;
               { "MARRIED"  ,  "Married"     ,,   150, },;
               { "AGE"      ,  "Years"         ,,   150, },;
               { "SALARY"   ,  "Salary"   ,,   150, },;
               { "NOTES"    ,  "Comment"     ,,   150, }}

             
     XBrowseTable(oCust,aBrowse,ctitle,,.t.)

       return nil

//---------------------------------------------------------------------//
Function XBrowseTable(oDbf,aBrowse,ctitle,lShowRec,lselectMulti)
local oDlgLook,oToolBar,oFont,oBold
local oGetSearch,oSaySearch:=array(2)
local cSeek:=space(100)
local nHt      := Int( ScreenHeight() * 0.4 )
local nWd      := 750
local oBrwlook,oHand

DEFAULT  lShowRec:=.f.     ,;
         lselectMulti:=.f.

   lToolbar:=.t.   //On off Toolbar

   DEFINE CURSOR oHand HAND
   DEFINE FONT oFont NAME 'TAHOMA' SIZE 0,-9
   DEFINE FONT oBold NAME 'TAHOMA' SIZE 0,-9 BOLD

 DEFINE DIALOG oDlgLook TITLE ctitle ;
        SIZE nWd, nHt PIXEL ;  //
        STYLE nOr( WS_OVERLAPPEDWINDOW )  FONT oFont

IF lToolBar

  DEFINE BUTTONBAR oToolBar OF oDlgLook SIZE 22,22  TOP   2015  NOBORDER

   DEFINE BUTTON OF oToolBar RESOURCE FWBitmap( "top2" )  ;
      ACTION oBrwlook:KeyDown(VK_HOME, 0) WHEN oDbf:OrdKeyCount() > 0

   DEFINE BUTTON OF oToolBar RESOURCE FwBitmap( "previous2" )  ;
      ACTION oBrwlook:KeyDown(VK_UP, 0) WHEN oDbf:OrdKeyCount() > 0

   DEFINE BUTTON OF oToolBar RESOURCE FWBitmap( "next2" ) ;
      ACTION oBrwlook:KeyDown(VK_DOWN, 0)  WHEN oDbf:OrdKeyCount() > 0

   DEFINE BUTTON OF oToolBar RESOURCE FWBitmap( "bottom2" ) ;
      ACTION oBrwlook:KeyDown(VK_END, 0)  WHEN oDbf:OrdKeyCount() > 0

   DEFINE BUTTON OF oToolBar  RESOURCE FWBitmap( "printer" );
      ACTION oBrwlook:Report()  WHEN oDbf:OrdKeyCount() > 0

             oToolBar:bClrGrad = { | lInvert | If( ! lInvert,;
                    { { 1, RGB( 244, 244, 245 ), RGB( 244, 244, 245 ) } },;
                    { { 1, RGB( 145, 201, 247 ), RGB( 145, 201, 247 ) } } ) }



AEval(  oToolBar:aControls, { | o | o:oCursor := oHand } )




ENDIF



   IF lToolBar

     @ 110,10 XBROWSE oBrwlook SIZE -2, -5 PIXEL OF oDlgLook ;
          DATASOURCE oDbf COLUMNS aBrowse ;
          AUTOSORT ;
          NOBORDER CELL LINES
  else

       @ 0,0 XBROWSE oBrwlook SIZE -2, -5 PIXEL OF oDlgLook ;
          DATASOURCE oDbf COLUMNS aBrowse ;
          AUTOSORT ;
          NOBORDER CELL LINES
    Endif


    WITH OBJECT oBrwlook

            :lIncrFilter      := .t.
            :bOnSort          := { |b,oCol| oBrwlook:Seek( "" ), ;
                                   oBrwlook:cFilterFld := oCol:cExpr, ;
                                   oBrwlook:SetFocus() }


            :oSeek := oGetSearch
            :CreateFromCode()
         END

       oBrwlook:bRClicked := {|nRow,nCol| MenuDisplay(nRow,nCol,@ltoolBar,oBrwlook,oDlgLook) }






oDlgLook:bResized  := <||
   local oRect       := oDlgLook:GetCliRect()

           IF   lToolbar
                     oBrwlook:nTop      := oRect:nTop+24
                     oBrwlook:nLeft     := oRect:nLeft
                     oToolBar:Show()
                  ELSE
                     oBrwlook:nTop      := oRect:nTop
                     oBrwlook:nLeft     := oRect:nLeft
                     oToolBar:Hide()
                  ENDIF
                  oBrwlook:setfocus()
                  oBrwlook:refresh()
                  RETURN nil
                  >




Activate Dialog oDlgLook CENTER;
   ON INIT (GetSearch(oToolBar,lToolbar,cSeek,oGetSearch,oBrwlook,oSaySearch,oFont,oBold),;
            Eval(oDlgLook:bResized()) )
RETURN NIL

//---------------------------------------------------------------------------//
Function MenuDisplay(nRow,nCol,lToolbar,oBrwlook,oDlgLook)
     local oMenu
     local otoolBarCheck
     MENU oMenu  POPUP
     MENUITEM "   "
     SEPARATOR
        MENUITEM oToolBarCheck Prompt "Show ToolBar" ;
          ACTION ( ltoolBar :=!ltoolBar,;
                      Eval( oDlgLook:bResized),;
                      oBrwLook:refresh(),;
                   oToolBarCheck:SetCheck( ltoolBar ))

         SEPARATOR
          ENDMENU
          oToolBarCheck:SetCheck( ltoolBar )
   ACTIVATE POPUP oMenu OF oDlgLook AT  oBrwLook:nTop+nRow, oBrwLook:nLeft+nCol
   RETURN (NIL)
//------------------------------------------------------------------------------//

Function GetSearch(oToolBar,lToolbar,cSeek,oGetSearch,oBrwlook,oSaySearch,oFont,oBold)
   IF lToolBar

        @ 5, 210 SAY oSaySearch[1] Prompt "Search:" SIZE 46,24 PIXEL OF oToolBar FONT oBold  COLOR CLR_BLACK,RGB( 244, 244, 245 )
        @ 0, 270 GET oGetSearch VAR cSeek SIZE 120,24 PIXEL OF oToolBar  ;
                      BITMAP "ELIMINA" ACTION (cSeek    := Space( 100 ),;
                      oBrwlook:Seek( "" ),oBrwLook:refresh(),oGetSearch:refresh())

                 oGetSearch:lBtnTransparent :=.t.

          @ 5, 395 SAY oSaySearch[2] Prompt "Into" SIZE 40,24 PIXEL OF oToolBar FONT oBold  COLOR CLR_BLACK,RGB( 244, 244, 245 )
          @ 0, 420 COMBOBOX oBrwlook:oSortCbx VAR oBrwlook:cSortOrder;
                     SIZE 100,400 PIXEL OF oToolBar HEIGHTGET 14 STYLE CBS_DROPDOWN
       Endif
  return nil
//-----------------------------------------------------------------------------------//


 

Re: Search on a Xbrowse

PostPosted: Thu Feb 24, 2022 11:30 am
by karinha
Your logic is too complex for my level of knowledge. I cannot understand or master this module.

Tu lógica es demasiado compleja para mi nivel de conocimiento. No puedo entender o dominar este módulo.

Regards, saludos.

Re: Search on a Xbrowse

PostPosted: Thu Feb 24, 2022 11:45 am
by Silvio.Falconi
karinha wrote:Your logic is too complex for my level of knowledge. I cannot understand or master this module.

Tu lógica es demasiado compleja para mi nivel de conocimiento. No puedo entender o dominar este módulo.

Regards, saludos.



Image

My logic is too complex ? Do you have the last fwh Release ?

Compile it pls , I made for you a test no complex without buttonbar


Image



Code: Select all  Expand view

#include "fivewin.ch"

   REQUEST DBFCDX

    Function Test()

     local cHelp
     local oDlgLook,oBar
     local oBrwLook
     local oDbf,nRec
     local aCols
     local cSeek:=Space(100)
     local oGet
     local oFont,oBold

     


  oDbf:=Tdatabase():Open( , "Customer", "DBFCDX", .T. )
  oDbf:SetOrder("FIRST")
  oDbf:Gotop()



      aCols  := { ;
               { "FIRST"   ,   "Cognome"      ,,   140, },;
               { "LAST"     ,  "Nome"        ,,   150, },;
               { "STREET"   ,  "Indirizzo"   ,,   150, },;
               { "CITY"     ,  "Città"       ,,   150, },;
               { "STATE"    ,  "Stato"       ,,   150, },;
               { "ZIP"      ,  "Cap"         ,,   150, },;
               { "HIREDATE" ,  "Assunzione"  ,,   150, },;
               { "MARRIED"  ,  "Sposato"     ,,   150, },;
               { "AGE"      ,  "Età"         ,,   150, },;
               { "SALARY"   ,  "Stipendio"   ,,   150, },;
               { "NOTES"    ,  "Appunti"     ,,   150, }}


       DEFINE FONT oFont NAME "TAHOMA" SIZE 0,-14
       DEFINE FONT oBold NAME "TAHOMA" SIZE 0,-14 BOLD


       DEFINE DIALOG oDlgLook SIZE 880,600 ;
          PIXEL TRUEPIXEL RESIZABLE FONT oFont;
          TITLE "Test no complex for Karinha"

       @ 10, 165 GET oGet VAR cSeek SIZE 280,24 PIXEL OF oDlgLook

             @ 40,20 XBROWSE oBrwLook SIZE -20,-20 PIXEL OF oDlgLook ;
          DATASOURCE oDbf COLUMNS aCols ;
          AUTOSORT ;
          NOBORDER CELL LINES

       
      WITH OBJECT oBrwLook
                    //:aCols[ 3 ]:cSortOrder := ""
                    // :aCols[ 4 ]:cSortOrder := ""
       
          :bClrStd          := { || { CLR_BLACK, If( oBrwLook:SelectRow(), 0x88EDFB, CLR_WHITE ) } }
          :nRecSelColor     :=   nRgb( 245,244,234)
          :lIncrFilter   := .t.
          :bOnSort       := { |b,oCol| oBrwLook:Seek( "" ), ;
                                 oBrwLook:cFilterFld := oCol:cExpr, ;
                                 oBrwLook:SetFocus() }
          //
       
           :oSeek := oGet
          :CreateFromCode()
       END

         @ 10, 20 COMBOBOX oBrwLook:oSortCbx VAR oBrwLook:cSortOrder  SIZE 100,400 PIXEL OF oDlgLook


       ACTIVATE DIALOG oDlgLook CENTERED

      RETURN (NIL)

   



Now Add A buttonbar on Dialog and insert the controls :

Test with Buttonbar

Code: Select all  Expand view
#include "fivewin.ch"

   REQUEST DBFCDX

    Function Test()

     local cHelp
     local oDlgLook,oBar
     local oBrwLook,oToolBar
     local oDbf,nRec
     local aCols
     local cSeek:=Space(100)
     local oGet
     local oFont,oBold

     


  oDbf:=Tdatabase():Open( , "Customer", "DBFCDX", .T. )
  oDbf:SetOrder("FIRST")
  oDbf:Gotop()



      aCols  := { ;
               { "FIRST"   ,   "Cognome"      ,,   140, },;
               { "LAST"     ,  "Nome"        ,,   150, },;
               { "STREET"   ,  "Indirizzo"   ,,   150, },;
               { "CITY"     ,  "Città"       ,,   150, },;
               { "STATE"    ,  "Stato"       ,,   150, },;
               { "ZIP"      ,  "Cap"         ,,   150, },;
               { "HIREDATE" ,  "Assunzione"  ,,   150, },;
               { "MARRIED"  ,  "Sposato"     ,,   150, },;
               { "AGE"      ,  "Età"         ,,   150, },;
               { "SALARY"   ,  "Stipendio"   ,,   150, },;
               { "NOTES"    ,  "Appunti"     ,,   150, }}


       DEFINE FONT oFont NAME "TAHOMA" SIZE 0,-14
       DEFINE FONT oBold NAME "TAHOMA" SIZE 0,-14 BOLD


       DEFINE DIALOG oDlgLook SIZE 880,600 ;
          PIXEL TRUEPIXEL RESIZABLE FONT oFont;
          TITLE "Test no complex for Karinha"


       @ 1, 565 GET oGet VAR cSeek SIZE 280,24 PIXEL OF  oToolBar //  oDlgLook



             @ 40,20 XBROWSE oBrwLook SIZE -20,-20 PIXEL OF oDlgLook ;
          DATASOURCE oDbf COLUMNS aCols ;
          AUTOSORT ;
          NOBORDER CELL LINES


      WITH OBJECT oBrwLook
                    //:aCols[ 3 ]:cSortOrder := ""
                    // :aCols[ 4 ]:cSortOrder := ""

          :bClrStd          := { || { CLR_BLACK, If( oBrwLook:SelectRow(), 0x88EDFB, CLR_WHITE ) } }
          :nRecSelColor     :=   nRgb( 245,244,234)
          :lIncrFilter   := .t.
          :bOnSort       := { |b,oCol| oBrwLook:Seek( "" ), ;
                                 oBrwLook:cFilterFld := oCol:cExpr, ;
                                 oBrwLook:SetFocus() }
          //

           :oSeek := oGet
          :CreateFromCode()
       END

         @ 1, 420 COMBOBOX oBrwLook:oSortCbx VAR oBrwLook:cSortOrder  SIZE 100,400 PIXEL OF  oToolBar //oDlgLook






        DEFINE BUTTONBAR oToolBar OF oDlgLook SIZE 22,22  TOP   2015  NOBORDER

        DEFINE BUTTON OF oToolBar RESOURCE FWBitmap( "top2" )  ;
        ACTION oBrwlook:KeyDown(VK_HOME, 0) WHEN oDbf:OrdKeyCount() > 0
        DEFINE BUTTON OF oToolBar RESOURCE FwBitmap( "previous2" )  ;
        ACTION oBrwlook:KeyDown(VK_UP, 0) WHEN oDbf:OrdKeyCount() > 0
        DEFINE BUTTON OF oToolBar RESOURCE FWBitmap( "next2" ) ;
        ACTION oBrwlook:KeyDown(VK_DOWN, 0)  WHEN oDbf:OrdKeyCount() > 0
        DEFINE BUTTON OF oToolBar RESOURCE FWBitmap( "bottom2" ) ;
        ACTION oBrwlook:KeyDown(VK_END, 0)  WHEN oDbf:OrdKeyCount() > 0
        DEFINE BUTTON OF oToolBar  RESOURCE FWBitmap( "printer" );
        ACTION oBrwlook:Report()  WHEN oDbf:OrdKeyCount() > 0



    oToolBar:bClrGrad = { | lInvert | If( ! lInvert,;
                    { { 1, RGB( 244, 244, 245 ), RGB( 244, 244, 245 ) } },;
                    { { 1, RGB( 145, 201, 247 ), RGB( 145, 201, 247 ) } } ) }

    ACTIVATE DIALOG oDlgLook CENTERED  ;
        ON INIT (oBrwLook:oSortCbx:refresh(.t.),;
                 oBrwLook:oSortCbx:setfocus(),;
                 oGet:setfocus() )

      RETURN (NIL)

   



at init the buttonbar is not visible and also the get and the combobox ...why ?

I tried also with a refreshing of controls

ACTIVATE DIALOG oDlgLook CENTERED ;
ON INIT (oDlgLook:Resize(),RefreshButtons( otoolBar ) )

RETURN (NIL)
//--------------------------------------------------------------------//
function RefreshButtons( oBar )
AEval( oBar:aControls, { | oCtrl | oCtrl:refresh() } )
return .T.


Image

thanks

Re: Search on a Xbrowse

PostPosted: Thu Feb 24, 2022 12:27 pm
by karinha
Creo que tienes razón. Mi versión de Fivewin está desactualizada en comparación con la tuya. Aun así, su nivel de evolución, lo confieso, que no puedo seguir. No sé programar en modo avanzado como tú. Felicidades por la evolución.

I think you're right. My version of Fivewin is outdated compared to yours. Even so, its level of evolution, I confess, that I can't keep up. I don't know how to program in advanced mode like you do. Congratulations on the evolution.

Regards, saludos.

Re: Search on a Xbrowse

PostPosted: Thu Feb 24, 2022 12:51 pm
by Marc Venken
Silvio,

Maybe this can help you a little further...

I added a function, see if it is usefull.

The get is however not changing the browse... Should you find this, please post it here...

Code: Select all  Expand view

#include "fivewin.ch"

   REQUEST DBFCDX

    Function Test()

     local cHelp
     local oDlgLook,oBar
     local oBrwLook,oToolBar
     local oDbf,nRec
     local aCols
     local cSeek:=Space(100)
     local oGet
     local oFont,oBold




  oDbf:=Tdatabase():Open( , "Customer", "DBFCDX", .T. )
  oDbf:SetOrder("FIRST")
  oDbf:Gotop()



      aCols  := { ;
               { "FIRST"   ,   "Cognome"      ,,   140, },;
               { "LAST"     ,  "Nome"        ,,   150, },;
               { "STREET"   ,  "Indirizzo"   ,,   150, },;
               { "CITY"     ,  "Città"       ,,   150, },;
               { "STATE"    ,  "Stato"       ,,   150, },;
               { "ZIP"      ,  "Cap"         ,,   150, },;
               { "HIREDATE" ,  "Assunzione"  ,,   150, },;
               { "MARRIED"  ,  "Sposato"     ,,   150, },;
               { "AGE"      ,  "Età"         ,,   150, },;
               { "SALARY"   ,  "Stipendio"   ,,   150, },;
               { "NOTES"    ,  "Appunti"     ,,   150, }}


       DEFINE FONT oFont NAME "TAHOMA" SIZE 0,-14
       DEFINE FONT oBold NAME "TAHOMA" SIZE 0,-14 BOLD


       DEFINE DIALOG oDlgLook SIZE 880,600 ;
          PIXEL TRUEPIXEL RESIZABLE FONT oFont;
          TITLE "Test no complex for Karinha"


       @ 1, 565 GET oGet VAR cSeek SIZE 280,24 PIXEL OF  oToolBar //  oDlgLook



             @ 40,20 XBROWSE oBrwLook SIZE -20,-20 PIXEL OF oDlgLook ;
          DATASOURCE oDbf COLUMNS aCols ;
          AUTOSORT ;
          NOBORDER CELL LINES

          XbrSetupBar( oBrwLook )


      WITH OBJECT oBrwLook
                    //:aCols[ 3 ]:cSortOrder := ""
                    // :aCols[ 4 ]:cSortOrder := ""

          :bClrStd          := { || { CLR_BLACK, If( oBrwLook:SelectRow(), 0x88EDFB, CLR_WHITE ) } }
          :nRecSelColor     :=   nRgb( 245,244,234)
          :lIncrFilter   := .t.
          :bOnSort       := { |b,oCol| oBrwLook:Seek( "" ), ;
                                 oBrwLook:cFilterFld := oCol:cExpr, ;
                                 oBrwLook:SetFocus() }
          //

           :oSeek := oGet
          :CreateFromCode()
       END

         @ 1, 420 COMBOBOX oBrwLook:oSortCbx VAR oBrwLook:cSortOrder  SIZE 100,400 PIXEL OF  oToolbar //oDlgLook

        DEFINE BUTTONBAR oToolBar OF oDlgLook SIZE 22,22  TOP   2015  NOBORDER

        DEFINE BUTTON OF oToolBar RESOURCE FWBitmap( "top2" )  ;
        ACTION oBrwlook:KeyDown(VK_HOME, 0) WHEN oDbf:OrdKeyCount() > 0
        DEFINE BUTTON OF oToolBar RESOURCE FwBitmap( "previous2" )  ;
        ACTION oBrwlook:KeyDown(VK_UP, 0) WHEN oDbf:OrdKeyCount() > 0
        DEFINE BUTTON OF oToolBar RESOURCE FWBitmap( "next2" ) ;
        ACTION oBrwlook:KeyDown(VK_DOWN, 0)  WHEN oDbf:OrdKeyCount() > 0
        DEFINE BUTTON OF oToolBar RESOURCE FWBitmap( "bottom2" ) ;
        ACTION oBrwlook:KeyDown(VK_END, 0)  WHEN oDbf:OrdKeyCount() > 0
        DEFINE BUTTON OF oToolBar  RESOURCE FWBitmap( "printer" );
        ACTION oBrwlook:Report()  WHEN oDbf:OrdKeyCount() > 0



    oToolBar:bClrGrad = { | lInvert | If( ! lInvert,;
                    { { 1, RGB( 244, 244, 245 ), RGB( 244, 244, 245 ) } },;
                    { { 1, RGB( 145, 201, 247 ), RGB( 145, 201, 247 ) } } ) }

    ACTIVATE DIALOG oDlgLook CENTERED  ;
        ON INIT (oBrwLook:oSortCbx:refresh(.t.),;
                 oBrwLook:oSortCbx:setfocus(),;
                 oGet:setfocus() )

      RETURN (NIL)

function XbrSetupBar( oBrw )
   local cSeek := space(100)
   Local oBtnClear

   oBrw:nTopBarHeight := 70
   oBrw:bOnAdjust := <||
      local oBtn
      @ 10,10 BTNBMP oBtn PROMPT "New" RESOURCE "ADD" SIZE 60,60 PIXEL OF oBrw NOBORDER
      @ 10,200 GET oGet VAR cSeek SIZE 100,25 PIXEL OF oBrw

      @ 15,500 COMBOBOX oBrw:oSortCbx VAR oBrw:cSortOrder SIZE 100,200 PIXEL OF oBrw


      return nil
      >

return nil

 

Re: Search on a Xbrowse

PostPosted: Thu Feb 24, 2022 1:02 pm
by Marc Venken
karinha wrote:Creo que tienes razón. Mi versión de Fivewin está desactualizada en comparación con la tuya. Aun así, su nivel de evolución, lo confieso, que no puedo seguir. No sé programar en modo avanzado como tú. Felicidades por la evolución.

I think you're right. My version of Fivewin is outdated compared to yours. Even so, its level of evolution, I confess, that I can't keep up. I don't know how to program in advanced mode like you do. Congratulations on the evolution.

Regards, saludos.


The post's you did, even in my topics are surely in advanced mode .... It helped me a lot to get it started. Keep up posting, we can use it :wink:

Re: Search on a Xbrowse

PostPosted: Thu Feb 24, 2022 1:10 pm
by Silvio.Falconi
Marc Venken wrote:Silvio,

Maybe this can help you a little further...

I added a function, see if it is usefull.

The get is however not changing the browse... Should you find this, please post it here...

Code: Select all  Expand view

#include "fivewin.ch"

   REQUEST DBFCDX

    Function Test()

     local cHelp
     local oDlgLook,oBar
     local oBrwLook,oToolBar
     local oDbf,nRec
     local aCols
     local cSeek:=Space(100)
     local oGet
     local oFont,oBold




  oDbf:=Tdatabase():Open( , "Customer", "DBFCDX", .T. )
  oDbf:SetOrder("FIRST")
  oDbf:Gotop()



      aCols  := { ;
               { "FIRST"   ,   "Cognome"      ,,   140, },;
               { "LAST"     ,  "Nome"        ,,   150, },;
               { "STREET"   ,  "Indirizzo"   ,,   150, },;
               { "CITY"     ,  "Città"       ,,   150, },;
               { "STATE"    ,  "Stato"       ,,   150, },;
               { "ZIP"      ,  "Cap"         ,,   150, },;
               { "HIREDATE" ,  "Assunzione"  ,,   150, },;
               { "MARRIED"  ,  "Sposato"     ,,   150, },;
               { "AGE"      ,  "Età"         ,,   150, },;
               { "SALARY"   ,  "Stipendio"   ,,   150, },;
               { "NOTES"    ,  "Appunti"     ,,   150, }}


       DEFINE FONT oFont NAME "TAHOMA" SIZE 0,-14
       DEFINE FONT oBold NAME "TAHOMA" SIZE 0,-14 BOLD


       DEFINE DIALOG oDlgLook SIZE 880,600 ;
          PIXEL TRUEPIXEL RESIZABLE FONT oFont;
          TITLE "Test no complex for Karinha"


       @ 1, 565 GET oGet VAR cSeek SIZE 280,24 PIXEL OF  oToolBar //  oDlgLook



             @ 40,20 XBROWSE oBrwLook SIZE -20,-20 PIXEL OF oDlgLook ;
          DATASOURCE oDbf COLUMNS aCols ;
          AUTOSORT ;
          NOBORDER CELL LINES

          XbrSetupBar( oBrwLook )


      WITH OBJECT oBrwLook
                    //:aCols[ 3 ]:cSortOrder := ""
                    // :aCols[ 4 ]:cSortOrder := ""

          :bClrStd          := { || { CLR_BLACK, If( oBrwLook:SelectRow(), 0x88EDFB, CLR_WHITE ) } }
          :nRecSelColor     :=   nRgb( 245,244,234)
          :lIncrFilter   := .t.
          :bOnSort       := { |b,oCol| oBrwLook:Seek( "" ), ;
                                 oBrwLook:cFilterFld := oCol:cExpr, ;
                                 oBrwLook:SetFocus() }
          //

           :oSeek := oGet
          :CreateFromCode()
       END

         @ 1, 420 COMBOBOX oBrwLook:oSortCbx VAR oBrwLook:cSortOrder  SIZE 100,400 PIXEL OF  oToolbar //oDlgLook

        DEFINE BUTTONBAR oToolBar OF oDlgLook SIZE 22,22  TOP   2015  NOBORDER

        DEFINE BUTTON OF oToolBar RESOURCE FWBitmap( "top2" )  ;
        ACTION oBrwlook:KeyDown(VK_HOME, 0) WHEN oDbf:OrdKeyCount() > 0
        DEFINE BUTTON OF oToolBar RESOURCE FwBitmap( "previous2" )  ;
        ACTION oBrwlook:KeyDown(VK_UP, 0) WHEN oDbf:OrdKeyCount() > 0
        DEFINE BUTTON OF oToolBar RESOURCE FWBitmap( "next2" ) ;
        ACTION oBrwlook:KeyDown(VK_DOWN, 0)  WHEN oDbf:OrdKeyCount() > 0
        DEFINE BUTTON OF oToolBar RESOURCE FWBitmap( "bottom2" ) ;
        ACTION oBrwlook:KeyDown(VK_END, 0)  WHEN oDbf:OrdKeyCount() > 0
        DEFINE BUTTON OF oToolBar  RESOURCE FWBitmap( "printer" );
        ACTION oBrwlook:Report()  WHEN oDbf:OrdKeyCount() > 0



    oToolBar:bClrGrad = { | lInvert | If( ! lInvert,;
                    { { 1, RGB( 244, 244, 245 ), RGB( 244, 244, 245 ) } },;
                    { { 1, RGB( 145, 201, 247 ), RGB( 145, 201, 247 ) } } ) }

    ACTIVATE DIALOG oDlgLook CENTERED  ;
        ON INIT (oBrwLook:oSortCbx:refresh(.t.),;
                 oBrwLook:oSortCbx:setfocus(),;
                 oGet:setfocus() )

      RETURN (NIL)

function XbrSetupBar( oBrw )
   local cSeek := space(100)
   Local oBtnClear

   oBrw:nTopBarHeight := 70
   oBrw:bOnAdjust := <||
      local oBtn
      @ 10,10 BTNBMP oBtn PROMPT "New" RESOURCE "ADD" SIZE 60,60 PIXEL OF oBrw NOBORDER
      @ 10,200 GET oGet VAR cSeek SIZE 100,25 PIXEL OF oBrw

      @ 15,500 COMBOBOX oBrw:oSortCbx VAR oBrw:cSortOrder SIZE 100,200 PIXEL OF oBrw


      return nil
      >

return nil

 


the get not run on XbrSetupBar( oBrw ) not search

Re: Search on a Xbrowse

PostPosted: Thu Feb 24, 2022 4:24 pm
by Antonio Linares
Silvio,

You should check if the cdx file exists:
Code: Select all  Expand view
oCust:=Tdatabase():Open( , "Customer", "DBFCDX", .T. )
 if ! File( "customer.cdx" )
    oCust:CreateIndex( "Customer", "First", "First" )
 endif  
 oCust:SetOrder( "First" )
 oCust:Gotop()

Re: Search on a Xbrowse

PostPosted: Thu Feb 24, 2022 6:26 pm
by Silvio.Falconi
the combobox index the browser, the get not search any data

Re: Search on a Xbrowse

PostPosted: Thu Feb 24, 2022 6:58 pm
by Rick Lipkin
To All

Rao helped me with this incremental TDatabase search ... here is the code ..

Rick Lipkin

Code: Select all  Expand view

#include "fivewin.ch"

REQUEST DBFCDX

//----------------------------------------------------------------------------//

function Main()

   local oDlg, oFont, oBrw, oGet1, oGet2, oDbf
   local cName := Space( 20 )
   local cCity := Space( 20 )

   SetGetColorFocus()

   oDbf  := TDataBase():Open( nil, "CUSTOMER.dbf", "DBFCDX", .t. )

    oDbf:SetOrder( "CustNAme" ) //, [cFile]
    oDBf:GoTop()


   oDbf:SetFilter( "UPPER(CUSTNAME) = ?", ;
       { || { If( Empty( cName ), "none", UPPER(ALLTRIM(cName))) } } )

   oDbf:GoTop()

   DEFINE FONT oFont NAME "TAHOMA" SIZE 0,-14
   DEFINE DIALOG oDlg SIZE 700,400 PIXEL TRUEPIXEL FONT oFont

   @  22, 20 SAY "FILTER: Name: " SIZE 100,24 PIXEL OF oDlg

   @  20,150 GET oGet1 VAR cName SIZE 150,26 PIXEL OF oDlg ;
      ON CHANGE ( oGet1:Assign(), oDbf:ReFilter(), oDbf:GoTop(), oBrw:Refresh() )


   @  55, 20 XBROWSE oBrw SIZE -20,-20 PIXEL OF oDlg ;
      DATASOURCE oDbf ;
      COLUMNS "CUSTNAME", "CUSTCITY", "CUSTSTATE" ;
      CELL LINES NOBORDER FOOTERS

   WITH OBJECT oBrw
      :bClrSel := :bClrSelFocus
      :CreateFromCode()
   END

   @ .5, 70 BUTTON "View All" size 100,40 ACTION _ViewAll( oBrw,oDbf )
   @ .5, 90 BUTTON "Reset Filter" size 100,40 ACTION ; //_ResetFilter( oBrw,oDbf, @cName,oGet1 )
      ( oDbf:SetFilter( "UPPER(CUSTNAME) = ?", ;
           { || { If( Empty( cName ), "none", UPPER(ALLTRIM(cName))) } } ), ;
        oDbf:GoTop(), oBrw:Refresh(), oGet1:SetFocus() )


  ACTIVATE DIALOG oDlg CENTERED
  RELEASE FONT oFont

return nil

//--------------------
Static Func _ViewAll( oBrw,oDbf, cName,oGet1 )

oDbf:SetFilter("" )
oDbf:GoTop()

oBrw:ReFresh()

Return(nil)

//-----------------------
Static Func _ResetFilter( oBrw,oDbf, cName,oGet1 )

cName := space(50)
oGet1:ReFresh()

oDbf:SetFilter( "" )

oDbf:SetOrder( "CustNAme" ) //, [cFile]
    oDBf:GoTop()

oDbf:SetFilter( "UPPER(CUSTNAME) = ?", ;
    { || { If( Empty( cName ), "none", UPPER(ALLTRIM(cName))) } } )

oDbf:GoTop()
oBrw:ReFresh()

oGet1:SetFocus()

Return(nil)

//----------------------------------------------------------------------------//


 


Image


Image

Re: Search on a Xbrowse

PostPosted: Thu Feb 24, 2022 9:10 pm
by Marc Venken
Silvio,

Your sample is working !! but there is a issue of putting the get and combo on the buttonbar. If you put them lower (see the code) than you see them

I wonder if the buttonbar can handle the get and combo. Mayby it is intented only for buttons ?

Code: Select all  Expand view

#include "fivewin.ch"

   REQUEST DBFCDX

    Function Test()

     local cHelp
     local oDlgLook,oBar
     local oBrwLook,oToolBar
     local oDbf,nRec
     local aCols
     local cSeek:=Space(100)
     local oGet
     local oFont,oBold

  oDbf:=Tdatabase():Open( , "Customer", "DBFCDX", .T. )
  oDbf:SetOrder("FIRST")
  oDbf:Gotop()

      aCols  := { ;
               { "FIRST"   ,   "Cognome"      ,,   140, },;
               { "LAST"     ,  "Nome"        ,,   150, },;
               { "STREET"   ,  "Indirizzo"   ,,   150, },;
               { "CITY"     ,  "Città"       ,,   150, },;
               { "STATE"    ,  "Stato"       ,,   150, },;
               { "ZIP"      ,  "Cap"         ,,   150, },;
               { "HIREDATE" ,  "Assunzione"  ,,   150, },;
               { "MARRIED"  ,  "Sposato"     ,,   150, },;
               { "AGE"      ,  "Età"         ,,   150, },;
               { "SALARY"   ,  "Stipendio"   ,,   150, },;
               { "NOTES"    ,  "Appunti"     ,,   150, }}


       DEFINE FONT oFont NAME "TAHOMA" SIZE 0,-14
       DEFINE FONT oBold NAME "TAHOMA" SIZE 0,-14 BOLD

       DEFINE DIALOG oDlgLook SIZE 880,600 ;
          PIXEL TRUEPIXEL RESIZABLE FONT oFont;
          TITLE "Test no complex for Karinha"


       @ 20, 200 GET oGet VAR cSeek SIZE 150,30 PIXEL OF  oToolBar //  oDlgLook

       @ 80,20 XBROWSE oBrwLook SIZE -20,-20 PIXEL OF oDlgLook ;
          DATASOURCE oDbf COLUMNS aCols ;
          AUTOSORT ;
          NOBORDER CELL LINES

      WITH OBJECT oBrwLook
                    //:aCols[ 3 ]:cSortOrder := ""
                    // :aCols[ 4 ]:cSortOrder := ""

          :bClrStd          := { || { CLR_BLACK, If( oBrwLook:SelectRow(), 0x88EDFB, CLR_WHITE ) } }
          :nRecSelColor     :=   nRgb( 245,244,234)
          :lIncrFilter   := .t.
          :bOnSort       := { |b,oCol| oBrwLook:Seek( "" ), ;
                                 oBrwLook:cFilterFld := oCol:cExpr, ;
                                 oBrwLook:SetFocus() }
          //

           :oSeek := oGet
          :CreateFromCode()
       END

    @ 30, 460 COMBOBOX oBrwLook:oSortCbx VAR oBrwLook:cSortOrder  SIZE 100,400 PIXEL OF  oToolbar //oDlgLook

        //DEFINE BUTTONBAR oToolBar OF oDlgLook SIZE 22,22  TOP   2015  NOBORDER
        DEFINE BUTTONBAR oToolBar OF oDlgLook 2007 SIZE 30,30

        DEFINE BUTTON OF oToolBar RESOURCE FWBitmap( "top2" )  ;
        ACTION oBrwlook:KeyDown(VK_HOME, 0) WHEN oDbf:OrdKeyCount() > 0
        DEFINE BUTTON OF oToolBar RESOURCE FwBitmap( "previous2" )  ;
        ACTION oBrwlook:KeyDown(VK_UP, 0) WHEN oDbf:OrdKeyCount() > 0
        DEFINE BUTTON OF oToolBar RESOURCE FWBitmap( "next2" ) ;
        ACTION oBrwlook:KeyDown(VK_DOWN, 0)  WHEN oDbf:OrdKeyCount() > 0
        DEFINE BUTTON OF oToolBar RESOURCE FWBitmap( "bottom2" ) ;
        ACTION oBrwlook:KeyDown(VK_END, 0)  WHEN oDbf:OrdKeyCount() > 0
        DEFINE BUTTON OF oToolBar  RESOURCE FWBitmap( "printer" );
        ACTION oBrwlook:Report()  WHEN oDbf:OrdKeyCount() > 0
        */


    ACTIVATE DIALOG oDlgLook CENTERED

      RETURN (NIL)


 

Re: Search on a Xbrowse

PostPosted: Fri Feb 25, 2022 7:34 am
by Silvio.Falconi
Marc Venken wrote:Silvio,

Your sample is working !! but there is a issue of putting the get and combo on the buttonbar. If you put them lower (see the code) than you see them

I wonder if the buttonbar can handle the get and combo. Mayby it is intented only for buttons ?



Marc,
I know my test works but my problem was just showing the get control and the combobox in the buttonbar. When the end user moves the mouse over the controls then they are shown, what can you do to get them right from the start?

Re: Search on a Xbrowse

PostPosted: Fri Feb 25, 2022 7:54 am
by Silvio.Falconi
Marc,
try this
Code: Select all  Expand view

    #include "fivewin.ch"

       REQUEST DBFCDX


 Static lToolbar

        Function Test()

         local cHelp
         local oDlgLook,oBar
         local oBrwLook,oToolBar
         local oDbf,nRec
         local aCols
         local cSeek:=Space(100)
         local oGet
         local oFont,oBold


       lToolBar :=.f.


      oDbf:=Tdatabase():Open( , "Customer", "DBFCDX", .T. )
      oDbf:SetOrder("FIRST")
      oDbf:Gotop()

          aCols  := { ;
                   { "FIRST"   ,   "Cognome"      ,,   140, },;
                   { "LAST"     ,  "Nome"        ,,   150, },;
                   { "STREET"   ,  "Indirizzo"   ,,   150, },;
                   { "CITY"     ,  "Città"       ,,   150, },;
                   { "STATE"    ,  "Stato"       ,,   150, },;
                   { "ZIP"      ,  "Cap"         ,,   150, },;
                   { "HIREDATE" ,  "Assunzione"  ,,   150, },;
                   { "MARRIED"  ,  "Sposato"     ,,   150, },;
                   { "AGE"      ,  "Età"         ,,   150, },;
                   { "SALARY"   ,  "Stipendio"   ,,   150, },;
                   { "NOTES"    ,  "Appunti"     ,,   150, }}


           DEFINE FONT oFont NAME "TAHOMA" SIZE 0,-14
           DEFINE FONT oBold NAME "TAHOMA" SIZE 0,-14 BOLD

           DEFINE DIALOG oDlgLook SIZE 880,600 ;
              PIXEL TRUEPIXEL RESIZABLE FONT oFont;
              TITLE "Test no complex for Karinha"


           @ 1, 200 GET oGet VAR cSeek SIZE 150,30 PIXEL OF  oToolBar //  oDlgLook


            IF lToolBar

     @ 110,10 XBROWSE oBrwlook SIZE -2, -5 PIXEL OF oDlgLook ;
          DATASOURCE oDbf COLUMNS  aCols ;
          AUTOSORT ;
          NOBORDER CELL LINES
  else

       @ 0,0 XBROWSE oBrwlook SIZE -2, -5 PIXEL OF oDlgLook ;
          DATASOURCE oDbf COLUMNS  aCols ;
          AUTOSORT ;
          NOBORDER CELL LINES
    Endif

          WITH OBJECT oBrwLook
                        //:aCols[ 3 ]:cSortOrder := ""
                        // :aCols[ 4 ]:cSortOrder := ""

              :bClrStd          := { || { CLR_BLACK, If( oBrwLook:SelectRow(), 0x88EDFB, CLR_WHITE ) } }
              :nRecSelColor     :=   nRgb( 245,244,234)
              :lIncrFilter   := .t.
              :bOnSort       := { |b,oCol| oBrwLook:Seek( "" ), ;
                                     oBrwLook:cFilterFld := oCol:cExpr, ;
                                     oBrwLook:SetFocus() }
              //

               :oSeek := oGet
              :CreateFromCode()
           END


       oBrwlook:bRClicked := {|nRow,nCol| MenuDisplay(nRow,nCol,@ltoolBar,oBrwlook,oDlgLook) }


        @ 1, 460 COMBOBOX oBrwLook:oSortCbx VAR oBrwLook:cSortOrder  SIZE 100,400 PIXEL OF  oToolbar //oDlgLook



            DEFINE BUTTONBAR oToolBar OF oDlgLook SIZE 22,22  TOP   2015  NOBORDER

            DEFINE BUTTON OF oToolBar RESOURCE FWBitmap( "top2" )  ;
            ACTION oBrwlook:KeyDown(VK_HOME, 0) WHEN oDbf:OrdKeyCount() > 0
            DEFINE BUTTON OF oToolBar RESOURCE FwBitmap( "previous2" )  ;
            ACTION oBrwlook:KeyDown(VK_UP, 0) WHEN oDbf:OrdKeyCount() > 0
            DEFINE BUTTON OF oToolBar RESOURCE FWBitmap( "next2" ) ;
            ACTION oBrwlook:KeyDown(VK_DOWN, 0)  WHEN oDbf:OrdKeyCount() > 0
            DEFINE BUTTON OF oToolBar RESOURCE FWBitmap( "bottom2" ) ;
            ACTION oBrwlook:KeyDown(VK_END, 0)  WHEN oDbf:OrdKeyCount() > 0
            DEFINE BUTTON OF oToolBar  RESOURCE FWBitmap( "printer" );
            ACTION oBrwlook:Report()  WHEN oDbf:OrdKeyCount() > 0

                 oToolBar:bClrGrad = { | lInvert | If( ! lInvert,;
                    { { 1, RGB( 244, 244, 245 ), RGB( 244, 244, 245 ) } },;
                    { { 1, RGB( 145, 201, 247 ), RGB( 145, 201, 247 ) } } ) }

             oDlgLook:bResized  := <||
             local oRect       := oDlgLook:GetCliRect()

           IF   lToolbar
                     oBrwlook:nTop      := oRect:nTop+24
                     oBrwlook:nLeft     := oRect:nLeft
                     oToolBar:Show()
                     oBrwLook:oSortCbx:Show()
                     oGet:Show()

                  ELSE
                     oBrwlook:nTop      := oRect:nTop
                     oBrwlook:nLeft     := oRect:nLeft
                     oToolBar:Hide()
                     oBrwLook:oSortCbx:Hide()
                     oGet:Hide()
                  ENDIF

                  oBrwLook:oSortCbx:refresh()
                  oGet:refresh()
                  oBrwlook:setfocus()
                  oBrwlook:refresh()
                  RETURN nil
                  >


                  ACTIVATE DIALOG oDlgLook CENTERED  ;
                  ON INIT EVAL( oDlgLook:bResized() )

          RETURN (NIL)

//-------------------------------------------------------------------------------//

   Function MenuDisplay(nRow,nCol,lToolbar,oBrwlook,oDlgLook)
     local oMenu
     local otoolBarCheck
     MENU oMenu  POPUP
     MENUITEM " another menuitem  "
     SEPARATOR
        MENUITEM oToolBarCheck Prompt "Show ToolBar" ;
          ACTION ( ltoolBar :=!ltoolBar,;
                      Eval( oDlgLook:bResized),;
                      oBrwLook:refresh(),;
                   oToolBarCheck:SetCheck( ltoolBar ))

         SEPARATOR
          ENDMENU
          oToolBarCheck:SetCheck( ltoolBar )
   ACTIVATE POPUP oMenu OF oDlgLook AT  oBrwLook:nTop+nRow, oBrwLook:nLeft+nCol
   RETURN (NIL)

//-------------------------------------------------------------------------------//

 



my intention was to insert a popup menu because the end user can choose to view the buttonbar or not

initially the buttonbar does not appear but if you press the mouse and the right button you can display the menu and select "Show toolbar"

even in this way the get and the combobox are not displayed, you have to move the mouse over and then you will see them

Re: Search on a Xbrowse

PostPosted: Fri Feb 25, 2022 9:37 am
by Marc Venken
I see, I have the same issue in my project....

Maybe the toolbar is not intended for this ? or we are just doing is wrong...... See if someone else has a answer

Re: Search on a Xbrowse

PostPosted: Fri Feb 25, 2022 10:48 am
by Silvio.Falconi
Marc Venken wrote:I see, I have the same issue in my project....

Maybe the toolbar is not intended for this ? or we are just doing is wrong...... See if someone else has a answer



Marc, I make a test with C5Statusbar instead of fwh Buttonbar and seem run ok
Probable Fwh buttonbar not run good