Classe: MsGetDB
Objeto tipo lista com uma ou mais colunas para cadastramento de dados baseado em uma tabela temporária.
New
Cria o objeto da MSGetDb.
MsGetDB(): New ( < nTop>, < nLeft>, < nBottom>, < nRight>, < nOpc>, [ cLinhaOk], [ cTudoOk], [ cIniCpos], [ lDelete], [ aAlter], [ nFreeze], [ lEmpty], [ uPar1], < cTRB>, [ cFieldOk], [ uPar2], [ lAppend], [ oWnd], [ lDisparos], [ uPar3], [ cDelOk], [ cSuperDel] ) --> oObj
Nome | Tipo | Descrição | Obrigatório | Referência |
nTop | Numérico | Distância entre a MSGetDB e o extremidade superior do objeto que a contém. | X | |
nLeft | Numérico | Distância entre a MSGetDB e o extremidade esquerda do objeto que a contém. | X | |
nBottom | Numérico | Distância entre a MSGetDB e o extremidade inferior do objeto que a contém. | X | |
nRight | Numérico | Distância entre a MSGetDB e o extremidade direita do objeto que a contém. | X | |
nOpc | Numérico | Posição do elemento do vetor aRotina que a MSGetDB usará como referência. | X | |
cLinhaOk | Caracter | Função executada para validar o contexto da linha atual do aCols. | ||
cTudoOk | Caracter | Função executada para validar o contexto geral da MSGetDB (todo aCols). | ||
cIniCpos | Caracter | Nome dos campos do tipo caracter que utilizarão incremento automático. Este parâmetro deve ser no formato “+nome do primeiro campo+nome do segundo campo+...”. | ||
lDelete | Lógico | Habilita a opção de deletar linhas do aCols. Valor padrão falso. | ||
aAlter | Array of Record | Vetor com os campos que poderão ser alterados. | ||
nFreeze | Numérico | Indica qual coluna ficará congelada na exibição. | ||
lEmpty | Lógico | Habilita validação da primeira coluna do aCols para esta não poder estar vazia. Valor padrão falso. | ||
uPar1 | Numérico | Parâmetro reservado | ||
cTRB | Caracter | Alias da tabela temporária | X | |
cFieldOk | Caracter | Função executada na validação do campo. | ||
uPar2 | Lógico | Parâmetro reservado | ||
lAppend | Lógico | Indica se a MSGetDB irá criar uma linha em branco automaticamente quando for inclusão. | ||
oWnd | Array of Record | Objeto no qual a MSGetDB será criada. | ||
lDisparos | Lógico | Indica se será utilizado o Dicionário de Dados para consulta padrão, inicializador padrão e gatilhos. | ||
uPar3 | Lógico | Parâmetro reservado. | ||
cDelOk | Caracter | Função executada para validar a exclusão de uma linha do aCols | ||
cSuperDel | Caracter | Função executada quando pressionada as teclas +. |
-
oObj()
- Objeto da classe MSGetDb.
Propriedade | Descrição | Tipo |
Array of Record |
A MSGetDB precisa que sejam declaradas as variáveis abaixo sendo tipo Private.
- aRotina
Vetor com as rotinas que serão executadas na MBrowse e que define o tipo de operação que está sendo executada (inclusão, alteração, exclusão, visualização, pesquisa, etc...) seguindo o seguinte 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 à rotina, se esta posição não for informada nenhum acesso será validado.
- 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
A tabela temporária utilizada pela MSGetDB deverá ser criada com base no aHeader mais um último campo tipo lógico que determina se a linha foi excluída.
A MSGetDB cria a variável pública nBrLin que indica qual a linha posicionada do aCols.
As funções passadas como parâmetro para a MSGetDB (cLinhaOk, cTudoOk, etc..) não poderão ser declaradas como Static Function.
A consulta padrão, validação do usuário e gatilho estarão habilitados se o campo estiver cadastrado no dicionário de dados (SX3\SX7) e apresentar estas opções disponíveis.
#include "protheus.ch"User Function F29317()Private cCadastro := "Cadastro de . . ."Private aRotina := { {"Pesquisar","AxPesqui",0,1} ,; {"Visualizar","u_mgetdb",0,2} ,; {"Incluir","u_mgetdb",0,3} ,; {"Alterar","u_mgetdb",0,4} ,; {"Excluir","u_mgetdb",0,5} }Private cString := "SB1"dbSelectArea(cString)dbSetOrder(1)mBrowse( 6,1,22,75,cString)returnuser function mgetdb(calias,nrec,nopc)Local aStruct := {}Local x,odlg,ogetdb Local nUsado := 0private aheader := {}private aaltera := {} DbSelectArea("SX3")DbSetOrder(1)DbSeek("SB1")While !Eof() .and. SX3->X3_ARQUIVO == "SB1" If X3Uso(SX3->X3_USADO) .and. cNivel >= SX3->X3_NIVEL nUsado++ Aadd(aHeader,{Trim(X3Titulo()),; SX3->X3_CAMPO,; SX3->X3_PICTURE,; SX3->X3_TAMANHO,; SX3->X3_DECIMAL,; SX3->X3_VALID,; "",; SX3->X3_TIPO,; "",; "" }) Aadd(aStruct,{SX3->X3_CAMPO,; SX3->X3_TIPO,; SX3->X3_TAMANHO,; SX3->X3_DECIMAL}) EndIf DbSkip()EndAadd(aStruct,{"FLAG","L",1,0})cCriaTrab := CriaTrab(aStruct,.T.)DbUseArea(.T.,__LocalDriver,cCriaTrab,,.T.,.F.)DEFINE MSDIALOG oDlg TITLE "Documentação - MsGetDb" FROM 00,00 TO 300,400 PIXELoGetDB := MsGetDB():New(05, 05, 145, 195, 3, "U_LINHAOK", "U_TUDOOK", "+A1_COD", .T., {"B1_DESC"}, 1, .F., , cCriaTrab, "U_FIELDOK", , .T., oDlg, .T., ,"U_DELOK", "U_SUPERDEL")ACTIVATE MSDIALOG oDlg CENTEREDDbSelectArea(cCriaTrab)DbCloseArea()returnUser Function LINHAOK()ApMsgStop("LINHAOK")Return .T.User Function TUDOOK()ApMsgStop("LINHAOK")Return .T.User Function DELOK()ApMsgStop("DELOK")Return .T.User Function SUPERDEL()ApMsgStop("SUPERDEL")Return .T.User Function FIELDOK()ApMsgStop("FIELDOK")Return .T.