Tive bastante dificuldade para criar um grid em AdvPl, com muito esforço consegui.
A MSGetDados() é o componente mais utilizado para a construção de grids de
digitação/exibição. Algumas das propriedades são:
- Inclusão, alteração e exclusão de linhas
- Inclusão de número sequencial automático (identificador de item)
- Considera os tipos de campos e suas propriedades (calculadora para números, calendários para datas, listas de opções, F3-pesquisa em outras tabelas etc)
- Validação por linha e validação após todo o preenchimento
- Aplicação das propriedades dos campos de dicionário (x3_valid, x3_cbox, x3_f3 etc) e permite o uso de gatilhos (SX7).
#Include "PROTHEUS.CH"//--------------------------------------------------------------/*/{Protheus.doc} MFGRadeDescription@param xParam Parameter Description@return xRet Return Description@author - Maria Camila Lijó@since 10/5/2012/*///--------------------------------------------------------------User Function MFGRade()Static oDlg DEFINE MSDIALOG oDlg TITLE "Grade em AdvPl" FROM 000, 000 TO 500, 500 COLORS 0, 16777215 PIXEL fMSNewGetDados1() // Don't change the Align Order oMSNewGetDados1:Align := CONTROL_ALIGN_BOTTOM ACTIVATE MSDIALOG oDlgReturn//------------------------------------------------Static Function fMSNewGetDados1()//------------------------------------------------Local nXLocal aHeaderEx := {}Local aColsEx := {}Local aFieldFill := {}Local aFields := {"Teste 1"}Local aAlterFields := {"TESTE_1"}Static oMSNewGetDados1 // Define field properties DbSelectArea("SX3") SX3->(DbSetOrder(2)) For nX := 1 to Len(aFields) If SX3->(DbSeek(aFields[nX])) Aadd(aHeaderEx, {AllTrim(X3Titulo()),SX3->X3_CAMPO,SX3->X3_PICTURE,SX3->X3_TAMANHO,SX3->X3_DECIMAL,SX3->X3_VALID,; SX3->X3_USADO,SX3->X3_TIPO,SX3->X3_F3,SX3->X3_CONTEXT,SX3->X3_CBOX,SX3->X3_RELACAO}) Endif Next nX // Define field values For nX := 1 to Len(aFields) If DbSeek(aFields[nX]) Aadd(aFieldFill, CriaVar(SX3->X3_CAMPO)) Endif Next nX Aadd(aFieldFill, .F.) Aadd(aColsEx, aFieldFill) oMSNewGetDados1 := MsNewGetDados():New( 115, 000, 250, 250, GD_INSERT+GD_DELETE+GD_UPDATE, "AllwaysTrue", "AllwaysTrue", "+Field1+Field2", aAlterFields,, 999, "AllwaysTrue", "", "AllwaysTrue", oDlg, aHeaderEx, aColsEx)Return