terça-feira, 17 de maio de 2016

WX - Trabalhando com Internal Procedure



Forum.pcsoft.fr/pt-BR/pcsoft.br.windev/1242-trabalhando-com-internal-procedure/read.awp

Publicado em maio, 17 2016 - 4:44 AM
Prezados,

Trabalhando com Internal Procedure, agiliza o desenvolvimento e evita codigos repetitivos, agilizando o desenvolvimento.

Vejamos o exemplo:




Só digitar normal e d

Várias características requerem um procedimento de chamada uma vez ou várias vezes através de uma função WLanguage (também chamado de "retorno de chamada"). por exemplo, este é o caso para as seguintes funções: fListFile , TreeListItem , AlbumPicker em iOS, ...

Um procedimento deve ser criado para essas funções, mas vários inconvenientes aparecer:

Perda da localidade código: o algoritmo final não pode ser totalmente exibida. Várias partes traseiras e forths deve ser realizada entre o código de chamada eo procedimento WLanguage.
Dificuldade para compartilhar informações wiht o procedimento WLanguage: Na maioria dos casos, as variáveis ​​globais deve ser utilizado (para passar parâmetros para a chamada de retorno ou para recuperar os resultados).

Neste caso, os procedimentos internos são usados ​​para simplificar a escrita de características de retorno de chamada e para corrigir os problemas causados ​​pelo uso de um procedimento padrão.

Declarando e chamando os procedimentos internos
Um procedimento interno é declarado no código de um processo existente (processo associado a um controle, procedimento janela, processo global ou método de classe, ...).

A sintaxe é a seguinte:
PROCESSO INTERNO <Nome do Procedimento> ()
<Código DO processo>
FIM


notas:

Os procedimentos internos devem ser declarados no processo em que eles são usados.
O código do processo encontrados antes e depois do código de declaração do procedimento interno é executado em sequência: o código do procedimento interno não é executado.
Exemplo:

// Código antes do procedimento interno:. Este código é executado
INTERNO PROCEDIMENTO MyInternalProcedure ()
// Código do procedimento interno.
// Este código não é executado.
END
// código após o procedimento interno: Este código é executado.


Um procedimento interno pode ser diretamente chamado pelo seu nome, como qualquer procedimento padrão. Esta chamada pode ser colocada antes ou depois da declaração do procedimento interno.

Exemplo:

// Chamada colocado antes
MyInternalProcedure ()

// Declare o procedimento interno
INTERNO PROCEDIMENTO MyInternalProcedure ()
// Código do procedimento interno de execução durante a chamada para MyInternalProcedure ()
END

// Chamada colocado após
MyInternalProcedure ()


Isto permite-lhe obter um código que é fácil de ler.
As exceções disparadas pelos procedimentos internos podem ser processados ​​fora do procedimento interno.

Exemplo
O código a seguir é usado para listar todos os elementos filho de um nó encontrado em um controle TreeView:

// Lista os "filhos" do nó "Sobremesas" em "TREE_RecipeTV"
// O procedimento "ExpandAll" é chamado
// para cada elemento de "criança" encontrada no nó "Sobremesas"
Res = TreeListItem ( tree_ RecipeTV , "Recipes " + TAB + " Sobremesas " , ExpandAll )


INTERNO PROCEDIMENTO ExpandAll ( tree_ RecipeTV , ChildPath , ChildFound , Nível , Pointer )
// é o elemento encontrado uma folha?
IF TreeTypeItem ( tree_ RecipeTV , ChildPath + ChildFound ) = tvLeaf ENTÃO
RETURN // volte para a função TreeListItem
MAIS
// é o elemento encontrado em colapso?
IF TreeStatus ( tree_ RecipeTV , ChildPath + ChildFound ) = tvCollapse ENTÃO
TreeExpand ( tree_ RecipeTV , ChildPath + ChildFound )
END
END
// Recolhe o treeview
TreeCollapse ( tree_ RecipeTV , " receita " )
END


Características dos procedimentos internos

Usar em callback
O procedimento interno pode ser usado em uma série de funções WLanguage que espera um procedimento WLanguage no parâmetro (como fListFile , TreeListItem , ...).

Atenção: Neste caso, o parâmetro correspondente ao nome do procedimento interno deve corresponder diretamente para o nome do procedimento interno (o nome do procedimento não deve ser colocado entre aspas).

Não para o fazer :
// Lista os "filhos" do nó "Sobremesas" em "TREE_RecipeTV"
Res = TreeListItem ( tree_ RecipeTV , "Receitas" + TAB + "Sobremesas" , "ExpandAll" )

INTERNO PROCEDIMENTO ExpandAll ( tree_ RecipeTV , ChildPath , ChildFound , Nível , Pointer )
...
END

DO:
// Lista os "filhos" do nó "Sobremesas" em "TREE_RecipeTV"
Res = TreeListItem ( tree_ RecipeTV , "Receitas" + TAB + "sobremesas" , ExpandAll )

