import.css=/download/attachments/327912/newLayout.css |
Classe: MsGetDadosObjeto tipo lista com uma ou mais colunas para cadastramento de dados.
NewContrutor da Classe MsGetDadosMsGetDados(): New ( < nTop>, < nLeft>, < nBottom>, < nRight>, < nOpc>, [ cLinhaOk], [ cTudoOk], [ cIniCpos], [ lDeleta], [ aAlter], [ nFreeze], [ lEmpty], [ nMax], [ cFieldOk], [ cSuperDel], [ uPar], [ cDelOk], [ oWnd], [ lUseFreeze], [ cTela] ) --> oGetDados
oGetDados
#include "protheus.ch"User Function Exemplo()Local nILocal oDlgLocal oGetDadosLocal nUsado := 0Private lRefresh := .T.Private aHeader := {}Private aCols := {}Private aRotina := {{"Pesquisar", "AxPesqui", 0, 1},; {"Visualizar", "AxVisual", 0, 2},; {"Incluir", "AxInclui", 0, 3},; {"Alterar", "AxAltera", 0, 4},; {"Excluir", "AxDeleta", 0, 5}}DbSelectArea("SX3")DbSetOrder(1)DbSeek("SA1")While !Eof() .and. SX3->X3_ARQUIVO == "SA1"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,; "",; "" })EndIfDbSkip()EndAadd(aCols,Array(nUsado+1))For nI := 1 To nUsado aCols[1][nI] := CriaVar(aHeader[nI][2])NextaCols[1][nUsado+1] := .F.DEFINE MSDIALOG oDlg TITLE "Exemplo" FROM 00,00 TO 300,400 PIXELoGetDados := MsGetDados():New(05, 05, 145, 195, 4, "U_LINHAOK", "U_TUDOOK", "+A1_COD", .T., {"A1_NOME"}, , .F., 200, "U_FIELDOK", "U_SUPERDEL", , "U_DELOK", oDlg)ACTIVATE MSDIALOG oDlg CENTEREDReturn User 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.A função indicada no parâmetro cDelOk irá receber como parâmetro uma variável numérica, que irá indicar a origem da chamada, sendo:
default nOrigem := 0 lRet := .T. ForceRefreshAtualiza a MsGetDados com o aCols e posiciona na primeira linha.MsGetDados(): ForceRefresh ( ) --> SetEditLineMétodo que habilita/desabilita o modo de edição por linha.MsGetDados(): SetEditLine ( < lSet> ) -->
A MsGetDados precisa que sejam declaradas as variáveis abaixo sendo tipo Private: - aRotina
- aHeader Vetor com informações das colunas no formato:
- aCols Vetor com as linhas a serem editadas. As colunas devem ser construídas com base no aHeader mais uma ultima com valor lógico que determina se a linha foi excluída. - lRefresh Variável tipo lógica para uso reservado. A MsGetDados cria a variável publica n que indica qual a linha posicionada do aCols. As funções passadas como parâmetro para a MsGetDados (cLinhaOk, cTudoOk, ...) não poderão ser declaradas como Static Function. 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. Protheus 10 |