Neste vídeo, vamos a aprender a chamar aos métodos e a utilizar parâmetros.
Cobriremos os parâmetros de tipo ponteiro mais a frente.
O objetivo da programação genérica é otimizar o desenvolvimento e facilitar a manutenção e a portabilidade.
Já usamos uma chamada simples a um método (sem parâmetros) no método de base "On Startup" onde chamamos o método NAVIGATION.
Nas primeiras lições de programação, vimos como configurar os botões em função da página selecionada no formulário navigation.
Agora vamos a otimizar esta programação para conservar somente um método utilizável para todos os botões de navegação (All, Query, Order by, etc...).
- Mostramos o Explorador
- Vamos a criar um novo método
- Um método projeto que vamos a chamar NAVIGATION_FUNCTIONS.
Receberá 2 parâmetros:
- - O primeiro concerne à ação a realizar em forma de texto (Pesquisar, Ordenar, etc.)
- - O segundo corresponde à página onde ocorre o clique (1, 2, 3 e assim sucessivamente)
Chamamos a este método da seguinte maneira:
Em um botão, chamamos a NAVIGATION_FUNCTIONS
- O texto correspondente à ação que queremos realizar
- E aqui, como segundo parâmetro, a respectiva página.
NAVIGATION_FUNCTIONS("All";FORM Get current page)
Assim que queremos usar as funções de navegação relativas ao elemento "All" e passando como segundo parâmetro e o número da página a processar.
Há duas formas de escrever os parâmetros do método que vai ser chamado, ou seja, o método NAVIGATION_FUNCTIONS:
- O primeiro parâmetro será um texto: C_TEXT($1)
- O segundo será um inteiro longo: C_LONGINT($2)
Notará que para nomear os parâmetros, se utiliza a sintaxes $1, $2, ... $n para recuperar cada parâmetro.
Para fazer que seu método seja fácil de ler, lhe sugerimos criar variáveis locais com nomes explícitos, onde é assinalado o valor dos parâmetros recebidos. Portanto, é melhor escrever:
Já que podemos declarar várias variáveis em uma diretiva de compilação C_TEXT para as variáveis simples.
Aqui uma segunda variável será o número de página:
y para recuperar o valor de $1 em $Action e o valor de $2 em $PageNum, pode escrever:
$Action:=$1
$PageNum:=$2
O resto do método é uma adaptação do que se descreveu nas seções anteriores, adaptação da ação à petição e a configuração em função da página e, portanto da tabela escolhida:
Vamos a utilizar:
:($Action="All")
- E aqui vamos a recuperar o código do botão "All"
- Recortar
- E o adaptar no método.
Qual é a informação que necessitamos substituir?:
- FORM Get current page já não é necessário já que é enviado pelo método que é chamado. Vamos a substituí-lo por $PageNum
- O resto pelo momento não é necessário ser modificado.
Quando cobrimos os ponteiros, vamos a substituir o que temos aqui por um método mais genérico.
Podemos fazer o mesmo com o botão Query.
- - Aqui arrastamos o código mantendo pressionada a tecla ALT para que seja copiado
- - Logo vamos a ter uma ação "All" e uma ação "Query"
- - Vamos a copiar o código do botão "All"
- - E é colado no botão "Query"
- - Substituímos a ação aqui
- - Copiamos o código do botão "Query"
- - E é fechado
- - Regressar ao método aqui
E, como o realizamos antes, substituímos FORM Get current page pela variável que recebemos.
Vamos a colocar um ponto de ruptura e comprovar que vamos a este método quando se executa o formulário:
Se fizermos clique em "Todos", vemos que o método que se está executando, mas no que estamos especialmente interessados é no empilhamento dos métodos:
- A última chamada se encontra na parte superior
- A anterior na parte inferior.
Se fizermos duplo clique neste método aparece o código que é traído a este ponto e podemos ver que o método NAVIGATIONS_FUNCTIONS foi chamado (com os parâmetros: "All", FORM Get current page).O método foi recebido. Aqui recebeu os seguintes parâmetros: $1 = "All", $2 = o número de página, aqui é a página 1.
Logo, $Action é "All" de maneira que vamos a esta parte
Logo $PageNum é 1, pelo que vamos a utilizar ALL RECORDS da tabela Interventions para determinar o número de registros correspondente.
Logo vamos a:
- Eliminar o ponto de ruptura
Executar o método
Quando chegamos a Technician, se buscamos aqueles cujo nome contenha "bom", encontraremos BONAPARTE.
e se pedimos "All"
Assim podemos ver que nosso método funciona corretamente, é chamado e recebe os parâmetros necessários.