mp-MsNewGetDados-150513-0952-710

19
MsNewGetDados Colapse ALL Expand ALL Classe: MsNewGetDados Objeto tipo lista com uma ou mais colunas para cadastramento de dados  baseado em um vetor.A consulta padrão, validação do usuário e gatilhos estarão habilitados se o campo estiver cadastrado no Dicionário de Dados (SX3/SX7) e apresentar estas opções disponíveis. Hierarquia Construtores New New Cria o objeto MsNewGetDados. Sintaxe MsNewGetDados(): New ( [ nTop], [ nLeft], [ nBottom], [ nRight ], [ nStyle], [ cLinhaOk], [ cTudoOk], [ cIniCpos], [ aAlter], [ nFreeze], [ nMax], [ cFieldOk], [ cSuperDel], [ cDelOk], [ oWnd], [ aPartHeader], [ aParCols], [ uChange], [ cTela] ) --> Objeto Parâmetros Nome Tipo Descrição Obrigatório Referência nTop Numérico Distancia entre a MsNewGetDados e o extremidade superior do objeto que a contém. nLeft Numérico Distancia entre a MsNewGetDados e o extremidade esquerda do objeto que a contém.

Transcript of mp-MsNewGetDados-150513-0952-710

Page 1: mp-MsNewGetDados-150513-0952-710

7/16/2019 mp-MsNewGetDados-150513-0952-710

http://slidepdf.com/reader/full/mp-msnewgetdados-150513-0952-710 1/19

MsNewGetDados

Colapse ALLExpand ALLClasse: MsNewGetDados

Objeto tipo lista com uma ou mais colunas para cadastramento de dados baseado em um vetor.A consulta padrão, validação do usuário e gatilhosestarão habilitados se o campo estiver cadastrado no Dicionário deDados (SX3/SX7) e apresentar estas opções disponíveis.

Hierarquia

ConstrutoresNew

New

Cria o objeto MsNewGetDados.

SintaxeMsNewGetDados(): New ( [ nTop], [ nLeft], [ nBottom], [ nRight ], [ nStyle], [ cLinhaOk], [ cTudoOk], [ cIniCpos], [

aAlter], [ nFreeze], [ nMax], [ cFieldOk], [ cSuperDel], [ cDelOk], [ oWnd], [ aPartHeader], [ aParCols], [ uChange],

[ cTela] ) --> Objeto

Parâmetros

Nome Tipo Descrição Obrigatório Referência

nTop Numérico Distancia entre a

MsNewGetDados e

o extremidade

superior do objeto

que a contém.

nLeft Numérico Distancia entre a

MsNewGetDados e

o extremidade

esquerda do objeto

que a contém.

Page 2: mp-MsNewGetDados-150513-0952-710

7/16/2019 mp-MsNewGetDados-150513-0952-710

http://slidepdf.com/reader/full/mp-msnewgetdados-150513-0952-710 2/19

nBottom Numérico Distancia entre a

MsNewGetDados e

o extremidade

inferior do objeto

que a contém.

nRight Numérico Distancia entre a

MsNewGetDados e

o extremidade

direita do objeto

que a contém.

nStyle Numérico Essa nova

propriedade,

passada via

parâmetro, substitui

a passagem das

variáveis nOpc.

Pode ser utilizada

GD_INSERT +

GD_UPDATE +

GD_DELETE para

criar a flexibilidade

da

MsNewGetdados.

cLinhaOk Caracter Função executada

para validar o

contexto da linha

atual do aCols.

cTudoOk Caracter Função executada

para validar ocontexto geral da

MsNewGetDados

(todo aCols).

cIniCpos Caracter Nome dos campos

do tipo caracter que

utilizarão

incremento

automático. Este

parametro deve ser

no formato “+++...”.

aAlter Array of Record Vetor com os

campos que

poderão ser

alterados.

Page 3: mp-MsNewGetDados-150513-0952-710

7/16/2019 mp-MsNewGetDados-150513-0952-710

http://slidepdf.com/reader/full/mp-msnewgetdados-150513-0952-710 3/19

nFreeze Numérico Congela a coluna

da esquerda para a

