PC SOFT
DEPOT EN LIGNE
POUR WINDEVWEBDEV ET WINDEV MOBILE

Exemplo CRUD WINDEV Mobile - com planos, oop, passagem de parametros, menu e login do sistema
Publié par Boller
dans la catégorie Outils
Nouveautés



Description
Exemplo CRUD WINDEV Mobile - com planos, oop, passagem de parametros, menu e login do sistema

https://www.youtube.com/watch?v=tLlaslkyqIQ
tem essa aula para explicar sobre o assunto
vou montar um CRUD para o Lino
logo mando aqui o exemplo
para todos
//Cadastro e Acesso de login
IF EDT_T003_nome = "" OR EDT_T003_Senha = "" THEN
RETURN
ELSE

HReset(t003_usuarios)

IF HReadSeek(t003_usuarios,t003_chave_composta,[EDT_T003_nome,EDT_T003_Senha],hIdentical) = True THEN //BUSCA COM CHAVE COMPOSTA

OpenMobileWindow(WIN_Menu,EDT_T003_nome)

ELSE

Info("Usuário ou senha estão errados ou não existe o cadastro")

//1 : Sim
//2 : Não
SWITCH Dialog("Deseja cadastrar esse usuario e senha?")
// Sim
CASE 1
//cadastrar
t003_usuarios.t003_nome = EDT_T003_nome
t003_usuarios.t003_senha = EDT_T003_Senha
HAdd(t003_usuarios)
// Não
CASE 2

END

END

END

// estou fazendo com planes e com janelas table form
para vc ter os dois exemplos
e um table pai x filho
pai x filhos
para vc entender como relacionar as tabelas
vai pro repositorio o exemplo dai quem quiser melhorar o exemplo ou colocar recursos é só ir me mandando as novas versoes
PROCEDURE Evento_Selecionar()

nx is int = TableInfoXY(TABLE_T000_config,tiLineNumber,MouseXPos(),MouseYPos())

IF nx > 0 THEN

gn_id = TABLE_T000_config[nx].COL_T000_config_ID

IF gn_id > 0 THEN

ExecuteProcess(BTN_Alterar,trtClick)

END

ENDPROCEDURE Evento_Selecionar()

nx is int = TableInfoXY(TABLE_T000_config,tiLineNumber,MouseXPos(),MouseYPos())

IF nx > 0 THEN

gn_id = TABLE_T000_config[nx].COL_T000_config_ID

IF gn_id > 0 THEN

ExecuteProcess(BTN_Alterar,trtClick)

END

END

--------------
PROCEDURE Evento_Incluir()

Reset(GR_Campos)

HReset(t000_config)

gn_acao = 1

MyWindow..Plane = 2

-----------------
PROCEDURE Evento_Alterar()

IF gn_id > 0 THEN

Reset(GR_Campos)

HReset(t000_config)

IF HReadSeek(t000_config,t000_config_ID,gn_id,hIdentical) = True THEN

gn_acao = 2

FileToScreen()

END

END

-------------------------
PROCEDURE Evento_Excluir()

IF gn_id > 0 THEN

Reset(GR_Campos)

HReset(t000_config)

IF HReadSeek(t000_config,t000_config_ID,gn_id,hIdentical) = True THEN

gn_acao = 3

HDelete(t000_config)

ToastDisplay("Excluido com sucesso")

TableDisplay(TABLE_T000_config,taInit)

END

END

plane 1
plano 2

PROCEDURE Evento_Gravar()

ScreenToFile()

IF gn_acao = 1 THEN

HAdd(t000_config)

ELSE IF gn_acao = 2 THEN

HModify(t000_config)

END
-----------------
PROCEDURE Evento_Cancelar()

Reset(GR_Campos)

MyWindow..Plane = 1

-------------
cria um grupo dos campos
GR_Campos com o botao direito laçando eles
e da um nome
no caso GR_Campos
assim nao tem que zerar campo a campo
zera o grupo e pronto
e o hreset eu uso para matar o ponteiro e nao ter nenhum registro em foco antigo e matar registros ja gravados, evita sobreposição acidenteal de dados
---------------
Assim estando em procedure local posso
selecionar e arrastar - drag-in-drop para outra janela e só fazer os ajustes
ou
Poderia fazer uma Classe OOP central e global e usar indirection e fazer um só codigo
vai do gosto
vou fazer os modelos com Table Form que é o mais antigo de fazer usando passagem de paramentros,
outro exemplo com planes sem usar parametros pois ja esta tudo disponivel nam emsma janela mas em camadas diferentes
e o OOP
ate o final da tarde concluo o exemplo dai podem usar como base para seus projetos

PROCEDURE Evento_Gravar()

ScreenToFile()

IF gn_acao = 1 THEN

HAdd(t000_config)

ELSE IF gn_acao = 2 THEN

HModify(t000_config)

END

TableDisplay(TABLE_T000_config,taInit)

MyWindow..Plane = 1

--------------
o tabledisplay é um refresh na table grid
O QUE VAI NO BOTAO INCLUIR:
Classe_OOP_CRUD.Evento_Incluir("GR_CAMPOS","t002_empresas",MyWindow..Name)
apenas uma linha
Simplificando o processo
de manuteção
uma classe central faz tudo
passa os objetos por parametro
e usa o indirection para ajustar os nomes
-----------------

PROCEDURE GLOBAL Evento_Selecionar(Janela, tablegrid, Col_Campo_ID, Botao_Alterar)

indirection is string = Janela +"."+ tablegrid

nx is int = TableInfoXY(indirection,tiLineNumber,MouseXPos(),MouseYPos())

IF nx > 0 THEN

indirection = Janela +"."+ tablegrid+"[nx]."+Col_Campo_ID

gn_id = {indirection}

IF gn_id > 0 THEN

indirection = Janela +"."+ Botao_Alterar

ExecuteProcess({indirection},trtClick)

END

END

--------------------
indirection deve ser montado antes da { }
nao pode montar a string dentro das { } de indirection
Illustrations, copies d'écran
none
none
Avis des utilisateurs
(Pour noter la ressource, cliquez sur Ecrire un avis)
Aucun avis ou commentaire ? Soyez le premier !
A PROPOS
EVALUATION :
00Aucune évaluation
TELECHARGEMENTS :
88
PUBLIÉE :
05 décembre 2021
VERSION :
27
CONCERNE :
WINDEV, WEBDEV, WINDEV Mobile
Version minimale : 27
TAILLE :
10,2 Mo