Árvore de páginas

Versões comparadas

Chave

  • Esta linha foi adicionada.
  • Esta linha foi removida.
  • A formatação mudou.
Comentário: Novo layout do documento
Composition Setup
import.css=/download/attachments/6062824/tecnologia.css

...

Pagetitle
Classe TGrid

...

Classe

...

TGrid

Exibe

...

os

...

dados

...

organizados

...

em

...

uma

...

tabela.

Hierarquia

TSrvObject -> TControl -> TGrid

New

Método construtor da classe.

TGrid(): New ( < oParent>, [ nRow], [ nCol], [ nWidth], [ nHeight] ) --> oTGrid

...

oTGrid
    (objeto)
  • Retorna o objeto criado.

AddColumn

Adiciona colunas no objeto.

TGrid(): AddColumn ( < nId>, < cCaption>, < nWidth>, < nAlign>, < lHeaderFollowsDataAlign> ) -->

...

As opções disponíveis para o parâmetro nAlign são:

Conteúdodescrição
CONTROL_ALIGN_LEFTAlinhamento do texto à esquerda.
CONTROL_ALIGN_RIGHTAlinhamento do texto à direita.
0Texto centralizado.

O parâmetro lHeaderFollowsDataAlign está disponível somente em builds superiores a 7.00.120420A

clearRows

Apaga todas as linhas visíveis do objeto.

TGrid(): clearRows ( ) -->

Ao acionar esse método, o objeto é reconfigurado para o estado inicial, ou seja, sem dados e com o cursor de seleção de linha na posição 0.

ColOrder

Preenche o array do objeto com as colunas representadas no componente.

TGrid(): ColOrder ( < aArrRay> ) -->

...

ColPos

Retorna a coluna selecionada.

TGrid(): ColPos ( ) -->

getCellRect

Preenche um array com as propriedades (Top, Left, Right e Bottom) do formato da célula selecionada.

TGrid(): getCellRect ( < aRet> ) -->

...

getVisibleRows

Retorna o número de linhas visíveis no Grid.

Sintaxe

TGrid(): getVisibleRows ( ) -->

nVisibleRows := ::oGrid:getVisibleRows()
 
Aviso
titleObservação

Caso a área visível do componente não suporte 1 linha, o método retornara 0.

RemoveColumn

Remove a coluna do objeto.

TGrid(): RemoveColumn ( < nId> ) -->

...

scrollLines

Movimenta as linhas de exibição, do objeto, para cima ou para baixo.

TGrid(): scrollLines ( < nLines> ) -->

...

As opções disponíveis para o parâmetro são:

ConteúdoDescrição

> 0

Movimenta a(s) linha(s) para cima.

< 0

Movimenta a(s) linha(s) para baixo.

  • O número de linhas movimentadas, pelo parâmetro , serão apagadas no topo ou no rodapé do objeto de acordo com a movimentação. No entanto, as linhas apagadas devem ser atualizadas através do método SetRowData().
  • O bloco de código, da propriedade , não será executado se o método ScrollLines() for acionado.

SetHeaderClick

Determina o bloco de código que será executado.

TGrid(): SetHeaderClick ( < bBlock> ) -->

...

setRowColor

Determina a cor exibida em uma linha visível do browse com as propriedades (nLinha, nColorBak, nColorFore).

TGrid(): setRowColor ( < nLinha>, < nColorBack>, < nColorFore> ) -->

...

Se o método for chamado sem os parâmetros, as linhas voltarão ao estado inicial (RESET).

oGrid:setRowColor( 5, CLR_BLACK, CLR_WHITE )oGrid:setRowColor( 7, CLR_BLUE, CLR_WHITE ) oGrid:setRowColor()  // Restaura as cores iniciais.

SetRowData

Confgura os dados que serão apresentados em determinada linha do objeto.

TGrid(): SetRowData ( < nRow>, < bData> ) -->

