Histórico da Página
Composition Setup |
---|
import.css=/download/attachments/327912/newLayout.css |
Portuguese | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
Classe: MsmGet
|
Nome | Tipo | Descrição | Obrigatório | Referência |
cAlias | Caracter | Tabela cadastrada no Dicionário de Tabelas (SX2) que será editada. | ||
uPar2 | Nulo | Parâmetro não utilizado. | ||
nOpc | Numérico | Tipo de edição do objeto(Inclusão, Alteração, Exclusão, Visualização) | X | |
uPar4 | Nulo | Parâmetro não utilizado. | ||
uPar5 | Nulo | Parâmetro não utilizado. | ||
uPar6 | Nulo | Parâmetro não utilizado. | ||
aAcho | Vetor | Vetor com nome dos campos que serão exibidos. Os campos de usuário sempre serão exibidos se não existir no parametro um elemento com a expressão "NOUSER" | ||
aPos | Vetor | Vetor com coordenadas para criação da enchoice no formato {"TOP","LEFT","BOTTOM","RIGHT"} | ||
aCpos | Vetor | Vetor com nome dos campos que poderão ser editados. | ||
nModelo | Numérico | Se for diferente de 1 desabilita execução de gatilhos estrangeiros. | ||
uPar11 | Nulo | Parâmetro não utilizado. | ||
uPar12 | Nulo | Parâmetro não utilizado. | ||
uPar13 | Nulo | Parâmetro não utilizado. | ||
oWnd | Objeto | Objeto (janela, painel, etc) onde a enchoice será criada | ||
lF3 | Lógico | Indica se a enchoice esta sendo criada em uma consulta F3 para utilizar variáveis de memória. Valor default é .F. | ||
lMemoria | Lógico | Indica se a enchoice utilizará variáveis de memória ou os campos da tabela na edição. Valor default é .F. | ||
lColumn | Lógico | Indica se a apresentação dos campos será em forma de coluna. Valor default é .F. | ||
caTela | Caracter | Nome da variável tipo "private" que a enchoice utilizará no lugar da variável aTela. | ||
lNoFolder | Lógico | Indica se a enchoice não irá utilizar as Pastas de Cadastro (SXA). Valor default.F. | ||
lProperty | Lógico | Indica se a enchoice não utilizará as variáveis tipo "private" aTela e aGets, somente suas propriedades com seus respectivos nomes. Valor default .F. | ||
aField | Vetor | Vetor com os campos que serão mostrados na Enchoice caso o SX3 não seja utilizado. | ||
aFolder | Vetor | Vetor com o nome das pastas caso o SX3 não seja utilizado. | ||
lCreate | Lógico | Indica se cria as pastas especificadas no parâmetro aFolder. Valor default é .F. | ||
lNoMDIStretch | Lógico | Define se o objeto não será alinhado conforme o espaço existente na janela. Valor default é .F. | ||
uPar25 | Caracter | Campo reservado. |
Parâmetro nOpc
Caso a variável Private aRotina tenha sido declarada no fonte, o parâmetro nOpc deverá ser informado com o número da linha do vetor aRotina. Caso contrário utilizará sua propriedade com o mesmo nome com seguinte formato:
- 1ª linha: Pesquisar
- 2ª linha: Visualizar
- 3ª linha: Incluir
- 4ª linha: Alterar
- 5ª linha: Exclui
- aRotina
Vetor com as rotinas que serão executadas na MBrowse e que definira o tipo de operação que esta sendo executada (inclusão, alteração, exclusão, visualização, pesquisa, ...) no formato:
Elemento Conteúdo 1 Título 2 Rotina 3 Reservado 4 Operação (1 - pesquisa; 2 - visualização; 3 - inclusão; 4 - alteração; 5 - exclusão) 5 Acesso relacionado a rotina, se esta posição não for informada nenhum acesso será validado
Parâmetro aField
Quando o desenvolvedor não utilizar a MsmGet baseada no SX3, deverá informar o parâmetro aField com a seguinte estrutura:
Elemento | Conteúdo |
1 | Título |
2 | Campo |
3 | Tipo |
4 | Tamanho |
5 | Decimal |
6 | Picture |
7 | Valid |
8 | Obrigat |
9 | Nivel |
10 | Inicializador Padrão |
11 | F3 |
12 | When |
13 | Visual |
14 | Chave |
15 | Box - Opção do combo |
16 | Folder |
17 | Não Alterável |
18 | PictVar |
19 | Gatilho |
#include "protheus.ch"#include "msmgadd.ch"User Function MyMrbwEnch()Private cCadastro := "Cadastro de Clientes"Private aRotina := {{"Pesquisar" , "axPesqui" , 0, 1},; {"Visualizar" , "U_MyMsmGet" , 0, 2}}DbSelectArea("SA1")DbSetOrder(1)MBrowse(6,1,22,75,"SA1")ReturnUser Function MyMsmGet(cAlias,nReg,nOpc)Local oDlgLocal oEnch Local lMemoria := .T. Local lCreate := .T.Local lSX3 := .T. //verifica se irá criar a enchoice a partir do SX3 ou a partir de um vetor.Local aPos := {000,000,400,600} //posição da enchoice na telaLocal aCpoEnch := {} //campos que serão mostrados na enchoiceLocal aAlterEnch := {"A1_COD", "A1_NOME"} //habilita estes campos para ediçãoLocal aField := {} Local aFolder := {"Cadastrais","Adm/Fin.", "Fiscais", "Vendas"} Local cSvAlias := Alias() /*Estrutura do vetor aField [1] - Titulo [2] - campo [3] - Tipo [4] - Tamanho [5] - Decimal [6] - Picture [7] - Valid [8] - Obrigat [9] - Nivel [10]- Inicializador Padrão [11]- F3 [12]- when [13]- visual [14]- chave [15]- box [16]- folder [17]- nao alteravel [18]- pictvar [19]- gatilho*/ DbSelectArea("SX3")DbSetOrder(1)DbSeek(cAlias)While !Eof() .And. SX3->X3_ARQUIVO == cAlias If !(SX3->X3_CAMPO $ "A1_FILIAL") .And. X3Uso(SX3->X3_USADO) AADD(aCpoEnch,SX3->X3_CAMPO) EndIf // Exemplo da estrutura do array aField // Aadd(aField, {"Codigo", "A1_COD", "C", 6, 0, "@!", 'IIF(Empty(M->A1_LOJA),.T.,ExistChav("SA1",M->A1_COD+M->A1_LOJA,,"EXISTCLI"))', .F., 1, "", "", "", .F., .F., "", 1, .F., "", "S"}) IF Alltrim(SX3->X3_CAMPO) $ "A1_COD|A1_NOME|A1_DESC|A1_COND|A1_ENDCOB|A1_ENDENT" Aadd(aField, {X3TITULO(),; SX3->X3_CAMPO,; SX3->X3_TIPO,; SX3->X3_TAMANHO,; SX3->X3_DECIMAL,; SX3->X3_PICTURE,; SX3->X3_VALID,; .F.,; SX3->X3_NIVEL,; SX3->X3_RELACAO,; SX3->X3_F3,; SX3->X3_WHEN,; .F.,; .F.,; SX3->X3_CBOX,; Val(SX3->X3_FOLDER),; .F.,; SX3->X3_PICTVAR,; SX3->X3_TRIGGER}) EndIf DbSkip()End DEFINE MSDIALOG oDlg TITLE "Teste MsmGet" FROM 0,0 TO 355,600 PIXEL oDlg:lMaximized := .T.RegToMemory(cAlias, If(nOpc==3,.T.,.F.))If lSX3 //exemplo de utilização da enchoice lendo as informações do SX3 - quando a variável lSX3 for .T. oEnch := MsmGet():New(cAlias,nReg,nOpc,/*aCRA*/,/*cLetras*/,/*cTexto*/,aCpoEnch,aPos,aAlterEnch,; /*nModelo*/,/*nColMens*/,/*cMensagem*/, /*cTudoOk*/,oDlg,/*lF3*/,lMemoria,/*lColumn*/,; /*caTela*/,/*lNoFolder*/,/*lProperty*/,/*aField*/,/*aFolder*/,/*lCreate*/,; /*lNoMDIStretch*/,/*cTela*/) Else //exemplo de utilização da enchoice por array oEnch := MsmGet():New(,,nOpc,/*aCRA*/,/*cLetras*/,/*cTexto*/,aCpoEnch,aPos,aAlterEnch,/*nModelo*/,; /*nColMens*/,/*cMensagem*/, /*cTudoOk*/,oDlg,/*lF3*/,lMemoria,/*lColumn*/,/*caTela*/,; /*lNoFolder*/,/*lProperty*/,aField,aFolder,lCreate,/*lNoMDIStretch*/,/*cTela*/) EndIf oEnch:oBox:align := CONTROL_ALIGN_ALLCLIENTACTIVATE MSDIALOG oDlg CENTER ;ON INIT EnchoiceBar(oDlg,{|| oDlg:End()},{|| oDlg:End()},,,,.F.,.F.) If !Empty(cSvAlias) DbSelectArea(cSvAlias)EndIfreturn
Disable
Este método desabilita a edição de todos os controles do folder do objeto MsMGet ativo.
MsmGet(): Disable ( ) -->
Enable
Este metodo habilita a edição de todos os controles do folder do objeto MsMGet ativo.
MsmGet(): Enable ( ) -->
Hide
Este método inibe a visualização de todos os controles do folder do objeto MsMGet ativo.
MsmGet(): Hide ( ) -->
Show
Este método habilita a visualização de todos os controles do folder do objeto MsMGet ativo.
MsmGet(): Show ( ) -->
Propriedade | Descrição | Tipo |
Array of Record |
A validação dos campos criados na enchoice é executada na seguinte ordem: validação de usuario (X3_VLDUSER) , depois validação do sistema (X3_VALID) e por último a trigger.