Classe: MsGetDados
Objeto tipo lista com uma ou mais colunas para cadastramento de dados.
Esta classe está depreciada, e por conta disso, não recebe mais atualizações.
Recomendamos a utilização do MVC Protheus.
New
Contrutor da Classe MsGetDados
MsGetDados(): New ( < nTop>, < nLeft>, < nBottom>, < nRight>, < nOpc>, [ cLinhaOk], [ cTudoOk], [ cIniCpos], [ lDeleta], [ aAlter], [ nFreeze], [ lEmpty], [ nMax], [ cFieldOk], [ cSuperDel], [ uPar], [ cDelOk], [ oWnd], [ lUseFreeze], [ cTela] ) --> oGetDados
| Nome | Tipo | Descrição | Obrigatório | Referência |
| nTop | Numérico | Distância entre a MsGetDados e a extremidade superior do objeto que a contém. | X | |
| nLeft | Numérico | Distância entre a MsGetDados e a extremidade esquerda do objeto que a contém. | X | |
| nBottom | Numérico | Distância entre a MsGetDados e a extremidade inferior do objeto que a contém. | X | |
| nRight | Numérico | Distância entre a MsGetDados e o extremidade direita do objeto que a contém. | X | |
| nOpc | Numérico | Posição do elemento do vetor aRotina que a MsGetDados 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 MsGetDados (todo aCols). | ||
| cIniCpos | Caracter | Nome dos campos do tipo caracter que utilizarão incremento automático. Este parametro deve ser no formato “+++...”. | ||
| lDeleta | Lógico | Habilita deletar linhas do aCols. Valor padrão falso. | ||
| aAlter | Vetor | Vetor com os campos que poderão ser alterados. | ||
| nFreeze | Numérico | Indica a coluna que será congelada à esquerda. Só é permitido o congelamento de uma coluna, qualquer valor maior que 1 será convertido para 1. | ||
| lEmpty | Lógico | Habilita validação da primeira coluna do aCols para que esta não possa ser vazia. Valor padrão falso. | ||
| 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 executada quando pressionada as teclas +. | ||
| uPar | Vetor | Parâmetro reservado | ||
| cDelOk | Caracter | Função executada para validar a exclusão de uma linha do aCols. | ||
| oWnd | Objeto | Objeto no qual a MsGetDados será criada. | ||
| lUseFreeze | Lógico | Determina se as colunas poderão ser fixadas durante a navegação horizontal. Valor padrão falso. | ||
| cTela | Caracter | Parâmetro reservado |
- ()
- Objeto da classe MsGetDados
#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:
nOrigem = 0 - Origem não definida, possivelmente uma chamada direta do método DelOk
nOrigem = 1 - Codeblock bDelOk, chamada pela ação de exclusão do objeto
nOrigem = 2 - Codeblock bDelete, validação da exclusão
Exemplo de uso:
Function MyDelOk( nOrigem )
local lRet as logical
default nOrigem := 0
lRet := .T.
If nOrigem == 0
FwAlertInfo( 'Origem não definida, possivelmente uma chamada direta do método DelOk' )
ElseIf nOrigem == 1
FwAlertInfo( 'Origem: bDelOk, chamada pela ação de exclusão do objeto' )
ElseIf nOrigem == 2
lRet := FwAlertYesNo( 'Origem: bDelete, Aqui valida se vai executar a exclusão... Exclui o registro?' )
EndIf
Return lRet
ForceRefresh
Atualiza a MsGetDados com o aCols e posiciona na primeira linha.
MsGetDados(): ForceRefresh ( ) -->
SetEditLine
Método que habilita/desabilita o modo de edição por linha.
MsGetDados(): SetEditLine ( < lSet> ) -->
| Nome | Tipo | Descrição | Obrigatório | Referência |
| lSet | Lógico | Se verdadeiro permite executar o modo de edição por linha. | X |
| Propriedade | Descrição | Tipo |
| aAlter | Vetor com nome dos campos que poderão ser editados. | Vetor |
| aEdit | Parâmetro reservado. | Vetor |
| aInfo | Vetor para controle interno da classe. | Vetor |
| aPosCol | Vetor utilizado para identificar colunas de preencimento obrigatório no formato:[1] Título[2] Coluna | Vetor |
| bBeforeEdit | Parâmetro fora de uso | Bloco de código |
| cClassName | Indentifica a classe como "MSGETDADOS". | Caracter |
| cDelOk | Expressão com retorno lógico executada para validar a deleção da linha. | Caracter |
| cFieldOk | Expressão com retorno lógico executada para validar a edição junto com as validações do Dicionário de Campos (SX3). | Caracter |
| cIniCPos | Nome dos campos do tipo caracter que utilizarão incremento automático. | Caracter |
| cLinhaOk | Expressão com retorno lógico executada para validar a navegação entre as linhas. | Caracter |
| cSuperDel | Expressão com retorno lógico executada ao utilizar as teclas Ctrl+Del. | Caracter |
| cTudoOk | Expressão com retorno lógico para validação geral das linhas. | Caracter |
| lActive | Determina que o objeto está habilitado. | Lógico |
| lCanEditLine | Determina se o modo de edição por linha pode ser habilitado. | Lógico |
| lChgField | Verdadeiro quando o campo posicionado foi editado | Lógico |
| lDeleta | Verdadeiro se deleção de linhas esta habilitado. | Lógico |
| lEditLine | Determina se o objeto utiliza o modo de edição por linha. | Lógico |
| lEmpty | Verdadeiro se esta habilitado verificação se a primeira coluna está vazia. | Lógico |
| lF3Header | Verdadeiro para utilizar Consula Padrão informada no aHeader e falso para utilizar do Dicionário de Campos (SX3). | Lógico |
| lModified | Verdadeiro quando algum campo foi editado. | Lógico |
| lNewLine | Identifica que foi criada uma nova linha. | Lógico |
| nFreeze | Indica a coluna que será congelada à esquerda. Só é permitido o congelamento de uma coluna, qualquer valor maior que 1 será convertido para 1. | Numérico |
| nMax | Controla o número máximo de linhas que podem ser criadas. | Numérico |
| nOpc | Determina o tipo de evento que está sendo executado. | Numérico |
| oBrowse | Objeto da MsGetDados | Objeto |
| oWnd | Objeto onde a MsGetDados será criada. | Objeto |
A MsGetDados precisa que sejam declaradas as variáveis abaixo sendo tipo Private:
- aRotina
Vetor com as rotinas que serão executadas na MBrowse e que definira o tipo de operação que esta sendo executada (inclusão, alteração, exclusão, visualização, pesquisa, ...) no 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 a rotina, se esta posição não for informada nenhum acesso será validado
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 |