...

O bloco de código, configurado no parâmetro , deve ter o seguinte formato:

{|oObj| 

Onde

...

nCols é o número de colunas do objeto.

setRowHeight

Configura a altura de cada linha do grid.<br />Por padrão, a altura das linhas é a mesma do cabeçalho do grid.</p>

TGrid(): setRowHeight ( [ nVal] ) -->

...

setSelectedRow

Posiciona na linha selecionada do objeto.

TGrid(): setSelectedRow ( [ nRow] ) -->

...

  • Este método seleciona a linha visual, do objeto, dentro do limite do número de linhas visuais.
  • O acionamento do método SetSelectdRow() não executa o bloco de código da propriedade.

SetSelectionMode

Indica o tipo (linha ou célula) de navegação no componente.

TGrid(): SetSelectionMode ( < nSelMode> ) -->

...

SetHeaderImage

Coloca uma imagem em um header criado previamente.

TGrid():SetHeaderImage( < nCol>, < cImage> ) -->

...

GoColumn

Posiciona o cursor em uma coluna específica.

TGrid():GoColumn( < nCol> ) -->

...

SetKeyValue

Adiciona ou remove uma tecla modificadora.

TGrid():SetKeyValue( < nKy>, < nAddOrRemove> ) -->

...

SetColumnColor

Define a cor de fundo e do texto de uma coluna.

TGrid():SetColumnColor( [ nCol], [ nClrBack], [ nClrFore] ) -->

...

Construtores

Inclusão de trecho
Classe TGrid - Construtores
Classe TGrid - Construtores
nopaneltrue

Propriedades

Inclusão de trecho
Classe TGrid - Propriedades
Classe TGrid - Propriedades
nopaneltrue

Métodos

Inclusão de trecho
Classe TGrid - Métodos
Classe TGrid - Métodos
nopaneltrue

Observações

  • Em builds superiores à 120420A foi implementado o evento de wheel (roda do mouse), permitindo movimentar os itens do componente à partir deste dispositivo.

Exemplos

...

GetColumnsSize

GetColumnsSize

Retorna o tamanho das colunas em pixels.

TGrid():GetColumnsSize() --> aRet

aRet
    (array)
  • Retorna um array com os tamanhos das colunas, sendo cada posição o tamanho da largura de uma coluna em pixels, seguindo a ordem das colunas.
oGrid:GetColumnsSize()   // Result: {50, 150, 176}
 

O método só está disponível em build superior a versão 7.00.131227A.

SetColumnSize

SetColumnSize

Define o tamanho da largura de uma coluna em pixels.

TGrid():SetColumnSize( < nCol>, < nSize> ) -->

...

O método só está disponível em build superior a versão 7.00.131227A.

Propriedade

...

Indica a coluna que será congelada à esquerda. É permitido o congelamento de mais de uma coluna em tempo de execução. Somente para builds superiores à 120420A.

...

Em builds superiores à 120420A foi implementado o evento de wheel (roda do mouse), permitindo movimentar os itens do componente à partir deste dispositivo.

Propriedade: bCursorMove

Esta classe permite a exibição de qualquer origem de dados, porém o desenvolvedor deve configurar todo o processo de dados para pintura e navegação, conforme exemplo abaixo:

O formato do bloco de código, da propriedade , é:

{|o,nMvType,nCurPos,nOffSet,nVisRows| (o,nMvType,nCurPos,nOffSet,nVisRows) }

Sendo:

...

Indica o tipo de movimento, sendo:

Valormnemônicodescrição
0GRID_MOVEUPMove uma linha para cima.
1GRID_MOVEDOWNMove uma linha para baixo.
2GRID_MOVEHOMEMove para o topo da base de dados.
3GRID_MOVEENDMove para o fim da base de dados.
4GRID_MOVEPAGEUPMove uma página de dados para cima.
5GRID_MOVEPAGEDOWNMove uma página de dados para baixo.
10GRID_WHEELUP*Movimento do mouse de rolar para cima (Mouse Wheel Up)
11GRID_WHEELDOWN*Movimento do mouse de rolar para baixo (Mouse Wheel Down)

...

OBS:* GRID_WHEELUP e GRID_WHEELDOWN Disponível em builds iguais ou superiores a 7.00.131227A - 13.2.3.27. Em versões anteriores, o Wheel do mouse é tratado como GRID_MOVEUP e GRID_MOVEDOWN.

Propriedade: bColumnChanged

O bloco código da propriedade, na classe TGrid(), é executado sempre que ocorrer uma mudança de coluna.

O formato do bloco de código, da propriedade , é:

{|o,nMvType,nCurPos| (o,nMvType,nCurPos) }

Sendo:

ParâmetroDescrição
oIndica a instância do objeto TGrid().
nMvType

Indica o tipo de movimento, sendo sempre: 6 - movimento horizontal.

nCurPosColuna atual selecionada (base zero).

Propriedade: bRowLeftClick

O bloco de código da propriedade, na classe TGrid, é executado quando é recebido um clique do mouse com o botão esquerdo no componente.

O formato do bloco de código, da propriedade, é:

{ | o, nX, nY | ( o, nX, nY ) }

Sendo:

ParâmetroDescrição
oIndica a instância do objeto TGrid.
nX

Indica a posição X no plano cartesiano do componente TGrid.

nYIndica a posição Y no plano cartesiano do componente TGrid.

Propriedade: bGridInfo

ParâmetroDescrição
oIndica a instância do objeto TGrid().
nVisRowsIndica o número de linhas visíveis na grade.

Propriedade: nFreeze

Esta propriedade permite o congelamento de mais de uma coluna em tempo de execução. Somente para builds superiores à 120420A.

ParâmetroDescrição
nFreezeIndica o número de colunas congeladas a esquerda.

Propriedade: nInterval

Esta propriedade indica o intervalo entre registros para a pintura do fundo de cor diferente, ao invés do padrão de linhas alternadas com cores de fundo diferentes, é possível definir que serão alternadas de quatro em quatro registros por exemplo. Somente para builds superiores à 121227P.

ParâmetroDescrição
nIntervalIndica o intervalo de registros para alternar a pintura da cor de fundo.

Propriedade: bKeyBlock

Bloco de código a ser executado quando alguma tecla é pressionada. Os parâmetros recebidos pelo bloco são o objeto TGrid e o número ASCII da tecla pressionada.

ParâmetroDescrição
oTGridInstância do objeto TGrid.
nKeyCódigo ASCII da tecla pressionada.

Propriedade: lShowGrid

Define se mostrará ou não o grid (desenhar as linhas e colunas que separam as células entre si), o padrão é .T. para mostrar o grid..

ParâmetroDescrição
lShowGridDefine se mostrará ou não o grid (desenhar as linhas e colunas que separam as células entre si), o padrão é .T. para mostrar o grid.

Propriedade: nHScrollBar

Disponível somente para builds superiores a 131227A. Indica o estado da barra de rolagem horizontal. Esta propriedade pode assumir três valores de estado conforme tabela a seguir:

ParâmetroDescrição
0Valor padrão. Exibe a barra de rolagem horizontal somente quando a largura da TGrid excede o espaço definido.
1Nunca exibe a barra de rolagem horizontal.
2Sempre exibe a barra de rolagem horizontal.

...

titleExemplolinenumberstrue
Bloco de código
languagecpp
themeEclipse
linenumbers
true
collapse
false
#include "totvs.ch"
//------------------------------------------------------------------
//Exemplo de configuração de TGrid em array com navegação por linha
//------------------------------------------------------------------
#define GRID_MOVEUP       0
#define GRID_MOVEDOWN     1
#define GRID_MOVEHOME     2
#define GRID_MOVEEND      3
#define GRID_MOVEPAGEUP   4
#define GRID_MOVEPAGEDOWN 5

//------------------------------------------------------------------
//Valores para a propriedade nHScroll que define o comportamento da
//barra de rolagem horizontal
//------------------------------------------------------------------
#define GRID_HSCROLL_ASNEEDED
   0

#define GRID_HSCROLL_ALWAYSOFF
  1
#define GRID_HSCROLL_ALWAYSON
   2
            
// MyGrid ( Classe para encapsular acesso ao componente TGrid 
) //------------
)
//--------------------------------------------------------------
---- CLASS MyGrid DATA oGrid DATA oFrame DATA oButtonsFrame DATA oButtonHome DATA oButtonPgUp DATA oButtonUp DATA oButtonDown
----------------
CLASS MyGrid
    DATA 
