Vous êtes sur la page 1sur 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 padro, validao do usurio e gatilhos estaro habilitados se o campo estiver cadastrado no Dicionrio de Dados (SX3/SX7) e apresentar estas opes disponveis.

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

Parmetros
Nome nTop Tipo Numrico Descrio Distancia entre a MsNewGetDados e o extremidade superior do objeto que a contm. Distancia entre a MsNewGetDados e o extremidade esquerda do objeto que a contm. Obrigatrio Referncia

nLeft

Numrico

nBottom

Numrico

Distancia entre a MsNewGetDados e o extremidade inferior do objeto que a contm. Distancia entre a MsNewGetDados e o extremidade direita do objeto que a contm. Essa nova propriedade, passada via parmetro, substitui a passagem das variveis nOpc. Pode ser utilizada GD_INSERT + GD_UPDATE + GD_DELETE para criar a flexibilidade da MsNewGetdados. Funo executada para validar o contexto da linha atual do aCols. Funo executada para validar o contexto geral da MsNewGetDados (todo aCols). Nome dos campos do tipo caracter que utilizaro incremento automtico. Este parametro deve ser no formato +++.... Vetor com os campos que podero ser alterados.

nRight

Numrico

nStyle

Numrico

cLinhaOk

Caracter

cTudoOk

Caracter

cIniCpos

Caracter

aAlter

Array of Record

nFreeze

Numrico

Congela a coluna da esquerda para a direita. Se 0 no congela, se 1 congela a primeira coluna. Obs: atualmente s possivel congelar a primeira coluna, devido a limitao do objeto. Nmero mximo de linhas permitidas. Valor padro 99. Funo executada na validao do campo. Funo executada quando pressionada as teclas +. Funo executada para validar a excluso de uma linha do aCols. Objeto no qual a MsGetDados ser criada. aHeader Acols Bloco de execuo a ser executado na propriedade bChange do Objeto. String contendo os campos contidos no X3_TELA.

nMax

Numrico

cFieldOk

Caracter

cSuperDel

Caracter

cDelOk

Caracter

oWnd

Objeto

aPartHeader aParCols uChange

Array of Record Array of Record Bloco de cdigo

cTela

Caracter

Retorno
Objeto() Objeto MsNewGetDados

Observaes

LinhaOk, TudoOk e outras funes

Todas as funes (como LinhaOK e TudoOk) chamadas a partir do objeto podero fazer referncia as variveis aCols e aHeader, pois a MsNewGetDados as cria como Private.
Tratamento do aHeader e Acols

aHeader --> Existe um tratamento interno que inviabiliza a sobreposio de seu contedo aps a criao do objeto. aCols --> a ltima coluna destinada a Deleo da Linha passa a ser obrigatria (inclusive para as opes visualizao e excluso). aHeader Vetor com informaes das colunas no formato:
Elemento 1 2 3 4 5 6 7 8 9 10 Contedo Ttulo Campo Picture Tamanho Decimal Validao Reservado Tipo Reservado Reservado

aCols Vetor com as linhas a serem editadas. As colunas devem ser construdas com base no aHeader mais uma ultima com valor lgico que determina se a linha foi excluda.

Mtodos AddAction
AddAction
Adiciona ao ao campo editvel.

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

Parmetros
Nome cCampo bAction Tipo Caracter Bloco de cdigo Descrio Nome do campo Bloco de execuo do campo Obrigatrio Referncia

Retorno
lRet(logico) Retorna .T. se conseguiu adicionar a ao no campo.

AddLastEdit
AddLastEdit
Adiciona na propriedade aLastEdit a ltima linha editada.

Sintaxe
MsNewGetDados(): AddLastEdit ( [ nLine] ) -->

Parmetros
Nome nLine Tipo Numrico Descrio Linha editada Obrigatrio Referncia

AddLine
AddLine
Adiciona uma linha em branco no aCols.

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

