× Linguagem de Programação ADVPL

Perguntas Markbrow

Mais
11 anos 2 semanas atrás #12895 por josuel.silva
Markbrow foi criado por josuel.silva
Prezados boa tarde,
estou tentando criar uma Markbrow, porém, a rotina só está deixando eu navegar pela lista, ou seja, ele não deixa eu descer para o segundo item para poder selecionar.
Mesmo se eu der uma Down ou Up, ele sempre fica posicionado no primeiro item do Markbrow.

Agradeço se puderem dá uma olhada. Segue fonte.



#Include "rwmake.Ch"
#include "TOPCONN.CH"

User Function GArqmarkb()
private _carq := ""
private _carqtmp1 := ""


processa({|| _Qry()})
ccadastro:="Selecionar Arquivos"
arotina:={}

aadd(arotina,{"Pesquisa" ,'u_GP121',0,3})
aadd(arotina,{"Gerar Arq" ,'u_GP122A',0,3})

acampos:={}
aadd(acampos,{ "OK" ,"",""})

dbselectarea("SX3")
dbsetorder(1)
dbseek("ZZQ",.t.)
while !sx3->(eof()) .and. sx3->x3_arquivo == "ZZQ"
if alltrim(sx3->x3_campo) <> "ZZQ_FILIAL"
aadd(aCampos,{x3_campo,"",x3_titulo})
endif
sx3->(dbskip())
end-while

cmarca :=getmark()
lgrade :=.f.
linverte :=.f.
markbrowse("TMP1","OK",,acampos,@linverte,@cmarca)
tmp1->(dbclosearea())

Return Nil

Por favor Acessar ou Registrar para participar da conversa.

Mais
11 anos 2 semanas atrás #12909 por mbrigagao
Respondido por mbrigagao no tópico Markbrow
Josuel,

Eu tive um problema similar ao seu utilizando o MarkBrow com o Protheus 11.

Para eliminar o problema, passei a utilizar o FWMarkBrow conforme exemplo abaixo:
/*/
ÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜ
±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±
±±ÚÄÄÄÄÄÄÄÄÄÄÂÄÄÄÄÄÄÄÄÄÄÂÄÄÄÄÄÄÄÂÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÂÄÄÄÄÄÄÂÄÄÄÄÄÄÄÄÄÄ¿±±
±±³Programa  ³VK904Slp  ³ Autor ³   Marcelo Brigagao    ³ Data ³ 11/11/10 ³±±
±±ÃÄÄÄÄÄÄÄÄÄÄÅÄÄÄÄÄÄÄÄÄÄÁÄÄÄÄÄÄÄÁÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÁÄÄÄÄÄÄÁÄÄÄÄÄÄÄÄÄÄ´±±
±±³Descri‡…o ³Seleciona pedido para controle de projetos                  ³±±
±±ÀÄÄÄÄÄÄÄÄÄÄÁÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÙ±±
±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±
ßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßß
/*/
Static Function VK904Slp()
Local cFilSC6   := ""
Local aIndexSC6 := {}
Local aCpos     := {}
Local aBkRotina := Aclone(aRotina)
Local cTitBrow  := OemToAnsi("Controle de Projeto")

Private aRotina := {{"Processa","U_VK904CPR", 0,4}}
Private oMark

cFilSC6 += "C6_NUM>='"+_cPedIni+"' .And. C6_NUM<='"+_cPedFim+"' .And. "
If _lEnvia
	cFilSC6 += "C6_FILIAL='"+cSC6Filial+"' .And. Empty(C6_XDTENV) .And. ( Empty(C6_BLQ) .Or. C6_BLQ = 'N' )" 
Else
	cFilSC6 += "C6_FILIAL='"+cSC6Filial+"' .And. Empty(C6_XDTRET) .And. !Empty(C6_XDTENV) .And. ( Empty(C6_BLQ) .Or. C6_BLQ = 'N' )"
EndIf