oButtonPgDown
oGrid
    DATA 
oButtonEnd
oFrame
    DATA 
aData
oButtonsFrame
    DATA 
nLenData
oButtonHome
    DATA 
nRecNo
oButtonPgUp
    DATA 
nCursorPos
oButtonUp
    DATA 
nVisibleRows
oButtonDown
    DATA
nFreeze DATA nHScroll METHOD New(oDlg) CONSTRUCTOR
 oButtonPgDown
    DATA oButtonEnd
    
METHOD
DATA 
onMove( o,nMvType,nCurPos,nOffSet,nVisRows ) METHOD isBof()
aData
    DATA nLenData
    DATA nRecNo
    
METHOD isEof()
DATA nCursorPos
   
 DATA nVisibleRows
  
METHOD
 
ShowData(
 
nFirstRec,
DATA 
nCount
nFreeze
 
)
   DATA nHScroll
    
METHOD
 
ClearRows()
  
    METHOD 
DoUpdate
New(oDlg) 
CONSTRUCTOR
    METHOD 
SelectRow
onMove(
n)
 o,nMvType,nCurPos,nOffSet,nVisRows )
    METHOD isBof()
    METHOD isEof()
    METHOD 
GoHome
ShowData(
)
 nFirstRec, nCount )
    METHOD ClearRows()
    METHOD DoUpdate()
    METHOD SelectRow(n)
    METHOD 
