Página 1 de 1

Ativar/Desativar edição de celula no BROWSE HWGUI

Enviado: 02 Abr 2025 18:46
por Fernando queiroz

Código: Selecionar todos

        @ 2,240 BROWSE oBrowse1 ARRAY SIZE 1021,278 STYLE WS_BORDER + WS_VSCROLL;
                ON UPDATE {|| ::editaItens( oDlg )}  

                oBrowse1:nHeadRows := 2
                oBrowse1:oStyleHead := BrowseStyleHead 
                oBrowse1:headColor := 16777215
                oBrowse1:oFont := HFont():Add( '',0,-15,700,,,)
                oBrowse1:aArray :={}
                oBrowse1:freeze := 7
                
                oBrowse1:AddColumn( HColumn():New('ITEM', hwg_ColumnArBlock() ,'C',6, 0 ,.F.,1,2,,,,,,,,,,))
                oBrowse1:AddColumn( HColumn():New('ID', hwg_ColumnArBlock() ,'N',11, 0 ,.F.,1,2,,,,,,,,,,))
                oBrowse1:AddColumn( HColumn():New('DESCRICAO', hwg_ColumnArBlock() ,'C',62, 0 ,.F.,0,,,,,,,,,,,))	
                oBrowse1:AddColumn( HColumn():New('UNID', hwg_ColumnArBlock() ,'C',9, 0 ,.F.,0,,,,,,,,,,,))	
                oBrowse1:AddColumn( HColumn():New('QUANT', hwg_ColumnArBlock() ,'N',12, 4 ,.F.,2,2,'@E 999999.9999',,,,,,,,,))	
                oBrowse1:AddColumn( HColumn():New('VLR.UNITARIO', hwg_ColumnArBlock() ,'N',17,10 ,.F.,2,2,'@E 9999.9999999999',,,,,,,,,))	  
                oBrowse1:AddColumn( HColumn():New('TOTAL ITEM', hwg_ColumnArBlock() ,'N',17, 2 ,.F.,2,2,'@E 99999,999,999.99',,,,,,,,,))
                oBrowse1:AddColumn( HColumn():New('DESCRICAO;BK', hwg_ColumnArBlock() ,'C',55, 0 ,.F.,0,,,,,,,,,,,))	
                oBrowse1:AddColumn( HColumn():New('UNID;BK', hwg_ColumnArBlock() ,'C',9, 0 ,.F.,0,,,,,,,,,,,))	 
                oBrowse1:AddColumn( HColumn():New('ID;BK', hwg_ColumnArBlock() ,'N',9, 0 ,.F.,1,2,,,,,,,,,,))     
                oBrowse1:AddColumn( HColumn():New('ID;ITENS', hwg_ColumnArBlock() ,'N',9, 0 ,.F.,1,2,,,,,,,,,,))            
                FOR EACH oColuna IN oBrowse1:aColumns
                    oColuna:bColorBlock := {|| BrowseBarColorPrimary }
                    IF oColuna:heading == "QUANT"
                        oColuna:lEditable := .T.  // importante: ativa edição se o bWhen permitir
                        oColuna:bWhen := { || oBrowse1:aArray[ oBrowse1:rowPos ][5]  > 1 }
                    ELSE
                        oColuna:lEditable := .F.
                    ENDIF
                NEXT
IF oColuna:heading == "QUANT"
oColuna:lEditable := .T. // importante: ativa edição se o bWhen permitir
oColuna:bWhen := { || oBrowse1:aArray[ oBrowse1:rowPos ][5] > 1 }
ELSE
oColuna:lEditable := .F.
ENDIF

com esse recurso eu edito ou nao cada linha de acordo com a condição, muito legal resolveu um problemas que eu so queria ativar a edição da celula se fosse maior que 1

Ativar/Desativar edição de celula no BROWSE HWGUI

Enviado: 02 Abr 2025 21:01
por JoséQuintas
Muito bom.

Só comentário:
Não sei se colocou pra lembrar que tem mais opções, mas as vírgulas do final não precisa.
É assumido Nil, colocando ou não.


Veja se acha interessante:

Código: Selecionar todos

aList := { ;
   { 'ITEM'         ,, 'C', 6,  0 ,.F., 1, 2 }, ;
   { 'ID'           ,, 'N', 11, 0 ,.F., 1, 2 }, ;
   { 'DESCRICAO'    ,, 'C', 62, 0 ,.F., 0 }, ;
   { 'UNID'         ,, 'C', 9,  0 ,.F., 0 }, ;
   { 'QUANT'        ,, 'N', 12, 4 ,.F., 2, 2, '@E 999999.9999' }, ;
   { 'VLR.UNITARIO' ,, 'N', 17,10 ,.F., 2, 2, '@E 9999.9999999999' }, ;
   { 'TOTAL ITEM'   ,, 'N', 17, 2 ,.F., 2, 2, '@E 99999,999,999.99' }, ;
   { 'DESCRICAO;BK' ,, 'C', 55, 0 ,.F., 0 }, ;
   { 'UNID;BK'      ,, 'C', 9,  0 ,.F., 0 }, ;
   { 'ID;BK'        ,, 'N', 9,  0 ,.F., 1, 2 }, ;
   { 'ID;ITENS'     ,, 'N', 9,  0 ,.F., 1, 2 } }

FOR EACH aItem IN aList
   aItem[ 3 ] := hwg_ColumArBlock()
   oCol := HColumn():New( hb_ArrayAsParam( aItem ) )
   oCol:bColorBlock := {|| BrowseBarColorPrimary }
   IF oCol:heading == "QUANT"
      oCol:lEditable := .T.  // importante: ativa edição se o bWhen permitir
      oCol:bWhen := { || oBrowse1:aArray[ oBrowse1:rowPos ][ 5 ] > 1 }
   ELSE
      oCol:lEditable := .F.
   ENDIF
   oBrowse1:AddColumn( oCol )
NEXT