dbSelectArea("SC6")
dbSetOrder(1)

aCpos := {}
aAdd(aCpos,{"C6_XDTENV"		,,"Dt.Env.Projeto"	,PesqPict("SC6","C6_XDTENV")})
aAdd(aCpos,{"C6_XDTRET"		,,"Dt.Ret.Projeto"	,PesqPict("SC6","C6_XDTRET")})
aAdd(aCpos,{"C6_XPROG"		,,"Prog.Produção"	,PesqPict("SC6","C6_XPROG")})
aAdd(aCpos,{"C6_NUM"		,,"Nr.Pedido"		,PesqPict("SC6","C6_NUM")})
aAdd(aCpos,{"C6_ITEM"		,,"It.Pedido"		,PesqPict("SC6","C6_ITEM")})
aAdd(aCpos,{"C6_PRODUTO"	,,"Produto"			,PesqPict("SC6","C6_PRODUTO")})
aAdd(aCpos,{"C6_DESCRI"		,,"Descrição"		,PesqPict("SC6","C6_DESCRI")})
aAdd(aCpos,{"C6_QTDVEN"		,,"Qtd.Vendida"		,PesqPict("SC6","C6_QTDVEN")})
aAdd(aCpos,{"C6_OPC"		,,"Opcionais"		,PesqPict("SC6","C6_OPC")})
aAdd(aCpos,{"C6_MEDIDA"		,,"Med./Formação"	,PesqPict("SC6","C6_MEDIDA")})
aAdd(aCpos,{"C6_ENTREG"		,,"Entrega	"		,PesqPict("SC6","C6_ENTREG")})
aAdd(aCpos,{"C6_NUMOP"		,,"Nr. OP"			,PesqPict("SC6","C6_NUMOP")	})
aAdd(aCpos,{"C6_ITEMOP"		,,"Item OP"			,PesqPict("SC6","C6_ITEMOP")})
aAdd(aCpos,{"C6_QTDENT"		,,"Qtd.Entregue"	,PesqPict("SC6","C6_QTDENT")})
aAdd(aCpos,{"C6_CLI"		,,"Cod.Cliente"		,PesqPict("SC6","C6_CLI")})
aAdd(aCpos,{"C6_NOTA"		,,"Nr.N Fiscal"		,PesqPict("SC6","C6_NOTA")})
aAdd(aCpos,{"C6_SERIE"		,,"Serie NF"		,PesqPict("SC6","C6_SERIE")})
aAdd(aCpos,{"C6_DATFAT"		,,"Data NF"			,PesqPict("SC6","C6_DATFAT")})

//ÚÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ¿
//³ Construcao do MarkBrowse                             ³
//ÀÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÙ
oMark:= FWMarkBrowse():NEW()   // Cria o objeto oMark - MarkBrowse
oMark:SetAlias("SC6")          // Define a tabela do MarkBrowse
oMark:SetDescription(cTitBrow) // Define o titulo do MarkBrowse
oMark:SetFieldMark("C6_OK")    // Define o campo utilizado para a marcacao
oMark:SetFilterDefault(cFilSC6)// Define o filtro a ser aplicado no MarkBrowse
oMark:SetFields(aCpos)         // Define os campos a serem mostrados no MarkBrowse
oMark:SetSemaphore(.F.)        // Define se utiliza marcacao exclusiva 
oMark:DisableDetails()         // Desabilita a exibicao dos detalhes do Browse
oMark:Activate() // Ativa o MarkBrowse

//ÚÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ¿
//³Restaura condicao original                                              ³
//ÀÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÙ
dbSelectArea("SC6")
RetIndex("SC6")
dbClearFilter()

aRotina := ACLONE(aBkRotina)

Return()

A linha onde consta oMark:SetSemaphore(.F.) define se pode ou não marcar mais de um elemento, para marcar diversos deixe como .F.

Espero que te de uma luz.

Por favor Acessar ou Registrar para participar da conversa.