GoHome()
    METHOD GoEnd()

    METHOD GoPgUp()

    METHOD GoPgDown()

    METHOD GoUp(nOffSet)

    METHOD GoDown(nOffSet)

    METHOD SetCSS(cCSS)
    METHOD SetFreeze(nFreeze)
    METHOD SetHScrollState(nHScroll)
ENDCLASS
METHOD New(oDlg, aData) CLASS MyGrid

    Local oFont
           
    ::oFrame:= tPanel():New(0,0,,oDlg,,,,,,200,200 )

    ::nRecNo:= 1

    ::nCursorPos:
= 0
= 0
    ::nVisibleRows:= 14

    // Forçado para 1o ::GoEnd()

    ::aData:= aData

    ::nLenData:= Len(aData)

    ::oGrid:= tGrid():New( ::oFrame )

    ::oGrid:Align:= CONTROL_ALIGN_ALLCLIENT
       
    //oFont := TFont():New('Tahoma',,-32,.T.)
    //::oGrid:SetFont(oFont)

    //::oGrid:setRowHeight(50)

       

    
::oButtonsFrame:= tPanel():New(0,0,, ::oFrame,,,,,, 10,200,.F.,.T. )

    ::oButtonsFrame:Align:= CONTROL_ALIGN_RIGHT

    ::oButtonHome:= tBtnBmp():NewBar( "VCTOP.BMP",,,,, {||::GoHome()},,::oButtonsFrame )

    ::oButtonHome:Align:= CONTROL_ALIGN_TOP

    ::oButtonPgUp:= tBtnBmp():NewBar( "VCPGUP.BMP",,,,, {||::GoPgUp()},,::oButtonsFrame )

    ::oButtonPgUp:Align:= CONTROL_ALIGN_TOP

    ::oButtonUp:= tBtnBmp():NewBar( "VCUP.BMP",,,,,{||::GoUp(1)},,::oButtonsFrame )
    ::oButtonUp:Align:= CONTROL_ALIGN_TOP

    ::oButtonEnd:= tBtnBmp():NewBar( "VCBOTTOM.BMP",,,,, {||::GoEnd()},,::oButtonsFrame )
    ::oButtonEnd:Align:= CONTROL_ALIGN_BOTTOM
    ::oButtonPgDown:= tBtnBmp():NewBar( "VCPGDOWN.BMP",,,,, {||::GoPgDown()},,::oButtonsFrame )
    ::oButtonPgDown:Align:= CONTROL_ALIGN_BOTTOM
    ::oButtonDown:= tBtnBmp():NewBar( "VCDOWN.BMP",,,,, {||::GoDown(1)},,::oButtonsFrame )
    ::oButtonDown:Align:= CONTROL_ALIGN_BOTTOM

    ::oGrid:addColumn( 1, "Código", 50, CONTROL_ALIGN_LEFT )
    ::oGrid:addColumn( 2, "Descrição", 150, 0 )
    ::oGrid:addColumn( 3, "Valor", 50, CONTROL_ALIGN_RIGHT )

    ::oGrid:bCursorMove:= {|o,nMvType,nCurPos,nOffSet,nVisRows| ::onMove(o,nMvType,nCurPos,nOffSet,nVisRows) }

    ::ShowData(1)

    ::SelectRow( ::nCursorPos )

    // configura acionamento