direita. Se 0 não

congela, se 1

congela a primeira

coluna. Obs:

atualmente só é

possivel congelar aprimeira coluna,

devido a limitação

do objeto.

nMax Numérico Número máximo de

linhas permitidas.

Valor padrão 99.

cFieldOk Caracter Função executada

na validação do

campo.

cSuperDel Caracter Função executadaquando

pressionada as

teclas +.

cDelOk Caracter Função executada

para validar a

exclusão de uma

linha do aCols.

oWnd Objeto Objeto no qual a

MsGetDados será

criada.

aPartHeader Array of Record aHeader

aParCols Array of Record Acols

uChange Bloco de código Bloco de execução

a ser executado na

propriedade

bChange do Objeto.

cTela Caracter String contendo os

campos contidos no

X3_TELA.

Retorno()Objeto

Objeto MsNewGetDados

Observações

Page 4: mp-MsNewGetDados-150513-0952-710

7/16/2019 mp-MsNewGetDados-150513-0952-710

http://slidepdf.com/reader/full/mp-msnewgetdados-150513-0952-710 4/19

LinhaOk, TudoOk e outras funções

Todas as funções (como LinhaOK e TudoOk) chamadas apartir do objeto poderão fazer referência as variáveisaCols e aHeader, pois a MsNewGetDados as cria como

Private.Tratamento do aHeader e Acols

aHeader --> Existe um tratamento interno que inviabiliza asobreposição de seu conteúdo após a criação doobjeto.aCols--> a última coluna destinada a Deleção da Linhapassa a ser obrigatória (inclusive para as opçõesvisualização e exclusão).

aHeader 

Vetor com informações das colunas no formato:

Elemento Conteúdo

1 Título

2 Campo

3 Picture

4 Tamanho

5 Decimal

6 Validação

7 Reservado

8 Tipo

9 Reservado

10 Reservado

aCols 

Vetor com as linhas a serem editadas. As colunas devemser construídas com base no aHeader mais uma ultimacom valor lógico que determina se a linha foi excluída.

Page 5: mp-MsNewGetDados-150513-0952-710

7/16/2019 mp-MsNewGetDados-150513-0952-710

http://slidepdf.com/reader/full/mp-msnewgetdados-150513-0952-710 5/19

MétodosAddActionAddAction

Adiciona ação ao campo editável.

SintaxeMsNewGetDados(): AddAction ( [ cCampo], [ bAction] ) --> lRet

Parâmetros

Nome Tipo Descrição Obrigatório Referência

cCampo Caracter Nome do campo

bAction Bloco de código Bloco de execução

do campo

Retorno(logico)lRet

Retorna .T. se conseguiu adicionar a ação no campo.

AddLastEdit

AddLastEdit

Adiciona na propriedade aLastEdit a última linha editada.

SintaxeMsNewGetDados(): AddLastEdit ( [ nLine] ) -->

Parâmetros

Nome Tipo Descrição Obrigatório Referência

nLine Numérico Linha editada

AddLineAddLine

Adiciona uma linha em branco no aCols.

Page 6: mp-MsNewGetDados-150513-0952-710

7/16/2019 mp-MsNewGetDados-150513-0952-710

http://slidepdf.com/reader/full/mp-msnewgetdados-150513-0952-710 6/19

SintaxeMsNewGetDados(): AddLine ( [ lRepaint], [ lValid] ) --> lRet

Parâmetros

Nome Tipo Descrição Obrigatório Referência

lRepaint Lógico Se .T. recarrega a

aCols.

lValid Lógico Valida se possível

adicionar linha.

Retorno(logico)lRet

Retorna .T. se conseguiu criar nova linha.

ChkObrigatChkObrigat

Verifica se todos os campos obrigatórios da linha passada como parâmetro foipreenchido.

SintaxeMsNewGetDados(): ChkObrigat ( [ nAt] ) --> lRet

Parâmetros

Nome Tipo Descrição Obrigatório Referência

nAt Numérico Linha posicionada

Retorno()lRet

Retorna .T. se todos os campos obrigatórios foram preenchidos.

DelLine

DelLine

Deleta linha posicionada.

