Fornece um objeto do tipo grid que permite a exibição de dados do tipo array, texto, tabela e query.
Construtor da classeFWBrowse(): New ( [ oOwner] ) --> oSelf
oSelf
oBrowse := FWBrowse():New() |
---|
Ativação da classe.FWBrowse(): Activate ( [ lFWBrowse] ) -->
oBrowse:Activate() |
---|
Permite adicionar a informacao de um browse relacionado.FWBrowse(): AddBrwRelation ( < oBrwRel> ) -->
|
---|
Adiciona uma coluna no Browse em tempo de execução.FWBrowse(): AddColumn ( < aColumn> ) -->
aColumn Estrutura da Coluna [n][01] Título da coluna |
---|
Permite adicionar uma configuração customizada na opção de configuração do Browse.FWBrowse(): AddCustomConfig ( < cTitle>, < bView>, [ bSave] ) -->
oBrowse:AddCustomConfig("Filial",{|o| MBrFilialCfg(o,Self) }, { || MBrSaveFilCfg(Self) } ) |
---|
Permite adicionar um filtro na lista de opções de filtros do Browse.FWBrowse(): AddFilter ( < cFilter>, < cExpAdvPL>, [ lNoCheck], [ lSelected], [ cAlias], [ lFilterAsk], [ aFilParser], [ cID] ) -->
oBrowse:AddFilter(cTitle,xCondition) Não recomendamos o uso dos filtros da classe FwBrowse com Browses do tipo Array ( DataArray() == .T. ) |
---|
Permite adicionar legendas no Browse.Sintaxe FWBrowse(): AddLegend ( < xCondition>, < cColor>, <cTitle>, <cID>, <lFilter>) --> Parâmetros
oBrowse:AddLegend(xCondition,cColor,cTitle) |
---|
Permite adicionar uma coluna com a opção de marca e desmarca.FWBrowse(): AddMarkColumns ( < bMark>, [ bLDblClick], [ bHeaderClick] ) -->
|
---|
Permite adicionar uma coluna de status.FWBrowse(): AddStatusColumns ( < bStatus>, [ bLDblClick] ) -->
|
---|
Retorna o Alias utilizado no Browse.FWBrowse(): Alias ( ) --> cAlias cAlias
|
---|
Executa o Code-Block definido no método SetAllOK(bAllOK).FWBrowse(): AllOk ( ) --> lReturn lReturn
|
---|
Retorna a posição atual do registro.FWBrowse(): At ( ) --> nAt nAt
|
---|
Retorna o componente Browse (TGRID).FWBrowse(): Browse ( ) --> oBrowse oBrowse
|
---|
Retorna o nome da classe (FWBROWSE).FWBrowse(): ClassName ( ) --> cClassName cClassName
|
---|
Executa a limpeza dos filtros estendidos realizados no Browse.FWBrowse(): CleanExFilter ( ) --> |
---|
Elimina as configurações realizadas no Browse do perfil do usuário.FWBrowse(): CleanProfile ( ) --> |
---|
Retorna a coluna posicionada no BrowseFWBrowse(): ColPos ( [ lDeleted] ) --> nColPos
nColPos
|
---|
Retorna o objeto de dados no Browse.FWBrowse(): Data ( ) --> oData oData
|
---|
Retorna se o dados apresentados no Browse é de Array.FWBrowse(): DataArray ( ) --> lDataArray lDataArray
|
---|
Retorna se o dados apresentados no Browse é de Query.FWBrowse(): DataQuery ( ) --> lDataQuery lDataQuery
|
---|
Retorna se o dados apresentados no Browse é de Tabela.FWBrowse(): DataTable ( ) --> lDataTable lDataTable
|
---|
Retorna se o dados apresentados no Browse é de Texto.FWBrowse(): DataText ( ) --> lDataText lDataText
|
---|
Indica se utiliza filtro para tabelas CODEBASE.FWBrowse(): DBFFilter ( ) --> lDBFFilter lDBFFilter
|
---|
Método de destruição da classe.FWBrowse(): DeActivate ( [ lFreeChildren] ) -->
|
---|
Indica que uma determinada coluna está deletada.FWBrowse(): DelColumn ( < nColumn> ) -->
|
---|
Permite realizar a exclusão de filtros.FWBrowse(): DeleteFilter ( [ cID] ) -->
|
---|
Executa o Code-Block, definido no método SetDelete(lDelete,bDelete), para deleção de uma linha no Browse.FWBrowse(): DelLine ( ) --> |
---|
Executa o Code-Block, definido no método SetDelOk(bDelOK), para validar a deleção de uma linha no Browse.FWBrowse(): DelOk ( ) --> lReturn lReturn |
---|
Desabilita a utilização do localizador de registro no Browse.FWBrowse(): DisableLocate ( ) --> Desabilita a impressão das informações disponíveis no Browse.FWBrowse(): DisableLocate ( ) --> |
---|
Desabilita a gravação das configurações realizadas no Browse.FWBrowse(): DisableSaveConfig ( ) --> |
---|
Aplica os filtros realizados no Browse.FWBrowse(): ExecuteFilter ( [ lBrwUpdate] ) -->
Observação Não recomendamos o uso dos filtros da classe FwBrowse com Browses do tipo Array ( DataArray() == .T. ) |
---|
Indica se o Browse está filtrado.FWBrowse(): Filtrate ( ) --> lFiltrate lFiltrate
|
---|
Retorna o objeto FWFilter.FWBrowse(): FWFilter ( ) --> oFWFilter oFWFilter
|
---|
Retorna a cor de fundo do Browse.FWBrowse(): GetBackColor ( ) --> nBackColor nBackColor
|
---|
Retorna a cor alternada do Browse.FWBrowse(): GetClrAlterRow ( ) --> nClrAlterRow nClrAlterRow
|
---|
Retorno um objeto tipo FWBrwColumn da coluna passada.FWBrowse(): GetColumn ([nCol]) oCol
|
---|
Retorna a descrição do Browse.FWBrowse(): GetDescription ( ) --> cDescription cDescription
|
---|
Retorna o filtro padrão do BrowseFWBrowse(): GetFilterDefault ( ) --> cFilterDefault cFilterDefault
|
---|
Retorna a cor da fonte do Browse.FWBrowse(): GetForeColor ( ) --> cForeColor cForeColor
|
---|
Retorna o objeto FWMARKBROWSE utilizado na passagem de parâmetros na execução das rotinas na FWFORMBROWSE;FWBrowse(): GetObjMark ( ) --> oObjMark oObjMark
|
---|
Retorna o identificador do Browse utiliza na gravação das configurações no profile do usuário. Deve ser utilizado quando existir mais de um Browse na rotina.FWBrowse(): GetProfileID ( ) --> cProfileID cProfileID
|
---|
Retorna a Query que esta sendo utilizada no Browse.FWBrowse(): GetQuery ( ) --> cQuery cQuery
|
---|
Posiciona no último registro do Browse.FWBrowse(): GoBottom ( [ lCallRefresh] ) -->
|
---|
Posiciona na coluna desejada.FWBrowse(): GoColumn ( [ nColumn] ) -->
|
---|
Salta uma ou mais linhas para baixo do item posicionado.FWBrowse(): GoDown ( [ nOffSet], [ lReport] ) -->
|
---|
Posiciona em um determinado registro do Browse.FWBrowse(): GoTo ( < nGoto>, [ lRefresh] ) -->
|
---|
Posiciona no primeiro registro do Browse.FWBrowse(): GoTop ( [ lForce] ) -->
|
---|
Salta uma ou mais linhas para cima do item posicionado.FWBrowse(): GoUp ( [ nOffSet] ) -->
|
---|
Executa o Code-Block, definido no método SetLineOk(bLineOk), para validação da linha posicionada.FWBrowse(): LineOk ( ) --> lRet lRet
|
---|
Executa a atualização das informações de uma determinada linha do Browse.FWBrowse(): LineRefresh ( [ nAt] ) -->
Observação: O parâmetro nAt que refere-se a linha, começa em zero, ele índice é enviado para o método TGrid:SetRowData do binário. |
---|
Retorna a quantidade de registros disponíveis para o browse.FWBrowse(): LogicLen ( ) --> nLogicLen nLogicLen
|
---|
Retorna se a selecão de um filtro é obrigatório para a apresentação do browse.FWBrowse(): ObligateFilter ( ) --> lObligateFilter lObligateFilter
Observação Não recomendamos o uso dos filtros da classe FwBrowse com Browses do tipo Array ( DataArray() == .T. ) |
---|
Indica se a opção de configuração do Browse está habilitada.FWBrowse(): OptionConfig ( ) --> lOptionConfig lOptionConfig
|
---|
Indica se a opção de impressão das informações do Browse está habilitada.FWBrowse(): OptionReport ( ) --> lOptionReport lOptionReport
|
---|
Executa a atualização das informações no Browse.FWBrowse(): Refresh ( [ lGoTop] ) -->
|
---|
Indica a Code-Block executado para adicionar linha no browse.FWBrowse(): SetAddLine ( < bAdd> ) -->
|
---|
Indica o Code-Block que será executado após a inclusão de uma linha.FWBrowse(): SetAfterAddLine ( < bAfterAddLine> ) -->
|
---|
Indica o alias da tabela que será utilizada no Browse.FWBrowse(): SetAlias ( < cAlias> ) -->
|
---|
SetAllOk
Indica o Code-Block executado para validar todos itens do Browse.FWBrowse(): SetAllOk ( < bAllOk> ) -->
|
---|
Indica o array utilizado para apresentação dos dados no Browse.FWBrowse(): SetArray ( < aArray> ) -->
|
---|
Indica a cor de fundo do Browse.FWBrowse(): SetBackColor ( < nBackColor> ) -->
|
---|
Indica a cor de fundo para a linha atual.FWBrowse(): SetBlkBackColor ( < bBackColor> ) -->
|
---|
Indica a cor de fonte para a linha atual.FWBrowse(): SetBlkColor ( < bBlkColor> ) -->
|
---|
Indica a Code-Block executado após a mudança de uma linha.FWBrowse(): SetChange ( < bChange> ) -->
|
---|
Indica a cor alternada do Browse.FWBrowse(): SetClrAlterRow ( < nClrAlterRow> ) -->
|
---|
Indica que o Browse exibe dados através de um array.FWBrowse(): SetDataArray ( ) --> Observação Não recomendamos o uso dos filtros da classe FwBrowse com Browses do tipo Array ( DataArray() == .T. ) |
---|
Indica que o Browse exibe dados através de uma Query, porém, a Query cria um arquivo temporário atualizando de acordo com a demanda.FWBrowse(): SetDataQuery ( ) --> |
---|
Indica que o usuário pode excluir linhas no Browse.FWBrowse(): SetDelete ( [ lDelete], [ bDelete] ) -->
|
---|
Indica o Code-Block executado para validar a exclusão da linha.FWBrowse(): SetDelOk ( < bDelOK> ) -->
|
---|
Indica a descrição do Browse.FWBrowse(): SetDescription ( < cDescription> ) -->
|
---|
Indica o Code-Block executado no duplo clique do item no Browse.FWBrowse(): SetDoubleClick ( < bLDblClick> ) -->
|
---|
Indica os campos que serão apresentados na edição de filtros.FWBrowse(): SetFieldFilter ( < aFields> ) -->
Observação Não recomendamos o uso dos filtros da classe FwBrowse com Browses do tipo Array ( DataArray() == .T. ) |
---|
Indica o arquivo texto que será utilizado no Browse.FWBrowse(): SetFile ( < cFile>, [ cCharSeparator] ) -->
|
---|
Indica o limite superior e inferior de um campo respeitando a classificação das informações atual.FWBrowse(): SetFilter ( < cCpoFil>, < cTopFun>, [ cBotFun] ) -->
Observação Não recomendamos o uso dos filtros da classe FwBrowse com Browses do tipo Array ( DataArray() == .T. ) |
---|
Indica o filtro padrão do Browse.FWBrowse(): SetFilterDefault ( < cFilterDefault> ) -->
Observação Não recomendamos o uso dos filtros da classe FwBrowse com Browses do tipo Array ( DataArray() == .T. ) |
---|
Indica o relacionamento de filtros para o Browse.FWBrowse(): SetFilterRelation ( < aFilterRelation>, < bChgFields> ) -->
Observação Não recomendamos o uso dos filtros da classe FwBrowse com Browses do tipo Array ( DataArray() == .T. ) |
---|
Indica a fonte do Browse.FWBrowse(): SetFontBrowse ( [ oFont] ) -->
|
---|
Indica a cor da fonte no Browse.FWBrowse(): SetForeColor ( < nForeColor> ) -->
|
---|
Indica que o Browse utiliza agrupamento de informações.FWBrowse(): SetGroup ( < bGroup>, [ lOpen] ) -->
|
---|
Indica a imagem que será apresentada ao lado do título da coluna.FWBrowse(): SetHeaderImage ( < nColumn>, < cResource> ) -->
|
---|
Indica que o usuário poderá inserir novas linhas no Browse.FWBrowse(): SetInsert ( [ lInsert] ) -->
|
---|
Indica os itens que serão disponibilizados para a configuração do duplo clique pelo usuário.FWBrowse(): SetItemDoubleClick ( < aItemDoubleClick> ) -->
|
---|
Indica os itens que serão disponibilizados para a configuração do clique no header pelo usuário.FWBrowse(): SetItemHeaderClick ( < aItemHeaderClick> ) -->
|
---|
Indica a linha do arquivo texto que deverá ser considerado para ínicio da leitura no Browse.FWBrowse(): SetLineBegin ( < nLineBegin> ) -->
|
---|
Indica a altura da linha no Browse.FWBrowse(): SetLineHeight ( [ nHeight] ) -->
|
---|
Indica o Code-Block executado na troca de linha do Browse.FWBrowse(): SetLineOk ( < bLineOk> ) -->
|
---|
Habilita a utilização do localizador de registros no Browse.FWBrowse(): SetLocate ( [ bAction] ) -->
|
---|
Indica que a legenda será representada por números.FWBrowse(): SetNumberLegend ( [ lNumber] ) -->
|
---|
Indica o objeto FWMARKBROWSE utilizado na passagem de parâmetros na execução das rotinas na FWFORMBROWSE.FWBrowse(): SetObjMark ( < oObjMark> ) -->
|
---|
Indica se a selecão de um filtro é obrigatório para a apresentação do browse.FWBrowse(): SetObligateFilter ( [ lObligateFilter], [ lCanCancel] ) -->
Observação Não recomendamos o uso dos filtros da classe FwBrowse com Browses do tipo Array ( DataArray() == .T. ) |
---|
Indica o container para criação do Browse.FWBrowse(): SetOwner ( [ oOwner] ) -->
|
---|
Indica que será permitido a edição de células no BrowseSintaxe FWBrowse(): SetEditCell ( <lEditCell>,<bValidEdit> ) --> Parâmetros
|
---|
Indica o bloco de pré-validação para a edição de celula, o bloco devera retorna .T. para abrir a edição e .F. para nao abrir.FWBrowse(): SetPreEditCell ( < bBlock> ) -->
|
---|
Define o identificador do Browse utiliza na gravação das configurações no profile do usuário. Deve ser utilizado quando existir mais de um Browse na rotina.FWBrowse(): SetProfileID ( < cProfileID> ) -->
|
---|
Indica a Query que será utilizada para criação do Browse.FWBrowse(): SetQuery ( < cQuery> ) -->
| ||||||||||
---|---|---|---|---|---|---|---|---|---|---|
Indica os índices utilizados pela Query na criação do Browse.FWBrowse(): SetQueryIndex ( < aIndex> ) -->
|
---|
Habilita a utilização da pesquisa de registros no Browse.FWBrowse(): SetSeek ( [ bAction], [ aOrder] ) -->
|
---|
Indica o Code-Block executado na mudança da ordem de pesquisa.FWBrowse(): SetSeekChange ( [ bSeekChange] ) -->
|
---|
Indica se apresenta somente o limite de informacoes do Browse do tipo Query quando a Query ultrapassar o limite definido.FWBrowse(): SetShowLimit ( [ lShowLimit] ) -->
|
---|
Indica o Code-Block executado ao pressionar as teclas CTRL+Del.FWBrowse(): SetSuperDel ( < bSuperDel> ) -->
|
---|
Indica o tipo de navegação do BrowseFWBrowse(): SetTypeMove ( < nTypeMove> ) -->
|
---|
Habilita a utilização do filtro case no Browse.FWBrowse(): SetUseCaseFilter ( [ nAlign] ) -->
|
---|
Habilita a utilização do filtro no Browse.FWBrowse(): SetUseFilter ( [ nAlign], [ bOnStart] ) -->
Este método espera que os campos para filtro tenham sido definidos previamente pelo método SetFieldFilter. Observação Não recomendamos o uso dos filtros da classe FwBrowse com Browses do tipo Array ( DataArray() == .T. ) |
---|
Define um bloco de códigos para validar se o filtro deve ser executado.FWBrowse(): SetVldExecFilter ( < bVldExecFilter> ) -->
|
---|
Define os campos chave de um browse de query ou array para conseguir reposicionar posteriormente em atualizações que forcem a reconstrução do browse. Não será realizado controle de inserção em duplicidade de registros no browse.Sintaxe FWBrowse(): SetUniqueKey(aSetKey) --> Parâmetros
Lógico, indica se a definição dos campos aconteceu ou não. |
---|
Retorna a lista com os campos ou colunas definidos como chave para o browse.Sintaxe FWBrowse(): GetUniqueKey() --> Array, lista com os campos definidos como chave do browse. |
---|
Captura o conteúdo dos campos e colunas informados como chave do browse.Sintaxe FWBrowse(): SetUniqueKey(aSetKey) --> Array, com lista com os pares de campos e valores identificados. Quando browse por query: { { “CAMPO”, VALOR }, { “CAMPO”, VALOR } }. Quando browse por array: { { NUM_COLUNA, VALOR }, { NUM_COLUNA, VALOR } }. |
---|
Posiciona o browse no registro conforme a chave recebida por parâmetro.Sintaxe FWBrowse(): SetUniqueKey(aDataKey) --> Parâmetros
Lógico, indica se foi possível realizar o posicionamento no registro do browse conforme o parâmetro informado. |
---|
Realiza a reconstrução do browse para atualizações em tempo de execução. Este método fará com que exista problemas de desempenho nos programas pois o browse é completamente reconstruído.Sintaxe FWBrowse(): UpdateBrowse(lResetSeek) → NIL
NIL |
---|
A função POSICIONE, quando utilizada em campos virtuais, não deve utilizar a tabela principal do browse. Caso utilize o POSICIONE ou outra maneira (como User Function) utilizando a tabela principal, atente-se a respeito do desposicionamento da tabela ou demora na execução.
Exemplos
#INCLUDE "PROTHEUS.CH" #INCLUDE "FWBROWSE.CH" User Function BrwTable() Local oBrowse Local oColumn Local oDlg //-------------------------------------------------------------------// Abertura da tabela//------------------------------------------------------------------- DbSelectArea("SX2") DbSetOrder(1) //-------------------------------------------------------------------// Define a janela do Browse//------------------------------------------------------- DEFINE DIALOG oDlg FROM 0,0 TO 600,800 PIXEL //------------------------------------------------------------------- // Define o Browse //---------------------------------------------------------------- DEFINE FWBROWSE oBrowse DATA TABLE ALIAS "SX2" OF oDlg //-------------------------------------------------------- // Cria uma coluna de marca/desmarca//---------------------------------------------- ADD MARKCOLUMN oColumn DATA { || If(.T./* Função com a regra*/,'LBOK','LBNO') }; DOUBLECLICK { |oBrowse| /* Função que atualiza a regra*/ }; HEADERCLICK { |oBrowse| /* Função executada no clique do header */ } OF oBrowse //-------------------------------------------------------- // Cria uma coluna de status //-------------------------------------------------------- ADD STATUSCOLUMN oColumn DATA { || If(.T./* Função com a regra*/,'BR_VERDE','BR_VERMELHO') }; DOUBLECLICK { |oBrowse| /* Função executada no duplo clique na coluna*/ } OF oBrowse //-------------------------------------------------------- // Adiciona legenda no Browse //-------------------------------------------------------- ADD LEGEND DATA 'X2_CHAVE $ "AA1|AA2"' COLOR "GREEN" TITLE "Chave teste 1" OF oBrowse ADD LEGEND DATA '!(X2_CHAVE $ "AA1|AA2")' COLOR "RED" TITLE "Chave teste 2" OF oBrowse //------------------------------------------------------------------- // Adiciona as colunas do Browse //------------------------------------------ ADD COLUMN oColumn DATA { || X2_CHAVE } TITLE "Chave" SIZE 3 OF oBrowse ADD COLUMN oColumn DATA { || X2_ARQUIVO } TITLE "Arquivo" SIZE 10 OF oBrowse ADD COLUMN oColumn DATA { || X2_NOME } TITLE DecodeUTF8("Descrição") SIZE 40 OF oBrowse ADD COLUMN oColumn DATA { || X2_MODO } TITLE "Modo" SIZE 1 OF oBrowse //------------------------------------------------------------------- // Ativação do Browse//---------------------------------------------------------------- ACTIVATE FWBROWSE oBrowse //-------------------------------------------------------------------// Ativação do janela//------------------------------------------------------------------- ACTIVATE DIALOG oDlg CENTERED Return
User Function BrwTable() Local oBrowse Local oColumn Local oDlg // Abertura da tabela DbSelectArea("SX2") DbSetOrder(1) //Define a janela do Browse oDlg = TDialog():New(0, 0, 600, 800,,,,,,,,,,.T.) // Define o Browse oBrowse := FWBrowse():New(oDlg) oBrowse:SetDataTable(.T.) oBrowse:SetAlias("SX2") // Cria uma coluna de marca/desmarca oColumn := oBrowse:AddMarkColumns({||If(.T./*Função de Marca/desmaca*/,'LBOK','LBNO')},{|oBrowse|/*Função de DOUBLECLICK*/},{|oBrowse|/* Função de HEADERCLICK*/}) // Cria uma coluna de status oColumn := oBrowse:AddStatusColumns({||If(.T./*Função de avaliação de status*/,'BR_VERDE','BR_VERMELHO')},{|oBrowse|/*Função de DOUBLECLICK*/}) // Adiciona legenda no Browse oBrowse:AddLegend('X2_CHAVE $ "AA1|AA2"',"GREEN","Chave teste 1") oBrowse:AddLegend('!(X2_CHAVE $ "AA1|AA2")',"RED","Chave teste 2") // Adiciona as colunas do Browse oColumn := FWBrwColumn():New() oColumn:SetData({||X2_CHAVE}) oColumn:SetTitle("Chave") oColumn:SetSize(3) oBrowse:SetColumns({oColumn}) oColumn := FWBrwColumn():New() oColumn:SetData({||X2_ARQUIVO}) oColumn:SetTitle("Arquivo") oColumn:SetSize(10) oBrowse:SetColumns({oColumn}) oColumn := FWBrwColumn():New() oColumn:SetData({||X2_NOME}) oColumn:SetTitle(DecodeUTF8("Descrição")) oColumn:SetSize(40) oBrowse:SetColumns({oColumn}) oColumn := FWBrwColumn():New() oColumn:SetData({||X2_MODO}) oColumn:SetTitle("Modo") oColumn:SetSize(1) oBrowse:SetColumns({oColumn}) // Ativação do Browse oBrowse:Activate() // Ativação da janela oDlg:Activate(,,,.T.) Return
Function u_BrwArray Local oDlg := Nil Local oFwBrowse := Nil Local aColumns := {} Local aItems :={} Local nX oDlg = TDialog():New(0, 0, 600, 800, "Browse com Array",,,,,,,,,.T.) oFwBrowse := FWBrowse():New(oDlg) oFwBrowse:SetDataArrayoBrowse() //Define utilização de array aItems := LoadItems() //Carregar os itens que irão compor o conteudo do grid oFwBrowse:SetArray(aItems) //Indica o array utilizado para apresentação dos dados no Browse. aColumns := RetColumns( aItems ) //Cria as colunas do array For nX := 1 To Len(aColumns ) oFwBrowse:AddColumn( aColumns[nX] ) Next oFwBrowse:SetOwner(oDlg) oFwBrowse:SetDescription( "Browse com Array" ) oFwBrowse:Activate() oDlg:Activate() Return Static Function RetColumns(aItems) Local aColumns := {} aAdd(aColumns, {; "Coluna 1",; // [n][01] Título da coluna {|oBrw| aItems[oBrw:At(), 1] },; // [n][02] Code-Block de carga dos dados "N",; // [n][03] Tipo de dados "@E 9999",; // [n][04] Máscara 2,; // [n][05] Alinhamento (0=Centralizado, 1=Esquerda ou 2=Direita) 10,; // [n][06] Tamanho 0,; // [n][07] Decimal .T.,; // [n][08] Indica se permite a edição {|| },; // [n][09] Code-Block de validação da coluna após a edição .F.,; // [n][10] Indica se exibe imagem Nil,; // [n][11] Code-Block de execução do duplo clique "__ReadVar",; // [n][12] Variável a ser utilizada na edição (ReadVar) {|| AlwaysTrue()},; // [n][13] Code-Block de execução do clique no header .F.,; // [n][14] Indica se a coluna está deletada .T.,; // [n][15] Indica se a coluna será exibida nos detalhes do Browse {},; // [n][16] Opções de carga dos dados (Ex: 1=Sim, 2=Não) "ID1"}) // [n][17] Id da coluna aAdd(aColumns, {; "Coluna 2",; // [n][01] Título da coluna {|oBrw| aItems[oBrw:At(), 2] },; // [n][02] Code-Block de carga dos dados "C",; // [n][03] Tipo de dados "@!",; // [n][04] Máscara 0,; // [n][05] Alinhamento (0=Centralizado, 1=Esquerda ou 2=Direita) 10,; // [n][06] Tamanho 0,; // [n][07] Decimal .F.,; // [n][08] Indica se permite a edição {|| },; // [n][09] Code-Block de validação da coluna após a edição .F.,; // [n][10] Indica se exibe imagem Nil,; // [n][11] Code-Block de execução do duplo clique __ReadVar,; // [n][12] Variável a ser utilizada na edição (ReadVar) {|| AlwaysTrue()},; // [n][13] Code-Block de execução do clique no header .F.,; // [n][14] Indica se a coluna está deletada .T.,; // [n][15] Indica se a coluna será exibida nos detalhes do Browse {},; // [n][16] Opções de carga dos dados (Ex: 1=Sim, 2=Não) "ID2"}) // [n][17] Id da coluna aAdd(aColumns, {; "Coluna 3",; // [n][01] Título da coluna {|oBrw| aItems[oBrw:At(), 3 ] },; // [n][02] Code-Block de carga dos dados "C",; // [n][03] Tipo de dados "@!",; // [n][04] Máscara 0,; // [n][05] Alinhamento (0=Centralizado, 1=Esquerda ou 2=Direita) 10,; // [n][06] Tamanho 0,; // [n][07] Decimal .F.,; // [n][08] Indica se permite a edição {|| },; // [n][09] Code-Block de validação da coluna após a edição .F.,; // [n][10] Indica se exibe imagem Nil,; // [n][11] Code-Block de execução do duplo clique "__ReadVar",; // [n][12] Variável a ser utilizada na edição (ReadVar) {|| AlwaysTrue()},; // [n][13] Code-Block de execução do clique no header .F.,; // [n][14] Indica se a coluna está deletada .T.,; // [n][15] Indica se a coluna será exibida nos detalhes do Browse {},; // [n][16] Opções de carga dos dados (Ex: 1=Sim, 2=Não) "ID3"}) // [n][17] Id da coluna Return aColumns Static Function LoadItems() Local aLinha := {} Local nX For nX := 1 To 20 aAdd(aLinha,{ nX, StrZero(nX, 5), " Linha : "+ cValToChar(nX)}) Next Return aLinha
Function u_FwBrwQry() Local oDlg As Object Local aColumns As Array Local nContFlds As Numeric Local cAliasTemp As Character Local oBrowse As Object Local aFields As Array cAliasTemp := MpSysOpenQuery( "SELECT * FROM " + RetSqlName("SC5") + " WHERE D_E_L_E_T_ = ''" ) DEFINE MSDIALOG oDlg TITLE "Browse com Query" FROM 0,0 TO 600, 800 PIXEL oBrowse := FWBrowse():New() oBrowse:SetDataTable( .T. ) oBrowse:SetAlias( cAliasTemp ) oBrowse:SetOwner( oDlg ) oBrowse:SetDescription( "Browse com Query" ) //------------------------------------------------------------------- // Adiciona as colunas do Browse //------------------------------------------------------------------- aColumns := {} aFields := {} aAdd( aFields, "C5_FILIAL" ) aAdd( aFields, "C5_NUM" ) aAdd( aFields, "C5_TIPO" ) aAdd( aFields, "C5_CLIENTE" ) aAdd( aFields, "C5_PEDEXP" ) For nContFlds := 1 To Len( aFields ) AAdd( aColumns, FWBrwColumn():New() ) aColumns[Len(aColumns)]:SetData( &("{ || " + aFields[nContFlds] + " }") ) aColumns[Len(aColumns)]:SetTitle( aFields[nContFlds] ) aColumns[Len(aColumns)]:SetSize( 15 ) aColumns[Len(aColumns)]:SetID( aFields[nContFlds] ) Next nContFlds oBrowse:SetColumns(aColumns) oBrowse:Activate() ACTIVATE MSDIALOG oDlg Return
Function u_FwBrwQry() Local oDlg As Object Local aColumns As Array Local nContFlds As Numeric Local aFields As Array Local oBrowse As Object Local cAliasQry As Character DEFINE MSDIALOG oDlg TITLE "Browse de Query" FROM 0,0 TO 600, 800 PIXEL cAliasQry := GetNextAlias() oBrowse := FWBrowse():New() oBrowse:SetDataQuery() oBrowse:SetAlias(cAliasQry) oBrowse:SetQuery("SELECT * FROM " + RetSqlName("SC5") + " WHERE D_E_L_E_T_ = ''") oBrowse:SetOwner(oDlg) oBrowse:SetDescription("Browse de Query") //------------------------------------------------------------------- // Adiciona as colunas do Browse //------------------------------------------------------------------- aColumns := {} aFields := {} aAdd( aFields, "C5_FILIAL" ) aAdd( aFields, "C5_NUM" ) aAdd( aFields, "C5_TIPO" ) aAdd( aFields, "C5_CLIENTE" ) aAdd( aFields, "C5_PEDEXP" ) For nContFlds := 1 To Len( aFields ) AAdd( aColumns, FWBrwColumn():New() ) aColumns[Len(aColumns)]:SetData( &("{ || " + aFields[nContFlds] + " }") ) aColumns[Len(aColumns)]:SetTitle( aFields[nContFlds] ) aColumns[Len(aColumns)]:SetSize( 15 ) aColumns[Len(aColumns)]:SetID( aFields[nContFlds] ) Next nContFlds oBrowse:SetColumns(aColumns) oBrowse:Activate() ACTIVATE MSDIALOG oDlg Return
Define os campos chave de um browse de query ou array para conseguir reposicionar posteriormente em atualizações que forcem a reconstrução do browse. Não será realizado controle de inserção em duplicidade de registros no browse.
AddLegend