Page 1 of 1

Convert wBrowse to xBrowse

Posted: Tue Sep 23, 2014 10:27 am
by ORibeiro
How can I change wBrowse in xBrowse in this example?

Code: Select all

*------------------------------------------------------------------------------------*
Function AchaEmbalagem( oArquivo, oVar, oOrdem, oCampo )
*------------------------------------------------------------------------------------*
   local oLbx,oCbx,oAcha,oDlg
   Local cOrdem,mOrdem,cDbfAcha
   Local cAcha
   Local SelOld
   Local nOrdem
   Local lOk:=.F.
   Local RecN:= RecNo()
   Local cPrg := oArquivo
   Local oBt[8]

   oOrdem:=iif( oOrdem=nil, 2, oOrdem)
   oCampo:=iif( oCampo=nil,"NR_EM", oCampo)

   SelOld := Select()
   SysWait( 0.1 )
   if Compara_Valor(Len(cPrg),2,"=")
      if !Net_Use("MTEMBALA",cPrg)
         Select(SelOld)
         Return Nil
      endif
      oArquivo := ALIAS()
      cDbfAcha   := cPRG+"MTEMBALA"
   else
      cDbfAcha:=cPrg
   endif
   Select(oArquivo)
   nOrdem := ORDNUMBER()
   nRegAtu:= RecN()
   Set Order To oOrdem
   DBGOTOP()

   IF oOrdem == 1
      cOrdem := "1-Código"
   Elseif oOrdem == 2
      cOrdem := "2-Nome"
   Endif
   mOrdem := {"1-Código","2-Descrição"}

   Select(oArquivo)
   DEFINE DIALOG oDlg RESOURCE "PLANILHA" TITLE StrZero(RecCount(),6)+"  Encontra Embalagens" FONT oFontSay //TRANSPARENT

   Select(cDbfAcha)
   REDEFINE ICON ID ID_BITMAP OF oDlg RESOURCE "ACHA"
   REDEFINE SAY PROMPT "Embalagens" ID 1100 OF oDlg ;
            FONT oFontBig COLOR CLR_BLUE
   REDEFINE LISTBOX oLbx;
            FIELDS (cDbfAcha)->Nr_EM,;
                   (cDbfAcha)->Descr;
            HEADERS "Código","Descrição";
            ID 8000 OF oDlg UPDATE FONT oFontBrw;
            ON DBLCLICK (  lOk:=.T. , oDlg:end() )
            oLbx:bKeyDown := {|nKey|iif(nKey=13,( lOk:=.T., oDlg:end()),"")}

    REDEFINE GET oAcha VAR cAcha ID 111 OF oDlg UPDATE;
            ON CHANGE ( ::Assign(),;
                        If( nKey=13, (oLbx:Refresh(),oLbx:SetFocus()),;
                        If( (cDbfAcha)->(DbSeek(Upper(SubS(cAcha,1,::nPos-1))+IIF(oaVersao="16",Upper(Chr(nKey)),''))),;
                            (oLbx:UpStable(),oLbx:Refresh(),.t.),;  // accept the Key
                            (oLbx:UpStable(),oLbx:Refresh(),.f.)))) // refuse the key
   REDEFINE ButtonBmp ID 100 OF oDlg                   ;        && Pesquisa
            PROMPT "C&onfirma" BITMAP "B_OK1";
            ACTION ( lOk:=.T. , oDlg:end() )
   REDEFINE ButtonBmp ID 110 OF oDlg                   ;        && Lista
            PROMPT "&Pesquisa" BITMAP "B_PROCURA1";
            ACTION ( Pesquisa( cDbfAcha, oLbx, oDlg, 3, "Código ou Descrição", "Embalagem", .F. ), cOrdem:=mOrdem[(cDbfAcha)->(ORDNUMBER())], oCbx1:Refresh(), cAcha:=Space(50), oAcha:Refresh() )

   REDEFINE Button oBt[2] ID 120 OF oDlg
   REDEFINE Button oBt[3] ID 130 OF oDlg
   REDEFINE Button oBt[4] ID 140 OF oDlg
   REDEFINE Button oBt[6] ID 160 OF oDlg
   REDEFINE Button oBt[7] ID 170 OF oDlg

   REDEFINE ButtonBmp ID 180 OF oDlg                ;        && Fechar
            PROMPT "&Cancela" BITMAP "B_CANCEL1";
            ACTION oDlg:End() Cancel

   REDEFINE SAY PROMPT "Ordem:" ID 330 OF oDlg COLOR CLR_RED

   REDEFINE COMBOBOX oCbx1 VAR cOrdem ITEMS mOrdem ;
            ID 350 ON CHANGE Ordem( oLbx, cDbfAcha, cOrdem, oa_focus(oLbx), cAcha:=Space(50), oAcha:Refresh() ) OF oDlg

   ACTIVATE DIALOG oDlg CENTERED;
            ON INIT ( oBt[2]:Hide(),oBt[3]:Hide(),oBt[4]:Hide(),oBt[6]:Hide(),oBt[7]:Hide(),;
                      SetaBrw3d( oLbx ) )
   if Select(oArquivo)>0 // 12/08/2013: Evita erro na próxima linha
      Select(oArquivo)
      DBSetOrder( nOrdem )
   endif
   if (lOk) .AND. Select(cDbfAcha)>0
      Stor (cDbfAcha)->&oCampo To oVar
   endif
   SysWait( 0.1 )
   if Compara_Valor(Len(cPrg),2,"=")
      fecha_arquivo( oArquivo )
   endif
   Select( SelOld )
Return( oVar )
 
Resource: PLANILHA

Code: Select all

PLANILHA DIALOG 6, 18, 418, 221
STYLE DS_MODALFRAME | WS_POPUP | WS_CAPTION | WS_SYSMENU
CAPTION "Planilha"
FONT 8, "MS Sans Serif"
{
 EDITTEXT 111, 46, 203, 295, 11, ES_AUTOHSCROLL | WS_BORDER | WS_TABSTOP
 LTEXT "Titulo", 1100, 25, 1, 200, 25, NOT WS_GROUP
 CONTROL "", -1, "STATIC", SS_GRAYFRAME | WS_CHILD | WS_VISIBLE | WS_GROUP, 3, 26, 340, 172
 GROUPBOX "", 102, 346, 1, 71, 217, BS_GROUPBOX
 CONTROL "", 8000, "twbrowse", 0 | WS_CHILD | WS_VISIBLE | WS_VSCROLL | WS_HSCROLL | WS_TABSTOP, 4, 27, 335, 169
 COMBOBOX 350, 252, 5, 91, 94, CBS_DROPDOWNLIST | WS_TABSTOP
 PUSHBUTTON "Novo", 100, 349, 9, 65, 20
 PUSHBUTTON "Modifica", 110, 349, 30, 65, 20
 PUSHBUTTON "Apaga", 120, 349, 51, 65, 20
 PUSHBUTTON "Consulta", 130, 349, 72, 65, 20
 PUSHBUTTON "Pesquisa", 140, 349, 93, 65, 20
 PUSHBUTTON "Lista", 160, 349, 114, 65, 20
 PUSHBUTTON "Filtra", 170, 349, 135, 65, 20
 PUSHBUTTON "Fecha", 180, 349, 195, 65, 20
 CONTROL "", -1, "STATIC", SS_GRAYFRAME | WS_CHILD | WS_VISIBLE | WS_GROUP, 3, 200, 340, 18
 RTEXT "Ordem:", 330, 226, 7, 24, 9, SS_RIGHT | NOT WS_GROUP
 RTEXT "Pesquisa:", -1, 8, 204, 34, 8
 ICON "", 1000, 3, 3, 18, 20
}
 

Re: Convert wBrowse to xBrowse

Posted: Tue Sep 23, 2014 2:27 pm
by FranciscoA
Hi _.
Try this:

In your main.prg: "Include "XBrowse.ch"
Replace this REDEFINE LISTBOX oLbx, with REDEFINE XBROWSE oLbx
Remove all oLbx:UpStable()
Replace this CONTROL "", 8000, "twbrowse", with CONTROL "", 8000, "txbrowse" ( in your .rc)

Regards.

Re: Convert wBrowse to xBrowse

Posted: Thu Sep 25, 2014 12:49 pm
by ORibeiro
What command replaces the olbx:UpStable() ?

With this command the wBrowse allowed incremental research pointing to the record in typing time.

Code: Select all

   REDEFINE GET oAcha VAR cAcha ID 111 OF oDlg UPDATE;
            ON CHANGE ( ::Assign(), ;
                        If( nKey=13, (oLbx:Refresh(),oLbx:SetFocus()),;
                        If( (cDbfAcha)->(DbSeek(Upper(SubS(cAcha,1,::nPos-1)))),;
                            (oLbx:UpStable(),oLbx:Refresh(),.t.),;  // accept the Key
                            (oLbx:UpStable(),oLbx:Refresh(),.f.)))) // refuse the key

 

Re: Convert wBrowse to xBrowse

Posted: Thu Sep 25, 2014 2:37 pm
by tiaofw
Bom dia _.

Segue abaixo um pequeno exemplo usando xbrowse e dbf, você pode analisar e adaptar a sua necessidade:

Code: Select all

      REDEFINE XBROWSE oBrw_Formas ;
          HEADER "Forma de Pagamento", "Valor(R$)" ;
          COLSIZES 370, 184          ;
          ARRAY albx_formas ;
          when !tefcnc .and. (oBrw_Formas:SelectCol( 2 ), .t.) ;
          ID 306 FASTEDIT ;
          UPDATE                            ;
          AUTOCOLS                          ;
          ON CHANGE (Lista_Parcelas(albx_formas[oBrw_Formas:nArrayAt, 16])) ; 
          OF odlg_pag
      
      oBrw_Formas:setfont(oFont_xforma)

      oBrw_Formas:nMarqueeStyle       := MARQSTYLE_HIGHLCELL
      oBrw_Formas:nColDividerStyle    := LINESTYLE_BLACK
      oBrw_Formas:nRowDividerStyle    := LINESTYLE_BLACK
      oBrw_Formas:lColDividerComplete := .t.
      oBrw_Formas:lAllowRowSizing := .f.
      oBrw_Formas:lFooter := .t.
      oBrw_Formas:lHeader := .t.
      oBrw_Formas:lUpdate   := .t.
      oBrw_Formas:nHeaderHeight := 40

      oBrw_Formas:aCols[1]:cFooter := "SUB-TOTAL:"

      oBrw_Formas:aCols[1]:nEditType := EDIT_NONE

      oBrw_Formas:aCols[2]:nEditType := EDIT_GET
      oBrw_Formas:aCols[2]:cEditPicture := "@E 999,999.99"

      oBrw_Formas:aCols[2]:bClrFooter := {|| { RGB(255, 0, 0), GetSysColor( COLOR_BTNFACE ), ;
                                         nRGB( 125, 165, 224 ), nRGB( 203, 225, 252 ) } }

      oBrw_Formas:aCols[2]:oFooterFont := oFont_Receb

      oBrw_Formas:nFreeze := 2

      oBrw_Formas:aCols[2]:bEditWhen := { || if(albx_formas[oBrw_Formas:nArrayAt, 5], .f., .t.) }

      oBrw_Formas:aCols[2]:bEditValid := { |oGet| Valida(@oGet:VarGet(), @oBrw_Formas:nArrayAt,   ;
      albx_formas[oBrw_Formas:nArrayAt, 3] ) }

 
Tambem existem bons exemplos na pasta samples do fwh usando a xbrowse, inclusive com pesquisa incremental.

Abraços.

Re: Convert wBrowse to xBrowse

Posted: Thu Oct 09, 2014 3:12 am
by nageswaragunupudi
What command replaces the olbx:UpStable() ?
Upstable() is not requred for XBrowse, because XBrowse does this automatically when required.