Jump to content
Fivewin Brasil

EDITAR XBROWSE COM ARRAY


mkyx

Recommended Posts

Bom dia, 

tenho um tabela feito com xbrowse usando array. Eu preciso deixar editável a coluna de quantidade,

fiz conforme abaixo, mas não grava na tabela as alterações

Alguém o por quê?

 

tab_item_1:={{"","","",0,0,0,"",0,0,0,0,"",0,"","",0,0,""}}

 

   oBrw0:=TXBrowse():New( oWnd )
   oBrw0:nTop:=_l0*IF(IMP_CC="@",65,125)/768
   oBrw0:nLeft:=15
   oBrw0:nBottom:=_l0*IF(IMP_CC="@",500,555)/768
   oBrw0:nRight:=if(_c0<=1600,640,950)
   oBrw0:nMarqueeStyle := MARQSTYLE_HIGHLCELL
   oBrw0:setArray(tab_item_1)   
   oBrw0:nColDividerStyle   := 0
   oBrw0:nRowDividerStyle     := 0
   oBrw0:nHeaderLines        := 1   //--> Cabecalho em 2 Linhas.
   oBrw0:lAllowColSwapping   :=.F. // Trocar Colunas
   oBrw0:lAllowRowSizing     := .F.  //--> Nao move as Linhas
   oBrw0:nRowHeight := 25   //--> Altura das Linhas do ListBox.
   oBrw0:lHScroll := .F.
   oBrw0:lVScroll := .F.
   oBrw0:lHeader := .T.
   oBrw0:lFooter := .F.
   oBrw0:lRecordSelector := .F.
   oBrw0:l2007:=.T.
   oBrw0:bClrStd := {|| IF(TAB_ITEM_1[oBrw0:nArrayAT,1]="D",{CLR_WHITE,CLR_RED},{CLR_BLUE,CLR_WHITE}) }

   oBrw0:lFooter := .F.
   if _c0<=1600
      oBrw0:oFont := OFNT44
   else
      oBrw0:oFont := OFNT441
   endif
   oBrw0:aCols[1]:cHeader := "?"
   oBrw0:aCols[1]:nWidth := 20  
   oBrw0:aCols[1]:nHeadStrAlign := AL_CENTER
   oBrw0:aCols[1]:nDataStrAlign := AL_CENTER
   
   oBrw0:aCols[2]:cHeader := "CÓDIGO"
   oBrw0:aCols[2]:nWidth := 60
   oBrw0:aCols[2]:nHeadStrAlign := AL_LEFT
   oBrw0:aCols[2]:nDataStrAlign := AL_LEFT
   
   oBrw0:aCols[3]:cHeader := "DESCRIÇÃO"
   oBrw0:aCols[3]:nWidth := 295
   oBrw0:aCols[3]:nHeadStrAlign := AL_LEFT
   oBrw0:aCols[3]:nDataStrAlign := AL_LEFT
   

   Somente essa coluna é editável, coluna 4


   oBrw0:aCols[4]:cHeader := "QUANTID"
   oBrw0:aCols[4]:nWidth := 70  
   oBrw0:aCols[4]:nHeadStrAlign := AL_RIGHT
   oBrw0:aCols[4]:nDataStrAlign := AL_RIGHT
   oBrw0:aCols[4]:bStrData := {||IF(TAB_ITEM_1[oBrw0:nArrayAT,4]>0,IF(INT(TAB_ITEM_1[oBrw0:nArrayAT,4])=TAB_ITEM_1[oBrw0:nArrayAT,4],TRANSFORM( TAB_ITEM_1[oBrw0:nArrayAT,4] , '@E 999,999'),TRANSFORM( TAB_ITEM_1[oBrw0:nArrayAT,4] , '@E 999,999.999')),"") }
   oBrw0:aCols[4]:nEditType  := 1
   oBrw0:aCols[4]:CEDITPICTURE :="@E 999999.999"
   oBrw0:aCols[4]:bOnPostEdit   := {|o,x|FieldPut( tab_item_1[oBrw0:nArrayAT ,4 ] , x) }    // não funciona

   oBrw0:aCols[5]:cHeader := "VALOR"
   oBrw0:aCols[5]:nWidth := 70  
   oBrw0:aCols[5]:nHeadStrAlign := AL_RIGHT
   oBrw0:aCols[5]:nDataStrAlign := AL_RIGHT
   oBrw0:aCols[5]:bStrData := {|| IF(TAB_ITEM_1[oBrw0:nArrayAT,5]>0,TRANSFORM( TAB_ITEM_1[oBrw0:nArrayAT,5] , '@E 999,999.99'),"") }
   
   oBrw0:aCols[6]:cHeader := "TOTAL"
   oBrw0:aCols[6]:nWidth := 100  
   oBrw0:aCols[6]:nHeadStrAlign := AL_RIGHT
   oBrw0:aCols[6]:nDataStrAlign := AL_RIGHT
   oBrw0:aCols[6]:bStrData := {||IF(TAB_ITEM_1[oBrw0:nArrayAT,6]>0, TRANSFORM( TAB_ITEM_1[oBrw0:nArrayAT,6] , '@E 999,999.99'),"") }
 

   oBrw0:bClrSel := {|| {RGB(0,0,128),RGB(255,255,255)} } // COR SELECIONADA QUANDO SAI DE FOCO

   oBrw0:CreateFromCode()
   oBrw0:bKeydown:={|nkey|_obrw0(nkey,OBRW0:nArrayAt)}
 

 

 

Link to comment
Share on other sites

Resolvido, assim:

Coloquei um SYSWAIT(0.1) dentro do método PostEdit do xbrowse:


METHOD PostEdit( xValue, lButton ) CLASS TXBrwColumn

   local lGoNext := .f.,X

   If ::lOnPostEdit
      return nil
   Endif

   ::lOnPostEdit := .t.

   DEFAULT lButton := .f.


   do case
      case ::nEditType == EDIT_GET
           if ::oEditGet != nil
              SYSWAIT(0.1)     // <----------------só com essa pausa que funcionou. OBS: pra trabalhar com bancos de dados está normal, não precisa do syswait
              X:=Eval( ::bOnPostEdit, Self, Eval( ::oEditGet:bSetGet ), ::oEditGet:nLastKey )
              lGoNext := ( ::oEditGet:nLastKey == VK_RETURN )
              ::oEditGet:End()
              ::oEditGet := nil
           endif

 

Link to comment
Share on other sites

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.

Guest
Reply to this topic...

×   Pasted as rich text.   Paste as plain text instead

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.

Loading...
×
×
  • Create New...