SintaxeMsNewGetDados(): DelLine ( ) -->

Page 7: mp-MsNewGetDados-150513-0952-710

7/16/2019 mp-MsNewGetDados-150513-0952-710

http://slidepdf.com/reader/full/mp-msnewgetdados-150513-0952-710 7/19

DelOk

DelOk

Retorna a execução do bloco de código bDelOk.

SintaxeMsNewGetDados(): DelOk ( ) --> uRet

Retorno()uRet

Retorna o resultado da execução do bloco bDelOk.

DisableDisable

Desabilita o objeto.

SintaxeMsNewGetDados(): Disable ( ) -->

EditActionEditAction

Edita a ação do campo editável

SintaxeMsNewGetDados(): EditAction ( [ cCampo] ) --> uRet

Parâmetros

Nome Tipo Descrição Obrigatório Referência

cCampo Caracter Nome do campo

Retorno(codeblock)uRet

Bloco de execução do campo.

EditcellEditcell

Page 8: mp-MsNewGetDados-150513-0952-710

7/16/2019 mp-MsNewGetDados-150513-0952-710

http://slidepdf.com/reader/full/mp-msnewgetdados-150513-0952-710 8/19

Retorna .T. se célula é editável.

SintaxeMsNewGetDados(): Editcell ( ) --> lRet

Retorno(logico)lRet

Retorna .t. se celula é editavel.

Enable

Enable

Ativa o objeto.

SintaxeMsNewGetDados(): Enable ( ) -->

Execute

Execute

Executa um bloco de execução.

SintaxeMsNewGetDados(): Execute ( [ bBlock], [ lDeclared] ) --> uRet

Parâmetros

Nome Tipo Descrição Obrigatório Referência

bBlock Bloco de código Blocl de execução.

lDeclared Array of Record Se .F. declara como

private as variaveis

aHeader, aCols eN.

Retorno()uRet

Resultado da execução do bloco.

FindAction

Page 9: mp-MsNewGetDados-150513-0952-710

7/16/2019 mp-MsNewGetDados-150513-0952-710

http://slidepdf.com/reader/full/mp-msnewgetdados-150513-0952-710 9/19

FindAction

Verifica se o campo possui alguma ação.

SintaxeMsNewGetDados(): FindAction ( [ cCampo] ) --> lRet

Parâmetros

Nome Tipo Descrição Obrigatório Referência

cCampo Caracter Nome do campo

Retorno(logico)lRet

Retorna .T. se encontrou campo.

ForceRefreshForceRefresh

Atualiza a aCols do Browse e atualiza o browse.

SintaxeMsNewGetDados(): ForceRefresh ( ) -->

GoBottomGoBottom

Manda o cursor para a última linha do browse.

SintaxeMsNewGetDados(): GoBottom ( ) -->

GoToGoTo

Manda o cursor para a linha passada como parâmetro no browse.

SintaxeMsNewGetDados(): GoTo ( [ nGo] ) -->

Page 10: mp-MsNewGetDados-150513-0952-710

7/16/2019 mp-MsNewGetDados-150513-0952-710

http://slidepdf.com/reader/full/mp-msnewgetdados-150513-0952-710 10/19

Parâmetros

Nome Tipo Descrição Obrigatório Referência

nGo Numérico Linha para onde vai

mandar o cursor

GoTopGoTop

Manda o cursor para a primeira linha do browse.

SintaxeMsNewGetDados(): GoTop ( ) -->

HideHide

Esconde o objeto.

SintaxeMsNewGetDados(): Hide ( ) -->

LinhaOk

LinhaOk

Retorna .T. se linha está ok.

SintaxeMsNewGetDados(): LinhaOk ( [ lUp], [ lDeclared] ) --> lRet

Parâmetros

Nome Tipo Descrição Obrigatório Referência

lUp Lógico

lDeclared Lógico

Retorno

Page 11: mp-MsNewGetDados-150513-0952-710

7/16/2019 mp-MsNewGetDados-150513-0952-710

http://slidepdf.com/reader/full/mp-msnewgetdados-150513-0952-710 11/19

()lRet

Retorna .T. se linha estiver ok.