INTERNO PROCEDIMENTO ExpandAll ( tree_ RecipeTV , ChildPath , ChildFound , Nível , Pointer )
...
END


Parâmetro de procedimento interno
O procedimento interno pode ser utilizada como parâmetro em um procedimento. Neste caso, o tipo de parâmetro será "Procedimento".

Exemplo:

// Declare o procedimento interno
procedimento interno MyInternalProcedure ()
// código executado durante a chamada para o procedimento passou no parâmetro
END

MyOtherProcedure ( MyInternalProcedure )

PROCESSO MyOtherProcedure ( p é Procedimento )

P ()


Acesso às variáveis ​​de um procedimento interno
As variáveis ​​declaradas no mesmo processo que a declaração do procedimento interno pode ser chamado no procedimento interno. Não há necessidade de usar variáveis ​​globais mais.

Exemplo:

s ElementList is string
s Separator is string = CR
TreeListItem ( TREE_ TreeeViewControl , "" , MyInternalProcedure )

INTERNAL PROCEDIMENTO MyInternalProcedure ( TreeViewName , Filial )
sElementList + = [ sSeparator ] + ramo
END


Procedimentos internos de nidificação
Os procedimentos internos podem ser aninhados. Cada procedimento interno pode acessar as variáveis ​​dos procedimentos que o incluem.

Exemplo:
ExternalVariable é int
Traço ( ExternalVariable )
MyInternalProcedure1 ()
INTERNO Procedure MyInternalProcedure1 ()
InternalVariable1 is int
Trace ( ExternalVariable + InternalVariable1 )
MyInternalProcedure2 ()
INTERNAL Procedure MyInternalProcedure2 ()
InternalVariable2 is int
Trace ( ExternalVariable + InternalVariable1 + InternalVariable2 )
END
END



Caso especial: Usando procedimentos internos com funções assíncronas
Os procedimentos internos podem ser utilizados como "chamada de retorno" para funções assíncronas.

ATENÇÃO: Neste caso, o código encontrado após a chamada para a função que está usando um procedimento WLanguage assíncrona será executado antes do código do procedimento interno.

Exemplo: Neste exemplo para o Windows Mobile, o código encontrado após AlbumPicker será executado antes do procedimento interno. O procedimento interno será chamado quando o seletor é validado pelo usuário.

AlbumPicker ( albumImage , PhotoSelection )
INTERNO PROCEDIMENTO PhotoSelection ( s ImagePath )
IMG_ ImageControl = s ImagePath
END
// Código executado após a função AlbumPicker mas
// antes do código do procedimento interno.


Limitações

Um procedimento interno não pode ser nomeado como os procedimentos que o contenham.
Dois procedimentos internos de mesmo nível não pode ter o mesmo nome, mesmo se elas são declaradas em diferentes blocos de código (SE ENTÃO MAIS, ...).
Um processo ou a um procedimento interno só pode chamar os seus procedimentos internos diretos. Em particular, um procedimento interno não pode chamar um procedimento interno do mesmo nível.
Os procedimentos internos não estão disponíveis na compilação dinâmica.
A execução de um procedimento interno não pode ser automatizado.
A gestão automática de erros não está disponível para os procedimentos internos.

Bons estudos!

:merci:

--
Adriano José Boller
______________________________________________
Consultor e Representante Oficial da
PcSoft no Brasil
+55 (41) 9949 1800
adrianoboller@gmail.com
skype: adrianoboller
http://wxinformatica.com.br/
Mensagem modificada, maio, 17 2016 - 4:46 AM


















Windev Mobile - 63/... - Txt - 3/... - Gerar Txt e Mandar Email









Video youtube



Nessa aula vamos gerar o txt e mandar por email

In this class we will generate the txt and send by email

Dans cette classe, nous allons générer le txt et envoyer par e-mail


Doc.windev.com/en-US/?3023025&name=Pocket_PC#development_environment_windev_mobile
Doc.pcsoft.fr/fr-FR/?3023025&name=windev_mobile_presentation