do duplo clique
 do duplo clique
    ::oGrid:bLDblClick:= {|| MsgStop("oi") }

RETURN
METHOD isBof() CLASS MyGrid
RETURN  ( ::nRecno==1 )
METHOD isEof() CLASS MyGrid
RETURN ( ::nRecno==::nLenData )
METHOD GoHome() CLASS MyGrid
    if ::isBof()
        return
    endif
    ::nRecno = 1
    ::oGrid:ClearRows()
    ::ShowData( 1, ::nVisibleRows
) ::nCursorPos:= 0 ::SelectRow( ::nCursorPos ) RETURN METHOD GoEnd() CLASS MyGrid if
 
::isEof(
)

return endif
    ::nCursorPos:= 0
    ::SelectRow( ::nCursorPos )
RETURN
METHOD GoEnd() CLASS MyGrid
    if ::isEof()
        return
    endif
       
    ::nRecno:= ::nLenData
    ::oGrid:ClearRows()
    ::ShowData( ::nRecno - ::nVisibleRows + 1, ::nVisibleRows )

    ::nCursorPos:= ::nVisibleRows-1
    ::SelectRow( ::nCursorPos )
RETURN
METHOD
GoPgUp() CLASS MyGrid if ::isBof() return endif
 GoPgUp() CLASS MyGrid
    if ::isBof()
        return
    endif
       
    // força antes ir para a 1a linha da grid

    if ::nCursorPos != 0

        ::nRecno -= ::nCursorPos
        if ::nRecno <= 0

            ::nRecno:=1
        endif
        ::nCursorPos:= 0
        ::oGrid:setRowData( ::nCursorPos, {|o| { ::aData[::nRecno,1], ::aData[::nRecno,2], ::aData[::nRecno,3] } } )

    else
        ::nRecno -= ::nVisibleRows
        if ::nRecno <= 0

            ::nRecno:=1
        endif
        ::oGrid:ClearRows()
        ::ShowData( ::nRecno, ::nVisibleRows )
        ::nCursorPos:= 0
    endif
    ::SelectRow( ::nCursorPos )
RETURN

METHOD GoPgDown() CLASS MyGrid
    Local nLastVisRow
       
    if ::isEof()
        return
    endif

       

    
