Histórico da Página
Composition Setup |
---|
import.css=/download/attachments/6062824/tecnologia.css |
...
Pagetitle | ||
---|---|---|
|
...
|
...
|
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
...
- (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údo | descrição |
---|---|
CONTROL_ALIGN_LEFT | Alinhamento do texto à esquerda. |
CONTROL_ALIGN_RIGHT | Alinhamento do texto à direita. |
0 | Texto 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.
TGrid(): getVisibleRows ( ) -->
nVisibleRows := ::oGrid:getVisibleRows()
Aviso | ||
---|---|---|
| ||
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údo | Descriçã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] ) -->
...
- TControl
- TGrid
Construtores
Inclusão de trecho | ||||||
---|---|---|---|---|---|---|
|
Propriedades
Inclusão de trecho | ||||||
---|---|---|---|---|---|---|
|
Métodos
Inclusão de trecho | ||||||
---|---|---|---|---|---|---|
|
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
Retorna o tamanho das colunas em pixels.
TGrid():GetColumnsSize() --> 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
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.
...
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.
...
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:
Valor | mnemônico | descrição |
---|---|---|
0 | GRID_MOVEUP | Move uma linha para cima. |
1 | GRID_MOVEDOWN | Move uma linha para baixo. |
2 | GRID_MOVEHOME | Move para o topo da base de dados. |
3 | GRID_MOVEEND | Move para o fim da base de dados. |
4 | GRID_MOVEPAGEUP | Move uma página de dados para cima. |
5 | GRID_MOVEPAGEDOWN | Move uma página de dados para baixo. |
10 | GRID_WHEELUP* | Movimento do mouse de rolar para cima (Mouse Wheel Up) |
11 | GRID_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âmetro | Descrição |
---|---|
o | Indica a instância do objeto TGrid(). |
nMvType | Indica o tipo de movimento, sendo sempre: 6 - movimento horizontal. |
nCurPos | Coluna 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âmetro | Descrição |
---|---|
o | Indica a instância do objeto TGrid. |
nX | Indica a posição X no plano cartesiano do componente TGrid. |
nY | Indica a posição Y no plano cartesiano do componente TGrid. |
Propriedade: bGridInfo
Parâmetro | Descrição |
---|---|
o | Indica a instância do objeto TGrid(). |
nVisRows | Indica 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âmetro | Descrição |
---|---|
nFreeze | Indica 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âmetro | Descrição |
---|---|
nInterval | Indica 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âmetro | Descrição |
---|---|
oTGrid | Instância do objeto TGrid. |
nKey | Có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âmetro | Descrição |
---|---|
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. |
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âmetro | Descrição |
---|---|
0 | Valor padrão. Exibe a barra de rolagem horizontal somente quando a largura da TGrid excede o espaço definido. |
1 | Nunca exibe a barra de rolagem horizontal. |
2 | Sempre exibe a barra de rolagem horizontal. |
...
Bloco de código | ||||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|
| title
| Exemplo
| linenumbers
| true
| ||||||||
#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 DATAoButtonPgDown oGrid DATAoButtonEnd oFrame DATAaData oButtonsFrame DATAnLenData oButtonHome DATAnRecNo oButtonPgUp DATAnCursorPos oButtonUp DATAnVisibleRows oButtonDown DATAnFreeze DATA nHScroll METHOD New(oDlg) CONSTRUCTOR oButtonPgDown DATA oButtonEndMETHOD DATAonMove( o,nMvType,nCurPos,nOffSet,nVisRows ) METHOD isBof() aData DATA nLenData DATA nRecNoMETHOD isEof() DATA nCursorPos DATA nVisibleRowsMETHOD ShowData( nFirstRec,DATAnCount nFreeze) DATA nHScrollMETHOD ClearRows()
METHOD DoUpdateNew(oDlg) CONSTRUCTOR METHODSelectRow onMove(n) o,nMvType,nCurPos,nOffSet,nVisRows ) METHOD isBof() METHOD isEof() METHODGoHome 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 RETURNExemplo da classe TGrid() |
Resultado do Exemplo
Abrangência
Classe disponível, para o TOTVS Application Server
...
e TOTVS SmartClient, a partir da build 7.00.080806P.