OnChangeOnChange

Retorna a execução do bloco de código bChange.

SintaxeMsNewGetDados(): OnChange ( ) --> uRet

Retorno()uRet

Retorna a execução do bloco de código bChange.

RefreshRefresh

Atualiza o objeto.

SintaxeMsNewGetDados(): Refresh ( [ lSetArray] ) -->

ParâmetrosNome Tipo Descrição Obrigatório Referência

lSetArray Lógico Se .T. seta o aCols

atual.

RemoveActionRemoveAction

Remove a ação do campo.

SintaxeMsNewGetDados(): RemoveAction ( [ cCampo] ) --> lRet

Parâmetros

Page 12: mp-MsNewGetDados-150513-0952-710

7/16/2019 mp-MsNewGetDados-150513-0952-710

http://slidepdf.com/reader/full/mp-msnewgetdados-150513-0952-710 12/19

Nome Tipo Descrição Obrigatório Referência

cCampo Caracter Nome do campo

Retorno(logico)lRet

Retorna .T. se conseguiu remover a ação do campo.

SetArray

SetArray

Seta array do aCols do Objeto.

SintaxeMsNewGetDados(): SetArray ( [ aArray], [ lGoTop] ) -->

Parâmetros

Nome Tipo Descrição Obrigatório Referência

aArray Array of Record Novo aCols

lGoTop Lógico Se .T. volta o cursor

para a primeira

linha

SetEditLineSetEditLine

Seta se linha pode ser editável ou não

SintaxeMsNewGetDados(): SetEditLine ( [ lSet] ) --> lVar

Parâmetros

Nome Tipo Descrição Obrigatório Referência

lSet Lógico Seta se linha pode

ser editável ou não,

propriedade

lCanEditLine

Page 13: mp-MsNewGetDados-150513-0952-710

7/16/2019 mp-MsNewGetDados-150513-0952-710

http://slidepdf.com/reader/full/mp-msnewgetdados-150513-0952-710 13/19

Retorno(logico)lVar

Retorna o valor anterior da propriedade lCanEditLine.

SetWtDisableSetWtDisable

Seta a propriedade lWtDisable se o valor do parâmetro for lógico ou aWtDisable se ovalor do parâmetro for array.

SintaxeMsNewGetDados(): SetWtDisable ( [ uValue] ) -->

Parâmetros

Nome Tipo Descrição Obrigatório Referência

uValue Array of Record Valor lógico ou

array

Show

Show

Exibe o objeto.

SintaxeMsNewGetDados(): Show ( ) -->

SuperDel

SuperDel

Retorna a execução do bloco de código bSuperDel.

SintaxeMsNewGetDados(): SuperDel ( ) --> uRet

Retorno()uRet

Retorna a execução do bloco de código bSuperDel.

TudoOk

Page 14: mp-MsNewGetDados-150513-0952-710

7/16/2019 mp-MsNewGetDados-150513-0952-710

http://slidepdf.com/reader/full/mp-msnewgetdados-150513-0952-710 14/19

TudoOk

Executa o LinhaOk() e o bloco bTudoOk. Se todas as linhas estiverem Ok, permitesalvar.

SintaxeMsNewGetDados(): TudoOk ( ) --> lOk

Retorno(logico)lOk

Retorna .T. se estiver tudo Ok.

Propriedade

Propriedade Descrição Tipo

Array of Record

Observações

Novas Propriedades

Os passam a ser propriedades doarrays aHeader e aCols

objeto Get. Pode-se recuperar seu conteúdocomo fazemos com outras propriedades. Ex.aCols:=oGet:aColsA propriedade passada via parâmetro, substitui aStyle,passagem das variáveis nOpc.GD_INSERT + GD_UPDATE + GD_DELETE --> Utilize a soma

das opções disponíveis para criar a flexibilidade para oNewGetdados.Variável N

A deixa de ser atualizada pelo objeto, o que nosvariável nobriga a recuperar o conteúdo de oGet:nAT /

Page 15: mp-MsNewGetDados-150513-0952-710

7/16/2019 mp-MsNewGetDados-150513-0952-710