Parmetros
Nome lRepaint lValid Tipo Lgico Lgico Descrio Se .T. recarrega a aCols. Valida se possvel adicionar linha. Obrigatrio Referncia

Retorno
lRet(logico) Retorna .T. se conseguiu criar nova linha.

ChkObrigat
ChkObrigat
Verifica se todos os campos obrigatrios da linha passada como parmetro foi preenchido.

Sintaxe
MsNewGetDados(): ChkObrigat ( [ nAt] ) --> lRet

Parmetros
Nome nAt Tipo Numrico Descrio Linha posicionada Obrigatrio Referncia

Retorno
lRet() Retorna .T. se todos os campos obrigatrios foram preenchidos.

DelLine
DelLine
Deleta linha posicionada.

Sintaxe
MsNewGetDados(): DelLine ( ) -->

DelOk
DelOk
Retorna a execuo do bloco de cdigo bDelOk.

Sintaxe
MsNewGetDados(): DelOk ( ) --> uRet

Retorno
uRet() Retorna o resultado da execuo do bloco bDelOk.

Disable
Disable
Desabilita o objeto.

Sintaxe
MsNewGetDados(): Disable ( ) -->

EditAction
EditAction
Edita a ao do campo editvel

Sintaxe
MsNewGetDados(): EditAction ( [ cCampo] ) --> uRet

Parmetros
Nome cCampo Tipo Caracter Descrio Nome do campo Obrigatrio Referncia

Retorno
uRet(codeblock) Bloco de execuo do campo.

Editcell
Editcell

Retorna .T. se clula editvel.

Sintaxe
MsNewGetDados(): Editcell ( ) --> lRet

Retorno
lRet(logico) Retorna .t. se celula editavel.

Enable
Enable
Ativa o objeto.

Sintaxe
MsNewGetDados(): Enable ( ) -->

Execute
Execute
Executa um bloco de execuo.

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

Parmetros
Nome bBlock lDeclared Tipo Bloco de cdigo Array of Record Descrio Blocl de execuo. Se .F. declara como private as variaveis aHeader, aCols e N. Obrigatrio Referncia

Retorno
uRet() Resultado da execuo do bloco.

FindAction

FindAction
Verifica se o campo possui alguma ao.

Sintaxe
MsNewGetDados(): FindAction ( [ cCampo] ) --> lRet

Parmetros
Nome cCampo Tipo Caracter Descrio Nome do campo Obrigatrio Referncia

Retorno
lRet(logico) Retorna .T. se encontrou campo.

ForceRefresh
ForceRefresh
Atualiza a aCols do Browse e atualiza o browse.

Sintaxe
MsNewGetDados(): ForceRefresh ( ) -->

GoBottom
GoBottom
Manda o cursor para a ltima linha do browse.

Sintaxe
MsNewGetDados(): GoBottom ( ) -->

GoTo
GoTo
Manda o cursor para a linha passada como parmetro no browse.

Sintaxe
MsNewGetDados(): GoTo ( [ nGo] ) -->

Parmetros
Nome nGo Tipo Numrico Descrio Linha para onde vai mandar o cursor Obrigatrio Referncia

GoTop
GoTop
Manda o cursor para a primeira linha do browse.

Sintaxe
MsNewGetDados(): GoTop ( ) -->

Hide
Hide
Esconde o objeto.

Sintaxe
MsNewGetDados(): Hide ( ) -->

LinhaOk
LinhaOk
Retorna .T. se linha est ok.

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

Parmetros
Nome lUp lDeclared Tipo Lgico Lgico Descrio Obrigatrio Referncia

Retorno

lRet() Retorna .T. se linha estiver ok.

OnChange
OnChange
Retorna a execuo do bloco de cdigo bChange.

Sintaxe
MsNewGetDados(): OnChange ( ) --> uRet

Retorno
uRet() Retorna a execuo do bloco de cdigo bChange.

Refresh
Refresh
Atualiza o objeto.