// força antes ir para a última linha da grid
    nLastVisRow:= ::nVisibleRows-1
 
      
    if ::nCursorPos!=nLastVisRow
 
      
        if ::nRecno+nLastVisRow > ::nLenData
            nLastVisRow:= ( ::nRecno+nLastVisRow ) - ::nLenData
            ::nRecno:= ::nLenData
        else
            ::nRecNo += nLastVisRow
        endif
           
        ::nCursorPos:= nLastVisRow
        ::ShowData( ::nRecNo - ::nVisibleRows + 1, ::nVisibleRows )

    else
        ::oGrid:ClearRows()
        ::nRecno += ::nVisibleRows
           
        if ::nRecno > ::nLenData
            ::nVisibleRows = ::nRecno-::nLenData
            ::nRecno:= ::nLenData
        endif
 
          
        ::ShowData( ::nRecNo - ::nVisibleRows + 1, ::nVisibleRows )
        ::nCursorPos:= ::nVisibleRows-1
    endif
   
    

    ::SelectRow( ::nCursorPos )
RETURN
       
METHOD GoUp(nOffSet) CLASS MyGrid
    Local lAdjustCursor:= .F.
    if ::isBof()
        RETURN
    endif
    if ::nCursorPos==0
        ::oGrid:scrollLine(-1)
        lAdjustCursor:= .T.
    else

        ::nCursorPos -= nOffSet
    endif
    ::nRecno -= nOffSet
    
   

    // atualiza linha corrente

    ::oGrid:setRowData( ::nCursorPos, {|o| { ::aData[::nRecno,1], ::aData[::nRecno,2], ::aData[::nRecno,3] } } )
 
      
    if lAdjustCursor

        ::nCursorPos:= 0
    endif
    ::SelectRow( ::nCursorPos )
RETURN
METHOD GoDown(nOffSet) CLASS MyGrid
    Local lAdjustCursor:= .F.

    if ::isEof()
        RETURN
    endif
      
 

    if ::nCursorPos==::nVisibleRows-1
        ::oGrid:scrollLine(1)
        lAdjustCursor:= .T.
    else
        ::nCursorPos += nOffSet
    endif

    ::nRecno += nOffSet
       
    // atualiza linha corrente

    ::oGrid:setRowData( ::nCursorPos, {|o| { ::aData[::nRecno,1], ::aData[::nRecno,2], ::aData[::nRecno,3] } } )

    if lAdjustCursor

        ::nCursorPos:= ::nVisibleRows-1
    endif
    ::SelectRow(
::nCursorPos )
 ::nCursorPos )
RETURN
METHOD onMove( oGrid,nMvType,nCurPos,nOffSet,nVisRows ) CLASS MyGrid

    ::nCursorPos:= nCurPos
    ::nVisibleRows:= nVisRows
       
    if nMvType == GRID_MOVEUP

        ::GoUp(nOffSet)
    elseif nMvType == GRID_MOVEDOWN

        ::GoDown(nOffSet)
    elseif nMvType == GRID_MOVEHOME

        ::GoHome()
    elseif nMvType == GRID_MOVEEND
        ::GoEnd()

    elseif nMvType == GRID_MOVEPAGEUP
        ::GoPgUp()
    elseif nMvType == GRID_MOVEPAGEDOWN

        ::GoPgDown()
    endif
RETURN

METHOD ShowData( nFirstRec, nCount ) CLASS MyGrid
    local i, nRec, ci
    DEFAULT nCount:=30
       
    for i=0 to nCount-1

        nRec:= nFirstRec+i
        if nRec > ::nLenData
            RETURN
        endif
        ci:=
Str( nRec )
 Str( nRec )
        cb:= "{|o| { Self:aData["+ci+",1], Self:aData["+ci+",2], Self:aData["+ci+",3] } }"
        ::oGrid:setRowData( i, &cb )
    next i