Mais
11 anos 2 semanas atrás #12914 por josuel.silva
Respondido por josuel.silva no tópico Markbrow
Marcelo obrigado pela resposta, mais descobri que meu X2 estava faltando informações.
Faltava preencher as AC Unidade e Ac Empresa estavam em branco.
Preenchi os campos e funcionou.


Grato.

Por favor Acessar ou Registrar para participar da conversa.

Mais
11 anos 1 semana atrás #13214 por lourenconi
Respondido por lourenconi no tópico Markbrow
boa tarde Marcelo,
tambem tive o mesmo problema com o MARKBROW e tive que usar o FWMarkBrowse.
porem estou com duvidas a respeito da função e não encontro solução.
Primeiro como coloco legendas nessa função.
Segundo como faço um refresh para "retirar" as NF da tela após o processamento da função.

obrigado

Por favor Acessar ou Registrar para participar da conversa.

Mais
11 anos 1 dia atrás #13394 por mbrigagao
Respondido por mbrigagao no tópico Markbrow
Fernando, bom dia.

A TOTVS ainda não disponibilizou documentação da classe FWMarkBrowse, porém utilizie os seguintes documentos (eles me ajudaram, porém não solucionaram todas as duvidas).

tdn.totvs.com/display/public/mp/Material+de+Apoio+MVC
tdn.totvs.com/display/public/mp/FWBrowse

Qualquer coisa posta seu fonte que a galera da uma força.

Por favor Acessar ou Registrar para participar da conversa.

Mais
10 anos 8 meses atrás #16131 por titosca
Respondido por titosca no tópico Markbrow

marcelo brigagao escreveu: Josuel,

Eu tive um problema similar ao seu utilizando o MarkBrow com o Protheus 11.

Para eliminar o problema, passei a utilizar o FWMarkBrow conforme exemplo abaixo:

/*/
ÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜ
±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±
±±ÚÄÄÄÄÄÄÄÄÄÄÂÄÄÄÄÄÄÄÄÄÄÂÄÄÄÄÄÄÄÂÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÂÄÄÄÄÄÄÂÄÄÄÄÄÄÄÄÄÄ¿±±
±±³Programa  ³VK904Slp  ³ Autor ³   Marcelo Brigagao    ³ Data ³ 11/11/10 ³±±
±±ÃÄÄÄÄÄÄÄÄÄÄÅÄÄÄÄÄÄÄÄÄÄÁÄÄÄÄÄÄÄÁÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÁÄÄÄÄÄÄÁÄÄÄÄÄÄÄÄÄÄ´±±
±±³Descri‡…o ³Seleciona pedido para controle de projetos                  ³±±
±±ÀÄÄÄÄÄÄÄÄÄÄÁÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÙ±±
±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±
ßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßß
/*/
Static Function VK904Slp()
Local cFilSC6   := ""
Local aIndexSC6 := {}
Local aCpos     := {}
Local aBkRotina := Aclone(aRotina)
Local cTitBrow  := OemToAnsi("Controle de Projeto")

Private aRotina := {{"Processa","U_VK904CPR", 0,4}}
Private oMark

cFilSC6 += "C6_NUM>='"+_cPedIni+"' .And. C6_NUM<='"+_cPedFim+"' .And. "
If _lEnvia
	cFilSC6 += "C6_FILIAL='"+cSC6Filial+"' .And. Empty(C6_XDTENV) .And. ( Empty(C6_BLQ) .Or. C6_BLQ = 'N' )" 
Else
	cFilSC6 += "C6_FILIAL='"+cSC6Filial+"' .And. Empty(C6_XDTRET) .And. !Empty(C6_XDTENV) .And. ( Empty(C6_BLQ) .Or. C6_BLQ = 'N' )"
EndIf

dbSelectArea("SC6")
dbSetOrder(1)