Blog - WinDev Mobile - Instalaca - Android 1/...
Blog - WinDev Mobile - Instalacao - Java 2/...
Blog - windev Mobile - MyExplorer 3/...
Blog - Windev Mobile - Android - Configurar Ansi 5/...
Blog - Windev Mobile - Layout - 6/.... 
Blog - Windev Mobile - Target_Code - 8/...
Blog - Windev Mobile - Agenda Cadastrar - 9/...
Blog - Windev Mobile - Agenda Mostrar - 10/...
Blog - Windev Mobile - Agenda Alterar - 11/...
Blog - Windev Mobile - Agenda Excluir - 12/...
Blog - Windev Mobile - HyperFile Error - 13/...
Blog - Windev Mobile -Tirar Foto - 14/... 
Blog - Windev Mobile - Pegar Foto Album - 15/...
Blog - Windev Mobile - hyperfil server - Acessar Rede/Could - Parte - 16/...
Blog - Windev Mobile - Query - Criar Consulta - Looper - Parte 17/...
Blog - Windev Mobile - Query - Tabela - Parte 18/...
Blog - Windev Mobile - Query - Filtro Acrescentar - Parte 19/...
Blog - Windev Mobile - Email - Parte 20/...
Blog - Windev Mobile - Analise Bolo Receita a/.. - Parte 21/...
Blog - Windev Mobile - Analise Bolo Receita b/... - Parte 22/...
Blog - Windev Mobile - Receita Bolo c/.. - Menu/Layout - Parte 23/...
Blog - Windev Mobile - Receita Bolo d/.. - Categoria - Parte 24/...
Blog - Widnev Mobile - Receita bolo e/.. - Categoria Altera/Exclui - Parte 25/...
Blog - Windev Mobile - 26/... - Receita Bolo - Combox Categoria
Blog - Windev Mobile - 27/.. - Receita Bolo - Tabela Bolo
Blog - Windev Mobile - 28/... - Xml - Retirar Conteudo Blog - Funcao
Blog - Windev Mobile - 29/... - Pdf - Ler Pdf Direto do Aparelho Android 
Blog - Windev Mobile - 30/... - Pdf - Ler Pdf Direto do Aparelho Android - Final 
Blog - Windev Mobile - 31/... - Looper - Criar Manual e Selecionar Informação
Blog - Windev Mobile - 33/.. Xml - Ler turmas e Mostrar Looper  
Blog - Windev Mobile - 35/... - Looper Mostrar Todos Dados Alunos 
Blog - Windev Mobile - 36/... - Looper Turma Mostra direto Alunos 
Blog - Windev Mobile - 37/... - Looper - Pegando Pelo WebService 
Blog - Windev Mobile - 38/... - Windows  - Mudar o Nome doTitulo
Blog - Windev Mobile - 39/... - Xml - Ler Posicao Inicial/Final - turmar Alunos 
Blog - Windev Mobile - 40/... - Xml - Ler Posicao Inicial/final/Especialidade/Refeito Funcao 
Blog - WinDev Mobile - 41/... HyperFile Classic Mobile 
Blog - WinDev Mobile - 42/... Matos Pedido - WinDevMobile 21 - Layout
Blog - WinDev Mobile - 43/... Matos Pedido 1/... - Tela Login
Blog - WinDev Mobile - 44/... Matos Pedido 2/... - Android Não Funciona
Blog - WinDev Mobile - 45/... Matos Pedido 3/... - Criando Conexão Classic
Blog - WinDev Mobile - 46/... Matos Pedido 4/... - Criando Grupo de Usuários
Blog - WinDev Mobile - 47/... Matos Pedido 5/... - Analise Grupo de Usuarios e Usuarios
Blog - WinDev Mobile - 48/... Matos Pedido 6/... Tabela usuarios
Blog - WinDev Mobile - 49/... Matos Pedido 7/... Tabela Usuarios Ajustes
Blog - WinDev Mobile - 50/... Matos Pedido 8/... Finalizando usuarios/Foto
Blog - WinDev Mobile - 51/... Matos pedido 9/... fazendo Conexão Rede Servidor
Blog - WinDev Mobile - 52/... Matos Pedido 10/... Codigo/Cnpj/Cpf Cliente
Blog - WinDev Mobile - 53/... Matos Pedido 11/... Busca Cliente
Blog - WinDev Mobile - 54/... Matos Pedido 12/... Codigo Produto e Busca
Blog - WinDev Mobile - 55/... Matos Pedido 13/... Lendo Informacoes Produto
Blog - WinDev Mobile - 56/... Matos Pedido 14/... Digitando Quantidade/Preco e Calculando total
Blog - WinDev Mobile - 57/... Matos Pedido 15/... Tabela de Itens Vendidos
Blog - WinDev Mobile - 58/... Matos Pedido 16/... Totaliza Valor
Blog - WinDev Mobile - 59/... Matos Pedido 17/... Criar Botao Grava Pedido
Blog - WinDev Mobile - 60/... Matos Pedido 18/... gravarPedido e mostrar Desktop
Blog - WinDev Mobile - 61/... Txt - 1/... - Ler Cliente/Gerar Edt 
Blog - WinDev Mobile - 62/... Txt - 2/... - Ler Looper Cliente/Gerar Edt
Blog - WinDev Mobile - 63/... Txt - 3/... Gerar Txt e Mandar Email
Blog - WinDev Mobile - 64/... Matos pedido 19/... Ler Txt e Gravar No Cliente
Blog - WinDev Mobile - 65/... Matos Pedido 20/.. Ler Cliente e Gravar no arquivo Txt
Blog - WinDev Mobile - 66/... Matos Pedido 21/... Ler Txt e Gravar dados No Cliente Mobile
Blog - WinDev Mobile - 67 /... painel de dispositivos
Blog - WinDev Mobile - 68 /... Layout Ajustar


















Teste

Teste
teste