http://slidepdf.com/reader/full/mp-msnewgetdados-150513-0952-710 15/19

oGet:obrow:nAt. Ou seja, se alteramos o conteúdo de aColse n temos que atualizar as propriedades oGet:aCols eoGet:nAt. O mesmo não se aplica a oGet:aHeader. Paranovas implementações evite utilizar essa variável e passe a

consultar as propriedades citadas.LinhaOk, TudoOk e outras funções

Todas as funções (como LinhaOK e TudoOk) chamadas apartir do objeto poderão fazer referência as variáveis aColse aHeader, pois a MsNewGetDados as cria como Private.Tratamento do aHeader e Acols

aHeader --> Existe um tratamento interno que inviabiliza asobreposição de seu conteúdo após a criação doobjeto.aCols--> a última coluna destinada a Deleção da Linhapassa a ser obrigatória (inclusive para as opçõesvisualização e exclusão).

aHeader 

Vetor com informações das colunas no formato:

Elemento Conteúdo

1 Título

2 Campo

3 Picture

4 Tamanho

5 Decimal

6 Validação

7 Reservado

8 Tipo

9 Reservado

10 Reservado

aCols 

Page 16: mp-MsNewGetDados-150513-0952-710

7/16/2019 mp-MsNewGetDados-150513-0952-710

http://slidepdf.com/reader/full/mp-msnewgetdados-150513-0952-710 16/19

Vetor com as linhas a serem editadas. As colunas devemser construídas com base no aHeader mais uma ultima comvalor lógico que determina se a linha foi excluída.

Exemplos#include "protheus.ch"User Function MrbwGtCl()Private cCadastro := "Pedidos de

enda"Private aRotina := {{"Pesquisar" ,"axPesqui" , 0, 1},; {"Visualizar" ,"U_ModGtd" , 0, 2},; {"Incluir" ,"U_ModGtd" , 0,3}}DbSelectArea("SC5")DbSetOrder(1)MBrowse(6,1,

22,75,"SC5")ReturnUser Function ModGtd(cAlias,nReg,nOpc)Local nX := 0LocalnUsado := 0Local aButtons := {}Local aCpoEnch:= {}Local cAliasE := cAliasLocal aAlterEnch :={}Local aPos := {000,000,080,400}Local nModelo:= 3Local lF3 := .F.Local lMemoria := .T.LocallColumn := .F.Local caTela := ""Local lNoFolder:= .F.Local lProperty := .F.Local aCpoGDa :=

{}Local cAliasGD := "SC6"Local nSuperior :=081Local nEsquerda := 000Local nInferior :=250Local nDireita := 400Local cLinOk :="AllwaysTrue"Local cTudoOk :="AllwaysTrue"Local cIniCpos := "C6_ITEM"LocalnFreeze := 000Local nMax := 999Local cFieldOk:= "AllwaysTrue"Local cSuperDel := ""LocalcDelOk := "AllwaysFalse"Local aHeader :={}Local aCols := {}Local aAlterGDa := {}PrivateoDlgPrivate oGetDPrivate oEnchPrivateaTELA[0][0]PrivateaGETS[0]DbSelectArea("SX3")DbSetOrder(1)DbSeek(cAliasE)While !Eof() .And. SX3->X3_ARQUIVO ==cAliasE If !(SX3->X3_CAMPO $ "C5_FILIAL") .And.

Page 17: mp-MsNewGetDados-150513-0952-710

7/16/2019 mp-MsNewGetDados-150513-0952-710

http://slidepdf.com/reader/full/mp-msnewgetdados-150513-0952-710 17/19