aCpos := {}
aAdd(aCpos,{"C6_XDTENV"		,,"Dt.Env.Projeto"	,PesqPict("SC6","C6_XDTENV")})
aAdd(aCpos,{"C6_XDTRET"		,,"Dt.Ret.Projeto"	,PesqPict("SC6","C6_XDTRET")})
aAdd(aCpos,{"C6_XPROG"		,,"Prog.Produção"	,PesqPict("SC6","C6_XPROG")})
aAdd(aCpos,{"C6_NUM"		,,"Nr.Pedido"		,PesqPict("SC6","C6_NUM")})
aAdd(aCpos,{"C6_ITEM"		,,"It.Pedido"		,PesqPict("SC6","C6_ITEM")})
aAdd(aCpos,{"C6_PRODUTO"	,,"Produto"			,PesqPict("SC6","C6_PRODUTO")})
aAdd(aCpos,{"C6_DESCRI"		,,"Descrição"		,PesqPict("SC6","C6_DESCRI")})
aAdd(aCpos,{"C6_QTDVEN"		,,"Qtd.Vendida"		,PesqPict("SC6","C6_QTDVEN")})
aAdd(aCpos,{"C6_OPC"		,,"Opcionais"		,PesqPict("SC6","C6_OPC")})
aAdd(aCpos,{"C6_MEDIDA"		,,"Med./Formação"	,PesqPict("SC6","C6_MEDIDA")})
aAdd(aCpos,{"C6_ENTREG"		,,"Entrega	"		,PesqPict("SC6","C6_ENTREG")})
aAdd(aCpos,{"C6_NUMOP"		,,"Nr. OP"			,PesqPict("SC6","C6_NUMOP")	})
aAdd(aCpos,{"C6_ITEMOP"		,,"Item OP"			,PesqPict("SC6","C6_ITEMOP")})
aAdd(aCpos,{"C6_QTDENT"		,,"Qtd.Entregue"	,PesqPict("SC6","C6_QTDENT")})
aAdd(aCpos,{"C6_CLI"		,,"Cod.Cliente"		,PesqPict("SC6","C6_CLI")})
aAdd(aCpos,{"C6_NOTA"		,,"Nr.N Fiscal"		,PesqPict("SC6","C6_NOTA")})
aAdd(aCpos,{"C6_SERIE"		,,"Serie NF"		,PesqPict("SC6","C6_SERIE")})
aAdd(aCpos,{"C6_DATFAT"		,,"Data NF"			,PesqPict("SC6","C6_DATFAT")})

//ÚÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ¿
//³ Construcao do MarkBrowse                             ³
//ÀÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÙ
oMark:= FWMarkBrowse():NEW()   // Cria o objeto oMark - MarkBrowse
oMark:SetAlias("SC6")          // Define a tabela do MarkBrowse
oMark:SetDescription(cTitBrow) // Define o titulo do MarkBrowse
oMark:SetFieldMark("C6_OK")    // Define o campo utilizado para a marcacao
oMark:SetFilterDefault(cFilSC6)// Define o filtro a ser aplicado no MarkBrowse
oMark:SetFields(aCpos)         // Define os campos a serem mostrados no MarkBrowse
oMark:SetSemaphore(.F.)        // Define se utiliza marcacao exclusiva 
oMark:DisableDetails()         // Desabilita a exibicao dos detalhes do Browse
oMark:Activate() // Ativa o MarkBrowse

//ÚÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ¿
//³Restaura condicao original                                              ³
//ÀÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÙ
dbSelectArea("SC6")
RetIndex("SC6")
dbClearFilter()

aRotina := ACLONE(aBkRotina)

Return()

A linha onde consta oMark:SetSemaphore(.F.) define se pode ou não marcar mais de um elemento, para marcar diversos deixe como .F.

Espero que te de uma luz.


Posso utilizar filtro em SQL nesse browse??? Pode me dar um exemplo?

Por favor Acessar ou Registrar para participar da conversa.

Tempo para a criação da página:0.127 segundos
Joomla templates by a4joomla