Nesse vídeo demonstraremos a manipulação de registros com AxInclui (Inclusão), AxAltera (Alteração), AxDeleta (Exclusão) e AxVisual (Visualização).
Abaixo o código fonte desenvolvido para o exemplo em vídeo acima:
//Bibliotecas #Include "Totvs.ch" /*/{Protheus.doc} User Function zExe061 Exemplo de função de tela de cadastro (o indicado é usar MVC, mas esse exemplo é apenas para demonstrar) @author Atilio @since 06/12/2022 @see https://tdn.totvs.com/pages/releaseview.action?pageId=6814985 , https://tdn.totvs.com/pages/releaseview.action?pageId=23889132 , https://tdn.totvs.com/pages/releaseview.action?pageId=23889138 e https://tdn.totvs.com/pages/releaseview.action?pageId=23889145 @type function @obs Função AxInclui Parâmetros + cAlias , Caractere , Alias da tabela + nReg , Numérico , Número do registro posicionado (RecNo) sendo o padrão 0 pois é uma inclusão + nOpc , Numérico , Número da opção sendo o padrão 3 de Inclusão + aAcho , Array , Array com nome dos campos que serão exibidos + cFunc , Caractere , Função que será executada antes de abrir a tela + aCpos , Array , Array com nome dos campos que poderão ser editados + cTudoOk , Caractere , Função que será executada ao clicar no botão confirmar + lF3 , Lógico , Indica se a tela foi criada a partir de uma consulta padrão + cTransact , Caractere , Função que será executada dentro da transação + aButtons , Array , Botões que serão adicionados no Outras Ações dentro da tela de edição + aParam , Array , Funções que serão executadas sendo: [1] = Antes de Exibir a tela; [2] = Ao clicar no Confirmar (TudoOk); [3] = Após o confirmar dentro da transação; [4] = Após o confirmar fora da transação + aAuto , Array , Indica os campos em uma execucação automática + lVirtual , Lógico , Se .T. irá usar variáveis de memória (com RegToMemory: M->); senão irá usar os próprios campos + lMaximized , Lógico , Se .T. a janela virá maximizada, senão ela virá com o tamanho um pouco menor + cTela , Caractere , Nome da variável que será utilizada no lugar da aTela + lPanelFin , Lógico , Se for .T. cria o painel do gestor financeiro + oFather , Objeto , Quando usado o lPanelFin cria um dialog dentro do objeto indicado + aDim , Array , Quando usado o lPanelFin indica as dimensões da dialog que será criada + uArea , Indefinido , Quando usado o lPanelFin esse parâmetro será usado dentro das funções do gestor financeiro Retorno + nOpca , Numérico , Retorna 1 se o usuário clicou em Confirmar ou 2 se foi em Cancelar ou 3 se houve alguma falha ao acionar a tela Função AxAltera Parâmetros + cAlias , Caractere , Alias da tabela + nReg , Numérico , Número do registro posicionado (RecNo) + nOpc , Numérico , Número da opção sendo o padrão 4 de Alteração + aAcho , Array , Array com nome dos campos que serão exibidos + aCpos , Array , Array com nome dos campos que poderão ser editados + nColMens , Numérico , Parâmetro não usado (apenas compatibilidade) + cMensagem , Caractere , Parâmetro não usado (apenas compatibilidade) + cTudoOk , Caractere , Função que será executada ao clicar no botão confirmar + cTransact , Caractere , Função que será executada dentro da transação + aButtons , Array , Botões que serão adicionados no Outras Ações dentro da tela de edição + aParam , Array , Funções que serão executadas sendo: [1] = Antes de Exibir a tela; [2] = Ao clicar no Confirmar (TudoOk); [3] = Após o confirmar dentro da transação; [4] = Após o confirmar fora da transação + aAuto , Array , Indica os campos em uma execucação automática + lVirtual , Lógico , Se .T. irá usar variáveis de memória (com RegToMemory: M->); senão irá usar os próprios campos + lMaximized , Lógico , Se .T. a janela virá maximizada, senão ela virá com o tamanho um pouco menor Retorno + nOpca , Numérico , Retorna 1 se o usuário clicou em Confirmar ou 2 se foi em Cancelar ou 3 se houve alguma falha ao acionar a tela Função AxDeleta Parâmetros + cAlias , Caractere , Alias da tabela + nReg , Numérico , Número do registro posicionado (RecNo) + nOpc , Numérico , Número da opção sendo o padrão 5 de Exclusão + cTransact , Caractere , Função que será executada dentro da transação + aCpos , Array , Array com nome dos campos que serão exibidos + aButtons , Array , Botões que serão adicionados no Outras Ações dentro da tela de edição + aParam , Array , Funções que serão executadas sendo: [1] = Antes de Exibir a tela; [2] = Ao clicar no Confirmar (TudoOk); [3] = Após o confirmar dentro da transação; [4] = Após o confirmar fora da transação + aAuto , Array , Indica os campos em uma execucação automática + lMaximized , Lógico , Se .T. a janela virá maximizada, senão ela virá com o tamanho um pouco menor Retorno + nOpca , Numérico , Retorna 1 se o usuário clicou em Confirmar ou 2 se foi em Cancelar ou 3 se houve alguma falha ao acionar a tela Função AxVisual Parâmetros + cAlias , Caractere , Alias da tabela + nReg , Numérico , Número do registro posicionado (RecNo) + nOpc , Numérico , Número da opção sendo o padrão 2 de Visualização + aAcho , Array , Array com nome dos campos que serão exibidos + nColMens , Numérico , Parâmetro não usado (apenas compatibilidade) + cMensagem , Caractere , Parâmetro não usado (apenas compatibilidade) + cFunc , Caractere , Função que irá carregar os campos + aButtons , Array , Botões que serão adicionados no Outras Ações dentro da tela de edição + lMaximized , Lógico , Se .T. a janela virá maximizada, senão ela virá com o tamanho um pouco menor Retorno + nOpca , Numérico , Retorna 1 se o usuário clicou em Confirmar ou 2 se foi em Cancelar ou 3 se houve alguma falha ao acionar a tela /*/ User Function zExe061() Local aArea := FWGetArea() Local oBrowse Private aRotina := {} Private cCadastro := "Grupo de Produtos" DbSelectArea('SBM') SBM->(DbSetOrder(1)) //BM_FILIAL + BM_GRUPO //Definicao do menu aRotina := MenuDef() //Instanciando o browse oBrowse := FWMBrowse():New() oBrowse:SetAlias("SBM") oBrowse:SetDescription(cCadastro) oBrowse:DisableDetails() //Ativa a Browse oBrowse:Activate() FWRestArea(aArea) Return Nil /*/{Protheus.doc} MenuDef Menu de opcoes na funcao zExe061 @author Atilio @since 06/12/2022 @version 1.0 @type function @obs Codigo gerado automaticamente pelo Autumn Code Maker @see http://autumncodemaker.com /*/ Static Function MenuDef() Local aRotina := {} //Adicionando opcoes do menu aAdd(aRotina, {"Pesquisar", "AXPESQUI", 0, 1}) aAdd(aRotina, {"Visualizar", "AXVISUAL", 0, 2}) aAdd(aRotina, {"Incluir", "AXINCLUI", 0, 3}) aAdd(aRotina, {"Alterar", "AXALTERA", 0, 4}) aAdd(aRotina, {"Excluir", "AXDELETA", 0, 5}) aAdd(aRotina, {"Visualizar (manual)", "U_Z061VIS", 0, 2}) aAdd(aRotina, {"Incluir (manual)", "U_Z061INC", 0, 3}) aAdd(aRotina, {"Alterar (manual)", "U_Z061ALT", 0, 4}) aAdd(aRotina, {"Excluir (manual)", "U_Z061EXC", 0, 5}) Return aRotina /*/{Protheus.doc} Z061VIS Visualizar (manual) @author Atilio @since 06/12/2022 @version 1.0 @type function @obs Codigo gerado automaticamente pelo Autumn Code Maker @see http://autumncodemaker.com /*/ User Function Z061VIS() Local aArea := FWGetArea() Local aAreaBM := SBM->(FWGetArea()) Local nOpcao := 0 Private cCadastro := "Teste de Visualização" //Chama a função nOpcao := AxVisual('SBM', SBM->(RecNo()), 2) If nOpcao == 1 FWAlertInfo("Grupo visualizado: " + SBM->BM_GRUPO, "Exemplo AxVisual") EndIf FWRestArea(aAreaBM) FWRestArea(aArea) Return /*/{Protheus.doc} Z061INC Incluir (manual) @author Atilio @since 06/12/2022 @version 1.0 @type function @obs Codigo gerado automaticamente pelo Autumn Code Maker @see http://autumncodemaker.com /*/ User Function Z061INC() Local aArea := FWGetArea() Local aAreaBM := SBM->(FWGetArea()) Local nOpcao := 0 Private cCadastro := "Teste de Inclusão" //Chama a função nOpcao := AxInclui('SBM', 0, 3) If nOpcao == 1 FWAlertInfo("Grupo incluido: " + SBM->BM_GRUPO, "Exemplo AxInclui") EndIf FWRestArea(aAreaBM) FWRestArea(aArea) Return /*/{Protheus.doc} Z061ALT Alterar (manual) @author Atilio @since 06/12/2022 @version 1.0 @type function @obs Codigo gerado automaticamente pelo Autumn Code Maker @see http://autumncodemaker.com /*/ User Function Z061ALT() Local aArea := FWGetArea() Local aAreaBM := SBM->(FWGetArea()) Local nOpcao := 0 Private cCadastro := "Teste de Alteração" //Chama a função nOpcao := AxAltera('SBM', SBM->(RecNo()), 4) If nOpcao == 1 FWAlertInfo("Grupo alterado: " + SBM->BM_GRUPO, "Exemplo AxAltera") EndIf FWRestArea(aAreaBM) FWRestArea(aArea) Return /*/{Protheus.doc} Z061EXC Excluir (manual) @author Atilio @since 06/12/2022 @version 1.0 @type function @obs Codigo gerado automaticamente pelo Autumn Code Maker @see http://autumncodemaker.com /*/ User Function Z061EXC() Local aArea := FWGetArea() Local aAreaBM := SBM->(FWGetArea()) Local nOpcao := 0 Private cCadastro := "Teste de Exclusão" //Chama a função nOpcao := AxDeleta('SBM', SBM->(RecNo()), 5) If nOpcao == 1 FWAlertInfo("Grupo alterado: " + SBM->BM_GRUPO, "Exemplo AxDeleta") EndIf FWRestArea(aAreaBM) FWRestArea(aArea) Return
Bom pessoal, por hoje é só.
Abraços e até a próxima.