cNivel >= SX3->X3_NIVEL .And.X3Uso(SX3->X3_USADO) ADD(aCpoEnch,SX3->X3_CAMPO) EndIfDbSkip()EndaAlterEnch :=aClone(aCpoEnch)DbSelectArea("SX3")DbSetOrder(1

)MsSeek(cAliasGD)While !Eof() .And.SX3->X3_ARQUIVO == cAliasGD If!(AllTrim(SX3->X3_CAMPO) $ "C6_FILIAL") .And.cNivel >= SX3->X3_NIVEL .And.X3Uso(SX3->X3_USADO) ADD(aCpoGDa,SX3->X3_CAMPO) EndIfDbSkip()EndaAlterGDa :=aClone(aCpoGDa)nUsado:=0dbSelectArea("SX3")dbSeek("SC6")aHeader:={}While!Eof().And.(x3_arquivo=="SC6") IfX3USO(x3_usado).And.cNivel>=x3_nivelnUsado:=nUsado+1 AADD(aHeader,{TRIM(x3_titulo), x3_campo, x3_picture,;x3_tamanho, x3_decimal,"AllwaysTrue()",;x3_usado, x3_tipo, x3_arquivo, x3_context } )

Endif dbSkip()EndIf nOpc==3 // IncluiraCols:={Array(nUsado+1)} aCols[1,nUsado+1]:=.F.For nX:=1 to nUsado IF aHeader[nX,2] =="C6_ITEM" aCols[1,nX]:= "0001" ELSEaCols[1,nX]:=CriaVar(aHeader[nX,2]) ENDIF

 NextElse aCols:={} dbSelectArea("SC6")dbSetOrder(1) dbSeek(xFilial()+M->C5_NUM) While!eof().and.C6_NUM==M->C5_NUM 

 ADD(aCols,Array(nUsado+1)) For nX:=1 tonUsadoaCols[Len(aCols),nX]:=FieldGet(FieldPos(aHeader[nX,2])) Next aCols[Len(aCols),nUsado+1]:=.F.dbSkip() EndEndifoDlg :=

 MSDIALOG():New(000,000,400,600,cCadastro,,,,,,,,,.T.)RegToMemory("SC5",

Page 18: mp-MsNewGetDados-150513-0952-710

7/16/2019 mp-MsNewGetDados-150513-0952-710

http://slidepdf.com/reader/full/mp-msnewgetdados-150513-0952-710 18/19

If(nOpc==3,.T.,.F.))oEnch := MsMGet():New(cAliasE,nReg,nOpc,/*aCRA*/,/*cLetra*/, /*cTexto*/,; aCpoEnch,aPos,aAlterEnch, nModelo, /*nColMens*/,/*cMensagem*/,; cTudoOk,oDlg,lF3,

lMemoria,lColumn,caTela,lNoFolder,lProperty)oGetD:=

 MsNewGetDados():New(nSuperior,nEsquerda,nInferior,nDireita, nOpc,;cLinOk,cTudoOk,cIniCpos,aAlterGDa,nFreeze,nMax,cFieldOk, cSuperDel,; cDelOk, oDLG,aHeader, aCols)// Tratamento para definição decores específicas,// logo após a declaração da

 MsNewGetDadosoGetD:oBrowse:lUseDefaultColors :=.F.oGetD:oBrowse:SetBlkBackColor({||GETDCLR(oGetD:aCols,oGetD:nAt,aHeader)})oDlg:bInit := {|| EnchoiceBar(oDlg, {||oDlg:End()},{||oDlg:End()},,aButtons)}oDlg:lCentered :=.T.oDlg:Activate()Return// Função paratratamento das regras de cores para a grid da

 MsNewGetDadosStatic FunctionGETDCLR(aLinha,nLinha,aHeader)Local nCor2 :=16776960 // Ciano - RGB(0,255,255)Local nCor3:= 16777215 // Branco - RGB(255,255,255)LocalnPosProd := aScan(aHeader,{|x| Alltrim(x[2]) =="C6_PRODUTO"})Local nUsado :=Len(aHeader)+1Local nRet := nCor3If!Empty(aLinha[nLinha][nPosProd]) .AND.

aLinha[nLinha][nUsado] nRet := nCor2ElseIf

Page 19: mp-MsNewGetDados-150513-0952-710

7/16/2019 mp-MsNewGetDados-150513-0952-710

http://slidepdf.com/reader/full/mp-msnewgetdados-150513-0952-710 19/19

!Empty(aLinha[nLinha][nPosProd]) .AND.!aLinha[nLinha][nUsado] nRet :=nCor3EndifReturn nRet

AbrangênciaMicrosiga Protheus 8.11 , Protheus 10