Classe: MsmGet

Cria um objeto visual para edição de campos baseado no Dicionário de Campos (SX3) ou em um array.


New

Contrutor da Classe MsMGet. Retorna uma nova instância do Objeto da Classe MsMGet.


MsmGet(): New ( [ cAlias], [ uPar2], < nOpc>, <lUnqFocus>, [ uPar5], [ uPar6], [ aAcho], [ aPos], [ aCpos], [ nModelo], [ uPar11], [ uPar12], [ uPar13], [ oWnd], [ lF3], [ lMemoria], [ lColumn], [ caTela], [ lNoFolder], [ lProperty], [ aField], [ aFolder], [ lCreate], [ lNoMDIStretch], [ uPar25] ) -->



NomeTipoDescriçãoObrigatórioReferência
cAliasCaracterTabela cadastrada no Dicionário de Tabelas (SX2) que será editada.

uPar2NuloParâmetro não utilizado.

nOpcNuméricoTipo de edição do objeto(Inclusão, Alteração, Exclusão, Visualização)X
uPar4NuloParâmetro não utilizado.

uPar5NuloParâmetro não utilizado.

uPar6NuloParâmetro não utilizado.

aAchoVetorVetor 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"

aPosVetorVetor com coordenadas para criação da enchoice no formato {"TOP","LEFT","BOTTOM","RIGHT"}

aCposVetorVetor com nome dos campos que poderão ser editados.

nModeloNuméricoSe for diferente de 1 desabilita execução de gatilhos estrangeiros.

uPar11NuloParâmetro não utilizado.

uPar12NuloParâmetro não utilizado.

uPar13NuloParâmetro não utilizado.

oWndObjetoObjeto (janela, painel, etc) onde a enchoice será criada

lF3LógicoIndica se a enchoice esta sendo criada em uma consulta F3 para utilizar variáveis de memória. Valor default é .F.

lMemoriaLógicoIndica se a enchoice utilizará variáveis de memória ou os campos da tabela na edição. Valor default é .F.

lColumnLógicoIndica se a apresentação dos campos será em forma de coluna. Valor default é .F.

caTelaCaracterNome da variável tipo "private" que a enchoice utilizará no lugar da variável aTela.

lNoFolderLógicoIndica se a enchoice não irá utilizar as Pastas de Cadastro (SXA). Valor default.F.

lPropertyLógicoIndica se a enchoice não utilizará as variáveis tipo "private" aTela e aGets, somente suas propriedades com seus respectivos nomes. Valor default .F.

aFieldVetorVetor com os campos que serão mostrados na Enchoice caso o SX3 não seja utilizado.

aFolderVetorVetor com o nome das pastas caso o SX3 não seja utilizado.

lCreateLógicoIndica se cria as pastas especificadas no parâmetro aFolder. Valor default é .F.

lNoMDIStretchLógicoDefine se o objeto não será alinhado conforme o espaço existente na janela. Valor default é .F.

uPar25CaracterCampo reservado.

lOrderAChoLógicoIndica se os campos definidos em aAcho serão exibidos na ordem criada (.T.) ou na ordem do SX3 (.F.). Valor default é .F.

lUnqFocusLógicoCaso o msmget tenha apenas um campo indica se ele receberá foco. Valor default  .T. (Disponível a partir da LIB Label 20220502)




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
6Picture
7Valid
8Obrigat
9Nivel
10Inicializador Padrão
11F3
12When
13Visual
14Chave
15Box - Opção do combo
16Folder
17Não Alterável
18PictVar
19Gatilho



#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 ( ) -->

Refresh

Método de atualização do objeto


MsmGet(): Refresh ( ) -->

SetFocus

Este método atribui o foco para o objeto.


MsmGet(): SetFocus ( ) -->

Show

Este método habilita a visualização de todos os controles do folder do objeto MsMGet ativo.


MsmGet(): Show ( ) -->



PropriedadeDescriçãoTipo


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.


Protheus 10


  • Sem rótulos