Vídeo Aula – AdvPL 022 – MarkBrowse em MVC

Vídeo Aula – AdvPL 022 – MarkBrowse em MVC

Olá pessoal…

Na aula de hoje vou mostrar como fazer um MarkBrowse em MVC (browse com opção de flagar / checar um registro).

Abaixo o código fonte completo usado na aula:

//Bibliotecas
#Include 'Protheus.ch'
#Include 'FwMVCDef.ch'

/*/{Protheus.doc} zMkMVC
MarkBrow em MVC da tabela de Artistas
@author Atilio
@since 03/09/2016
@version 1.0
@obs Criar a coluna ZZ1_OK com o tamanho 2 no Configurador e deixar como não usado
/*/

User Function zMkMVC()
	Private oMark
	
	//Criando o MarkBrow
	oMark := FWMarkBrowse():New()
	oMark:SetAlias('ZZ1')
	
	//Setando semáforo, descrição e campo de mark
	oMark:SetSemaphore(.T.)
	oMark:SetDescription('Seleção do Cadastro de Artistas')
	oMark:SetFieldMark( 'ZZ1_OK' )
	
	//Setando Legenda
	oMark:AddLegend( "ZZ1->ZZ1_COD <= '000005'", "GREEN",	"Menor ou igual a 5" )
	oMark:AddLegend( "ZZ1->ZZ1_COD >  '000005'", "RED",	"Maior que 5" )
	
	//Ativando a janela
	oMark:Activate()
Return NIL

/*---------------------------------------------------------------------*
 | Func:  MenuDef                                                      |
 | Autor: Daniel Atilio                                                |
 | Data:  03/09/2016                                                   |
 | Desc:  Criação do menu MVC                                          |
 *---------------------------------------------------------------------*/
 
Static Function MenuDef()
	Local aRotina := {}
	
	//Criação das opções
	ADD OPTION aRotina TITLE 'Visualizar' ACTION 'VIEWDEF.zModel1' OPERATION 2 ACCESS 0
	ADD OPTION aRotina TITLE 'Alterar'    ACTION 'VIEWDEF.zModel1' OPERATION 4 ACCESS 0
	ADD OPTION aRotina TITLE 'Processar'  ACTION 'u_zMarkProc'     OPERATION 2 ACCESS 0
	ADD OPTION aRotina TITLE 'Legenda'    ACTION 'u_zMod1Leg'      OPERATION 2 ACCESS 0
Return aRotina

/*---------------------------------------------------------------------*
 | Func:  ModelDef                                                     |
 | Autor: Daniel Atilio                                                |
 | Data:  03/09/2016                                                   |
 | Desc:  Criação do modelo de dados MVC                               |
 *---------------------------------------------------------------------*/
 
Static Function ModelDef()
Return FWLoadModel('zModel1')

/*---------------------------------------------------------------------*
 | Func:  ViewDef                                                      |
 | Autor: Daniel Atilio                                                |
 | Data:  03/09/2016                                                   |
 | Desc:  Criação da visão MVC                                         |
 *---------------------------------------------------------------------*/
 
Static Function ViewDef()
Return FWLoadView('zModel1')

/*/{Protheus.doc} zMarkProc
Rotina para processamento e verificação de quantos registros estão marcados
@author Atilio
@since 03/09/2016
@version 1.0
/*/

User Function zMarkProc()
	Local aArea    := GetArea()
	Local cMarca   := oMark:Mark()
	Local lInverte := oMark:IsInvert()
	Local nCt      := 0
	
	//Percorrendo os registros da ZZ1
	ZZ1->(DbGoTop())
	While !ZZ1->(EoF())
		//Caso esteja marcado, aumenta o contador
		If oMark:IsMark(cMarca)
			nCt++
			
			//Limpando a marca
			RecLock('ZZ1', .F.)
				ZZ1_OK := ''
			ZZ1->(MsUnlock())
		EndIf
		
		//Pulando registro
		ZZ1->(DbSkip())
	EndDo
	
	//Mostrando a mensagem de registros marcados
	MsgInfo('Foram marcados <b>' + cValToChar( nCt ) + ' artistas</b>.', "Atenção")
	
	//Restaurando área armazenada
	RestArea(aArea)
Return NIL

Esses e outros códigos, estão disponíveis gratuitamente no nosso GitHub, acesse em github.com/dan-atilio/AdvPL.
Caso queira uma customização específica para sua empresa, saiba mais em nossa Loja.

Bom pessoal, por hoje é só.
Abraços e até a próxima.

About Dan_Atilio

Analista e desenvolvedor de sistemas. Técnico em Informática pelo CTI da Unesp. Graduado em Banco de Dados pela Fatec Bauru. Entusiasta de soluções Open Source e blogueiro nas horas vagas. Autor do projeto Terminal de Informação, onde são postados tutoriais e notícias envolvendo o mundo da tecnologia.

6 comentários em “Vídeo Aula – AdvPL 022 – MarkBrowse em MVC

  1. Boa Tarde, como eu poderia neste exemplo colocar na parte superior ou inferior da tela uma variável que eu pudesse colocar a quantidade de títulos selecionadas e outra a soma dos valores selecionados, tipo o que existe na tela padrão do protheus de liberação automática de títulos a pagar no financeiro.

    1. Boa noite Paulo, tudo bem?

      Rapaz, com o FWMarkBrowse eu nunca vi (apenas com o MSSelect mesmo), mas talvez o que você poderia fazer, é criar uma Dialog, e criar um Panel e vincular o seu mark com esse panel através do médoto SetOwner.

      Ai você criaria gets em outro panel, e nos métodos de marcar os registros, você poderia incrementar as variáveis desses gets.

      Qualquer dúvida, fico à disposição.

      Um grande abraço.

  2. Boa tarde.
    Preciso criar um markbrowse como este na mesma tela onde terá um formulário, de forma que eu teria um formulário acima, e um markbrowse abaixo.
    Como eu consigo fazer isso em MVC?

    Obrigado desde já.

    1. Bom dia Wexlei, tudo bem?
      Na verdade você teria que criar um fonte MVC normal (sem ser markbrowse), e no viewdef dele, teria que criar uma struct de uma tabela, e nessa struct criar um campo tipo check, futuramente irei fazer uma vídeo aula sobre esse assunto.
      Um grande abraço.

      1. Obrigado pela resposta.

        Consegui fazer dessa forma, porém não carrega nada na inclusão. Precisaria que carregasse nessa grid as informações de uma tabela independente de ser inclusão, alteração ou exclusão, porque o usuário irá selecionar alguns dos registros dela que será associado ao que estiver sendo incluído no formulário de cima.

        1. Entendi Wexlei, estou tentando conseguir um tempo para voltar com as vídeo aulas, mas fique de olho, que irei tentar postar.
          Um grande abraço.

Deixe uma resposta

%d blogueiros gostam disto: