Histórico da Página
Composition Setup |
---|
import.css=/download/attachments/327912/newLayout.css |
...
Pagetitle |
---|
...
|
|
...
|
Exibe
...
os
...
dados
...
organizados
...
em
...
uma
...
tabela.
Hierarquia
- 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
Bloco de código | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
| ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
#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
DATA oButtonPgDown
DATA oButtonEnd
DATA aData
DATA nLenData
DATA nRecNo
DATA nCursorPos
DATA nVisibleRows
DATA nFreeze
DATA nHScroll
METHOD New(oDlg) CONSTRUCTOR
METHOD onMove( o,nMvType,nCurPos,nOffSet,nVisRows )
METHOD isBof()
METHOD isEof()
METHOD 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
::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
::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
::nRecno:= ::nLenData
::oGrid:ClearRows()
::ShowData( ::nRecno - ::nVisibleRows + 1, ::nVisibleRows )
::nCursorPos:= ::nVisibleRows-1
::SelectRow( ::nCursorPos )
RETURN
METHOD 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
TSrvObject -> TControl -> TGrid NewMétodo construtor da classe.TGrid(): New ( < oParent>, [ nRow], [ nCol], [ nWidth], [ nHeight] ) --> oTGrid
oTGrid
AddColumnAdiciona colunas no objeto.TGrid(): AddColumn ( < nId>, < cCaption>, < nWidth>, < nAlign> ) -->
As opções disponíveis para o parâmetro são:
clearRowsApaga 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. ColOrderPreenche o array do objeto com as colunas representadas no componente.TGrid(): ColOrder ( < aArrRay> ) -->
ColPosRetorna a coluna selecionada.TGrid(): ColPos ( ) --> getCellRectPreenche um array com as propriedades (Top, Left, Right e Bottom) do formato da célula selecionada.TGrid(): getCellRect ( < aRet> ) -->
getVisibleRowsRetorna o número de linhas visíveis no Grid.TGrid(): getVisibleRows ( ) --> nVisibleRows := ::oGrid:getVisibleRows() RemoveColumnRemove a coluna do objeto.TGrid(): RemoveColumn ( < nId> ) -->
scrollLinesMovimenta 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:
SetHeaderClickDetermina o bloco de código que será executado.TGrid(): SetHeaderClick ( < bBlock> ) -->
setRowColorDetermina 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. SetRowDataConfgura 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 oObj é instância do objeto e cuja execução deve retornar um Array () de valores caracteres.nCols é o número de colunas do objeto. setRowHeightConfigura 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] ) -->
setSelectedRowPosiciona na linha selecionada do objeto.TGrid(): setSelectedRow ( [ nRow] ) -->
SetSelectionModeIndica o tipo (linha ou célula) de navegação no componente.TGrid(): SetSelectionMode ( < nSelMode> ) -->
Em builds superiores à 120420A foi implementado o evento de wheel (roda do mouse), permitindo movimentar os itens do componente à partir deste dispositivo. Propriedade: bCursorMoveEsta 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:
Propriedade: blDblClickO bloco de código da propriedade , na classe TGrid(), é executado para ativar uma linha ou célula quando clicar duas vezes, com o botão esquerdo do mouse, sobre o objeto ou pressionar a tecla [ENTER].
Propriedade: bGridInfo
#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 // MyGrid ( Classe para encapsular acesso ao componente TGrid )//------------------------------------------------------------------------------ CLASS MyGrid DATA oGrid DATA oFrame DATA oButtonsFrame DATA oButtonHome DATA oButtonPgUp DATA oButtonUp DATA oButtonDown DATA oButtonPgDown DATA oButtonEnd DATA aData DATA nLenData DATA nRecNo DATA nCursorPos DATA nVisibleRows METHOD New(oDlg) CONSTRUCTOR METHOD onMove( o,nMvType,nCurPos,nOffSet,nVisRows ) METHOD isBof() METHOD isEof() METHOD 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)END CLASSMETHOD New(oDlg, aData) CLASS MyGrid ::oFrame:= tPanel():New(0,0,,oDlg,,,,,,200,200 ) ::nRecNo:= 1 ::nCursorPos:= 0 ::nVisibleRows:= 14 // Forçado para 1o ::GoEnd() ::aData:= aData ::nLenData:= Len(aData) ::oGrid:= tGrid():New( ::oFrame ) ::oGrid:Align:= CONTROL_ALIGN_ALLCLIENT ::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 ::oGrid:bLDblClick:= {|| MsgStop("oi") } RETURNMETHOD isBof() CLASS MyGridRETURN ( ::nRecno==1 )METHOD isEof() CLASS MyGridRETURN ( ::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 ::nRecno:=1 endif::nRecno:= ::nLenData ::oGrid:ClearRows() ::ShowData( ::nRecno- , ::nVisibleRows )+ 1, ::nVisibleRows ) ::nCursorPos:= 0 endif ::nVisibleRows-1 :: SelectRow( ::nCursorPos ) RETURNMETHOD GoPgUpRETURN METHOD GoPgDown() CLASS MyGridif ::isBof() return endif Local nLastVisRow if ::isEof() return endif // força antes ir para a 1aúltima linha da gridif ::nCursorPos != 0 nLastVisRow:= ::nVisibleRows-1::nRecno -= ::nCursorPos if ::nRecno<=0 ::nRecno:=1 endif if ::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 MyGridLocal nLastVisRowif ::isEof() returnendif nLastVisRow if ::nRecno+nLastVisRow > ::nLenData nLastVisRow:= ( ::nRecno+nLastVisRow ) - ::nLenData ::nRecno:= ::nLenData else ::nRecNo += nLastVisRow endif// força antes ir paraa última linha da grid nLastVisRow:= ::nVisibleRows-1 if ::nCursorPos !:= nLastVisRowif ::nRecno+nLastVisRow > ::nLenData nLastVisRow:= ShowData( ::nRecno+nLastVisRow ) nRecNo - ::nLenData ::nRecno:= ::nLenData else ::nRecNo += nLastVisRow endif ::nCursorPos:= nLastVisRow nVisibleRows + 1, ::nVisibleRows ) else ::oGrid:setRowData( ::nCursorPos, {|o| { ::aData[::nRecno,1], ::aData[::nRecno,2], ::aData[::nRecno,3] } } )else ::oGrid:ClearRows() ::nRecno += ::nVisibleRows if ::nRecno > ::nLenData ::nVisibleRows = ::nRecno-::nLenData ::nRecno:= ::nLenData endif ClearRows() ::nRecno += ::nVisibleRows if ::nRecno > ::nLenData ::nVisibleRows = ::nRecno-::nLenData ::nRecno:= ::nLenData endif ::ShowData( ::nRecNo - ::nVisibleRows + 1, ::nVisibleRows ) ::nCursorPos:= ::nVisibleRows-1endif 1 endif ::SelectRow( ::nCursorPos ) RETURN METHOD) RETURNMETHOD GoUp(nOffSet) CLASS MyGridLocal GoUp(nOffSet) CLASS MyGrid Local lAdjustCursor:= .F. if ::isBof()RETURNendif RETURN endif if ::nCursorPos==0 ::oGrid:scrollLine(-1) lAdjustCursor:= .T.else else ::nCursorPos -= nOffSet endif endif ::nRecno -= nOffSet::nRecno -= nOffSet// atualiza linha corrente ::oGrid:setRowData( ::nCursorPos, {|o| { ::aData[::nRecno,1], ::aData[::nRecno,2], ::aData[::nRecno,3] } } ) if lAdjustCursor::nCursorPos:= 0endif ::nCursorPos:= 0 endif ::SelectRow( ::nCursorPos )RETURNMETHOD RETURN METHOD GoDown(nOffSet) CLASS MyGrid Local lAdjustCursor:= .F. := .F. if ::isEof() RETURN endifif ::isEof() RETURNendifif ::nCursorPos==::nVisibleRows-1 ::oGrid:scrollLine(1) lAdjustCursor:= .T.else else ::nCursorPos += nOffSetendif endif ::nRecno += nOffSet::nRecno += nOffSet// atualiza linha corrente ::oGrid:setRowData( ::nCursorPos, {|o| { ::aData[::nRecno,1], ::aData[::nRecno,2], ::aData[::nRecno,3] } } ) if lAdjustCursor ::nCursorPos:= ::nVisibleRows-1endif 1 endif ::SelectRow( ::nCursorPos ) RETURNMETHOD RETURN METHOD onMove( oGrid,nMvType,nCurPos,nOffSet,nVisRows ) CLASSMyGrid MyGrid ::nCursorPos:= nCurPos ::nVisibleRows:= nVisRows::nCursorPos:= nCurPos::nVisibleRows:= nVisRowsifif nMvType == GRID_MOVEUP ::GoUp(nOffSet) elseif nMvType == GRID_MOVEDOWN ::GoDown(nOffSet) elseif nMvType == GRID_MOVEHOME ::GoHome() elseifnMvType == GRID_MOVEEND nMvType == GRID_MOVEEND ::GoEnd() elseif nMvType == GRID_MOVEPAGEUP ::GoPgUp() elseif nMvType == GRID_MOVEPAGEDOWN ::GoPgDown()endifRETURN endif RETURN METHOD ShowData( nFirstRec, nCount ) CLASS MyGridMETHOD localShowData( i,nFirstRec nRec, ci DEFAULT nCount) CLASS MyGridlocal i, nRec, ciDEFAULT nCount:=30for :=30 for i=0 to nCount-1 nRec:= nFirstRec+i if nRec > ::nLenDataRETURN endif RETURN endif ci:= Str( nRec) ) cb:= "{|o| { Self:aData["+ci+",1], Self:aData["+ci+",2], Self:aData["+ci+",3] } }" ::oGrid:setRowData( i, &cb )next i RETURNMETHODnext i RETURN METHOD ClearRows() CLASS MyGrid ::oGrid:ClearRows() ::nRecNo:=1RETURN 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 = 1METHOD DoUpdate()endifCLASS MyGrid :: nRecNonCursorPos:=1 n ::Showdata(1) ::SelectRow(0)RETURNMETHOD SelectRow(n oGrid:setSelectedRow(n) RETURN METHOD SetCSS(cCSS) CLASS MyGrid ::oGrid:setSelectedRow setCSS(n cCSS) RETURN METHOD SetFreeze(nFreeze) CLASS MyGrid ::nFreeze := nFreeze ::oGrid:nFreeze := nFreeze RETURN METHODSetCSS SetHScrollState(cCSS nHScroll) CLASS MyGrid ::oGrid:setCSS(cCSS)RETURN nHScroll := nHScroll ::oGrid:nHScroll := nHScroll RETURN // U_TSTGRID ( Executa Grid ) //------------------------------------------------------------------ -- USER FUNCTION EXEMPLO() Local oDlg, aData:={}, i, oGridLocal, oEdit, nEdit:= 0 Local oBtnAdd, oBtnClr, oBtnLoa // configura pintura daUSER TGridLocalFUNCTION TSTGRID()cCSS:= "QTableView{ alternate-background-color: red; background: yellow; selection-background-color: #669966 }" // configura pintura do Header da TGrid cCSS+= "QHeaderView::section { background-color:Local oDlg qlineargradient(x1:0, y1:0,aData x2:={} 0,i y2:1,oGridLocal stop:0oEdit #616161,nEdit stop:= 0Local0.5oBtnAdd #505050,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 stop: 0.6 #434343, stop:1 #656565); color: white; padding-left: 4px; border: 1px solid #6c6c6c; }" // Dados for i:=1 to 10000 cCodProd:= StrZero(i,6) if i<3 // inserindo imagem nas 2 primeiras linhasfor i:=1 to 10000cProd:= "RPO_IMAGE=OK.BMP" else cProd:= 'Produto '+cCodProd:= StrZero(i,6) if i<3endif// inserindo imagemnas 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 } )nextDEFINE 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)// Aplica configuração de pintura via CSSoGrid 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 100 BUTTONoBtnLoa oBtnClr PROMPT "Update Clear" OFoDlg PIXEL ACTION oGrid:DoUpdate() oDlg PIXEL ACTION oGrid:ClearRows() @ 210, 150 BUTTON oBtnLoa PROMPT "Update" OF oDlg PIXEL ACTION oGrid:DoUpdate() ACTIVATE DIALOG oDlg CENTEREDACTIVATE DIALOG oDlg CENTEREDRETURNExemplo da classe TGrid()
RETURN
|
Resultado do Exemplo
Abrangência
Classe disponível, para o TOTVS Application Server
...
e TOTVS SmartClient, a partir da build 7.00.080806P.