Sintaxe
MsNewGetDados(): Refresh ( [ lSetArray] ) -->

Parmetros
Nome lSetArray Tipo Lgico Descrio Se .T. seta o aCols atual. Obrigatrio Referncia

RemoveAction
RemoveAction
Remove a ao do campo.

Sintaxe
MsNewGetDados(): RemoveAction ( [ cCampo] ) --> lRet

Parmetros

Nome cCampo

Tipo Caracter

Descrio Nome do campo

Obrigatrio

Referncia

Retorno
lRet(logico) Retorna .T. se conseguiu remover a ao do campo.

SetArray
SetArray
Seta array do aCols do Objeto.

Sintaxe
MsNewGetDados(): SetArray ( [ aArray], [ lGoTop] ) -->

Parmetros
Nome aArray lGoTop Tipo Array of Record Lgico Descrio Novo aCols Se .T. volta o cursor para a primeira linha Obrigatrio Referncia

SetEditLine
SetEditLine
Seta se linha pode ser editvel ou no

Sintaxe
MsNewGetDados(): SetEditLine ( [ lSet] ) --> lVar

Parmetros
Nome lSet Tipo Lgico Descrio Seta se linha pode ser editvel ou no, propriedade lCanEditLine Obrigatrio Referncia

Retorno
lVar(logico) Retorna o valor anterior da propriedade lCanEditLine.

SetWtDisable
SetWtDisable
Seta a propriedade lWtDisable se o valor do parmetro for lgico ou aWtDisable se o valor do parmetro for array.

Sintaxe
MsNewGetDados(): SetWtDisable ( [ uValue] ) -->

Parmetros
Nome uValue Tipo Array of Record Descrio Valor lgico ou array Obrigatrio Referncia

Show
Show
Exibe o objeto.

Sintaxe
MsNewGetDados(): Show ( ) -->

SuperDel
SuperDel
Retorna a execuo do bloco de cdigo bSuperDel.

Sintaxe
MsNewGetDados(): SuperDel ( ) --> uRet

Retorno
uRet() Retorna a execuo do bloco de cdigo bSuperDel.

TudoOk

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

Sintaxe
MsNewGetDados(): TudoOk ( ) --> lOk

Retorno
lOk(logico) Retorna .T. se estiver tudo Ok.

Propriedade
Propriedade Descrio Tipo Array of Record

Observaes
Novas Propriedades

Os arrays aHeader e aCols passam a ser propriedades do objeto Get. Pode-se recuperar seu contedo como fazemos com outras propriedades. Ex. aCols:=oGet:aCols A propriedade Style, passada via parmetro, substitui a passagem das variveis nOpc. GD_INSERT + GD_UPDATE + GD_DELETE --> Utilize a soma das opes disponveis para criar a flexibilidade para o NewGetdados.
Varivel N

A varivel n deixa de ser atualizada pelo objeto, o que nos obriga a recuperar o contedo de oGet:nAT /

oGet:obrow:nAt. Ou seja, se alteramos o contedo de aCols e n temos que atualizar as propriedades oGet:aCols e oGet:nAt. O mesmo no se aplica a oGet:aHeader. Para novas implementaes evite utilizar essa varivel e passe a consultar as propriedades citadas.
LinhaOk, TudoOk e outras funes

Todas as funes (como LinhaOK e TudoOk) chamadas a partir do objeto podero fazer referncia as variveis aCols e aHeader, pois a MsNewGetDados as cria como Private.
Tratamento do aHeader e Acols

aHeader --> Existe um tratamento interno que inviabiliza a sobreposio de seu contedo aps a criao do objeto. aCols --> a ltima coluna destinada a Deleo da Linha passa a ser obrigatria (inclusive para as opes visualizao e excluso). aHeader Vetor com informaes das colunas no formato:
Elemento 1 2 3 4 5 6 7 8 9 10 Contedo Ttulo Campo Picture Tamanho Decimal Validao Reservado Tipo Reservado Reservado

