Função: Modelo3
| Versões: | Microsiga Protheus 8.11 , Protheus 10 | | Compatível Países: | Todos | | Sistemas Operacionais: | Todos | | Compatível às Bases de Dados: | Todos | | Nível de Acesso: | Nível 1 (Acesso Clientes) | | Idiomas: | Espanhol , Inglês |
Descrição:Exibe formulário para cadastro contendo uma enchoice e uma getdados. Sintaxe:Modelo3 ( cTitulocAliascAlias2 [ aMyEncho ] [ cLinhaOk ] [ cTudoOk ] [ nOpcE ] [ nOpcG ] [ cFieldOk ] [ lVirtual ] [ nLinhas ] [ aAltEnchoice ] [ nFreeze ] [ aButtons ] [ aCordW ] [ nSizeHeader ] ) --> lRet Retorno: lRetlRet (logico) Retorno .T. Confirma / .F. Abandona Exemplos #include "Parâmetros:
| Nome |
|
| Tipo |
|
| Descrição |
|
| Default |
|
| Obrigatório |
|
| Referência |
|
| cTitulo |
|
| Caracter |
|
| Titulo da janela |
|
|
|
|
| X |
|
|
|
|
| cAlias |
|
| Caracter |
|
| Alias da Enchoice |
|
|
|
|
| X |
|
|
|
|
| cAlias2 |
|
| Caracter |
|
| Alias da Getdados |
|
|
|
|
| X |
|
|
|
|
| aMyEncho |
|
| Vetor |
|
| Array com campos da enchoice |
|
|
|
|
|
|
|
|
|
|
| cLinhaOk |
|
| Caracter |
|
| Função para validação da linha |
|
|
|
|
|
|
|
|
|
|
| cTudoOk |
|
| Caracter |
|
| Função para validação na confirmação |
|
|
|
|
|
|
|
|
|
|
| nOpcE |
|
| Numérico |
|
| nOpc da Enchoice |
|
|
|
|
|
|
|
|
|
|
| nOpcG |
|
| Numérico |
|
| nOpc da Getdados |
|
|
|
|
|
|
|
|
|
|
| cFieldOk |
|
| Caracter |
|
| Validação para todos os campos da GetDados |
|
|
|
|
|
|
|
|
|
|
| lVirtual |
|
| Lógico |
|
| Permite visualizar campos virtuais na enchoice |
|
|
|
|
|
|
|
|
|
|
| nLinhas |
|
| Numérico |
|
| Número máximo de linhas na getdados |
|
|
|
|
|
|
|
|
|
|
| aAltEnchoice |
|
| Vetor |
|
| Array com campos alteráveis da Enchoice |
|
|
|
|
|
|
|
|
|
|
| nFreeze |
|
| Numérico |
|
| Congelamento das colunas. |
|
|
|
|
|
|
|
|
|
|
| aButtons |
|
| Vetor |
|
| Array com botões de usuário na enchoicebar |
|
|
|
|
|
|
|
|
|
|
| aCordW |
|
| Vetor |
|
| Coordenadas da janela |
|
|
|
|
|
|
|
|
|
|
| nSizeHeader |
|
| Numérico |
|
| Altura da enchoice |
|
|
|
|
|
|
|
|
|
|
Exemplo: | Bloco de código |
|---|
| language | text |
|---|
| linenumbers | true |
|---|
| #include "protheus.ch"
#include "rwmake.ch" |
User Function RDMOD3()
Local cOpcao as character
Local nOpcE as numeric
Local nOpcG as numeric
Local nUsado |
Local _niaRotina as numeric
Local _ni as numeric
Private aHeader as array
Private aRotina as array
Private aCols as array
aRotina := {{ "Pesquisa","AxPesqui", 0 , 1}, |
; { "Visual","AxVisual", 0 , 2}, |
; { "Inclui","AxInclui", 0 , 3}, |
; { "Altera","AxAltera", 0 , 4, 20 }, |
; { "Exclui","AxDeleta", 0 , 5, 21 }}
//+--------------------------------------------------------------+
//| Opcoes de acesso para a Modelo 3 |
//+--------------------------------------------------------------+
cOpcao:= "INCLUIR"
Do Case
Case cOpcao=="INCLUIR"; nOpcE:=3 ; nOpcG:=3
Case cOpcao=="ALTERAR"; nOpcE:=3 ; nOpcG:=3
Case cOpcao=="VISUALIZAR"; nOpcE:=2 ; nOpcG:= |
2EndCaseDbSelectArea2
EndCase
DbSelectArea("SC5")
DbSetOrder(1)
DbGotop()
//+--------------------------------------------------------------+
//| Cria variaveis M->????? da Enchoice |
//+--------------------------------------------------------------+
RegToMemory("SC5", (cOpcao=="INCLUIR"))
//+--------------------------------------------------------------+
//| Cria aHeader e aCols da GetDados |
//+--------------------------------------------------------------+
nUsado := |
0dbSelectArea 0
dbSelectArea("SX3")
DbSetOrder(1)
DbSeek("SC6")
aHeader := {}
While !Eof() .And. ( |
x3arquivoARQUIVO == "SC6")
If Alltrim( |
x3campoCAMPO) == "C6_ITEM"
dbSkip()
Loop
Endif
If X3USO( |
x3usadocNivel>=x3_nivel cNivel >= X3_NIVEL
nUsado := nUsado+1
Aadd(aHeader,{ TRIM( |
x3titulo x3_campo, x3_picture,; ;
AllTrim(X3_CAMPO),;
X3_PICTURE,;
|
x3tamanho x3_decimal,;
X3_DECIMAL,;
"AllwaysTrue()",;
|
x3usado, x3_tipo, x3_arquivo, x3_contextUSADO,;
X3_TIPO,;
X3_ARQUIVO,;
X3_CONTEXT } )
Endif
dbSkip() |
EndIf
EndDo
If cOpcao == "INCLUIR"
aCols:={Array(nUsado+1)}
aCols[1, nUsado+1] := .F.
For _ni := 1 to nUsado
aCols[1, _ni] := CriaVar(aHeader[_ni, 2]) |
NextElse aCols
Next
Else
aCols := {}
dbSelectArea("SC6")
dbSetOrder(1)
dbSeek(xFilial()+M->C5_NUM)
While !eof() .and. SC6->C6_NUM == M->C5_NUM
AADD(aCols, Array(nUsado+1))
For _ni := 1 to nUsado
aCols[Len(aCols), _ni] := FieldGet(FieldPos(aHeader[_ni, 2]))
Next
aCols[Len(aCols), nUsado+1] := .F.
dbSkip() |
EndEndifIf
EndDo
Endif
If Len(aCols) |
>0 > 0
//+--------------------------------------------------------------+
//| Executa a Modelo 3 |
//+--------------------------------------------------------------+
cTitulo := "Teste de Modelo3 |
()"
cAliasEnchoice := "SC5"
cAliasGetD := "SC6"
cLinOk := "AllwaysTrue()"
cTudOk := "AllwaysTrue()"
cFieldOk := "AllwaysTrue()" |
// aCpoEnchoice:={} //{"C5_CLIENTE"}
_lRet:= Modelo3(cTitulo, cAliasEnchoice, cAliasGetD,, cLinOk, cTudOk, nOpcE, nOpcG, cFieldOk)
//+--------------------------------------------------------------+
//| Executar processamento |
//+--------------------------------------------------------------+
If _lRet
Aviso("Modelo3()", "Confirmada operacao!", {"Ok"}) |
EndifEndifReturn Parâmetros: | Nome | Tipo | Descrição | Default | Obrigatório | Referência | cTitulo | Caracter | Titulo da janela | X | cAlias | Caracter | Alias da Enchoice | X | cAlias2 | Caracter | Alias da Getdados | X | aMyEncho | Vetor | Array com campos da enchoice | cLinhaOk | Caracter | Função para validação da linha | cTudoOk | Caracter | Função para validação na confirmação | nOpcE | Numérico | nOpc da Enchoice | nOpcG | Numérico | nOpc da Getdados | cFieldOk | Caracter | Validação para todos os campos da GetDados | lVirtual | Lógico | Permite visualizar campos virtuais na enchoice | nLinhas | Numérico | Número máximo de linhas na getdados | aAltEnchoice | Vetor | Array com campos alteráveis da Enchoice | nFreeze | Numérico | Congelamento das colunas. | aButtons | Vetor | Array com botões de usuário na enchoicebar | aCordW | Vetor | Coordenadas da janela | nSizeHeader | Numérico | Altura da enchoice |