RETURN
METHOD ClearRows() CLASS MyGrid
    ::oGrid:ClearRows()
    ::nRecNo:=1
RETURN
METHOD DoUpdate() CLASS MyGrid

    ::nRecNo:=1
    ::Showdata(1)
    ::SelectRow(0)
RETURN
METHOD SelectRow(n) CLASS MyGrid
    valor := n - ::nCursorPos
    ::nRecno += valor
    if ::nRecno <= 0
      ::nRecno = 1
    endif
    ::nCursorPos:=n
    ::oGrid:setSelectedRow(n)
RETURN

METHOD SetCSS(cCSS) CLASS MyGrid
    ::oGrid:setCSS(cCSS)
RETURN
   

METHOD SetFreeze(nFreeze) CLASS MyGrid
    ::nFreeze := nFreeze
    ::oGrid:nFreeze := nFreeze
RETURN
METHOD SetHScrollState(nHScroll) CLASS MyGrid
    ::nHScroll := nHScroll
    ::oGrid:nHScroll := nHScroll
RETURN
   
// U_TSTGRID ( Executa Grid )
//
-
--------------------------------------------------------------
--- USER FUNCTION EXEMPLO()
----
USER FUNCTION EXEMPLO()
    Local oDlg, aData:={}, i, oGridLocal, oEdit, nEdit:= 0
    Local oBtnAdd, oBtnClr, oBtnLoa
       
    // configura pintura da TGridLocal

    cCSS:= "QTableView{ alternate-background-color: red; background: yellow; selection-background-color: #669966 }"
       
    // configura pintura do Header da TGrid
    cCSS+= "QHeaderView::section { background-color: qlineargradient(x1:0, y1:0, x2:0, y2:1, stop:0 #616161, stop: 0.5 #505050, stop: 0.6 #434343,  stop:1 #656565); color: white; padding-left: 4px;
border: 1px solid #6c6c6c; }" // Dados for i:=1 to 10000
 border: 1px solid #6c6c6c; }"
       
    // Dados
    for i:=1 to 
10000
        cCodProd:= StrZero(i,6)

        if i<3

            // inserindo imagem nas 2 primeiras linhas
            cProd:= "RPO_IMAGE=OK.BMP"
        else
            cProd:= 'Produto '+cCodProd
        endif
           
        cVal = Transform( 10.50, "@E 99999999.99" )
        AADD( aData, { cCodProd, cProd
, cVal } ) next DEFINE DIALOG oDlg FROM 0
,
0 TO 500,500 PIXEL
 cVal } )
    next
       
    DEFINE DIALOG oDlg FROM 0,0 TO 500,500 PIXEL
       
    oGrid:= MyGrid():New(oDlg,aData)
    oGrid:SetFreeze(2)
    oGrid:SetCSS(cCSS)
    //oGrid:SetHScrollState(GRID_HSCROLL_ALWAYSON) // Somente build superior a 131227A
       
    // Aplica configuração de pintura via CSSoGrid:SetCSS(cCSS)

    @ 210, 10 GET oEdit VAR nEdit OF oDlg PIXEL PICTURE "99999"
    @ 210, 70 BUTTON oBtnAdd PROMPT "Go" OF oDlg PIXEL ACTION oGrid:SelectRow(nEdit)
    @ 210, 100 BUTTON oBtnClr PROMPT "Clear" OF oDlg PIXEL ACTION oGrid:ClearRows()
    @ 210, 150 BUTTON oBtnLoa PROMPT "Update" OF oDlg PIXEL ACTION oGrid:DoUpdate()
    ACTIVATE DIALOG oDlg CENTERED
       
RETURN
Exemplo da classe TGrid()
Image Removed

Resultado do Exemplo

Image Added

Abrangência

Classe disponível, para o TOTVS Application Server

...

e TOTVS SmartClient, a partir da build 7.00.080806P.