aCols

Vetor com as linhas a serem editadas. As colunas devem ser construdas com base no aHeader mais uma ultima com valor lgico que determina se a linha foi excluda. Exemplos #include "protheus.ch"User Function MrbwGtCl()Private cCadastro := "Pedidos de Venda"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 := 0Local nUsado := 0Local aButtons := {}Local aCpoEnch := {}Local cAliasE := cAliasLocal aAlterEnch := {}Local aPos := {000,000,080,400}Local nModelo := 3Local lF3 := .F.Local lMemoria := .T.Local lColumn := .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"Local nFreeze := 000Local nMax := 999Local cFieldOk := "AllwaysTrue"Local cSuperDel := ""Local cDelOk := "AllwaysFalse"Local aHeader := {}Local aCols := {}Local aAlterGDa := {}Private oDlgPrivate oGetDPrivate oEnchPrivate aTELA[0][0]Private aGETS[0]DbSelectArea("SX3")DbSetOrder(1)DbSeek( cAliasE)While !Eof() .And. SX3->X3_ARQUIVO == cAliasE If !(SX3->X3_CAMPO $ "C5_FILIAL") .And.

cNivel >= SX3->X3_NIVEL .And. X3Uso(SX3->X3_USADO) AADD(aCpoEnch,SX3->X3_CAMPO) EndIf DbSkip()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) AADD(aCpoGDa,SX3->X3_CAMPO) EndIf DbSkip()EndaAlterGDa := aClone(aCpoGDa)nUsado:=0dbSelectArea("SX3")dbSe ek("SC6")aHeader:={}While !Eof().And.(x3_arquivo=="SC6") If X3USO(x3_usado).And.cNivel>=x3_nivel nUsado:=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 // Incluir aCols:={Array(nUsado+1)} aCols[1,nUsado+1]:=.F. For nX:=1 to nUsado IF aHeader[nX,2] == "C6_ITEM" aCols[1,nX]:= "0001" ELSE aCols[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 AADD(aCols,Array(nUsado+1)) For nX:=1 to nUsado aCols[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",

If(nOpc==3,.T.,.F.))oEnch := MsMGet():New(cAliasE,nReg,nOpc,/*aCRA*/,/*cLetr a*/, /*cTexto*/,; aCpoEnch,aPos, aAlterEnch, nModelo, /*nColMens*/, /*cMensagem*/,; cTudoOk,oDlg,lF3, lMemoria,lColumn,caTela,lNoFolder,lProperty)oGe tD:= MsNewGetDados():New(nSuperior,nEsquerda,nInferi or,nDireita, nOpc,; cLinOk,cTudoOk,cIniCpos,aAlterGDa,nFreeze,nMax, cFieldOk, cSuperDel,; cDelOk, oDLG, aHeader, aCols)// Tratamento para definio de cores especficas,// logo aps a declarao da MsNewGetDadosoGetD:oBrowse:lUseDefaultColors := .F.oGetD:oBrowse:SetBlkBackColor({|| GETDCLR(oGetD:aCols,oGetD:nAt,aHeader)})oDlg:bI nit := {|| EnchoiceBar(oDlg, {||oDlg:End()}, {||oDlg:End()},,aButtons)}oDlg:lCentered := .T.oDlg:Activate()Return// Funo para tratamento das regras de cores para a grid da MsNewGetDadosStatic Function GETDCLR(aLinha,nLinha,aHeader)Local nCor2 := 16776960 // Ciano - RGB(0,255,255)Local nCor3 := 16777215 // Branco - RGB(255,255,255)Local nPosProd := 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

!Empty(aLinha[nLinha][nPosProd]) .AND. !aLinha[nLinha][nUsado] nRet := nCor3EndifReturn nRet Abrangncia Microsiga Protheus 8.11 , Protheus 10

Vous aimerez peut-être aussi