mp-MsNewGetDados-150513-0952-710
-
Upload
fernanda-maximiano-coelho -
Category
Documents
-
view
574 -
download
1
Transcript of 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.
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.
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
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.
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.
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 ( ) -->
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
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
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] ) -->
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
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
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
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
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 /
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
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.
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",
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
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