PERGUNTAS E RESPOSTAS
 
Bem Vindo, Visitante  Todos os Fórums
  ADVPL
Enviar para a impressoraImprimir  Enviar e-mail para um amigoEnviar Para um Amigo
Precisa estar Logado

Subject Assunto:
Carregar aCols
Versão:
12
Plataforma:
Microsoft
Complemento:
DB:
SQL Server
Complemento:
LinkedIn
Foto
Mensagem do Enviar e-mail Abrir o Perfil do usuário MARIAMELO MARIAMELO em 24/05/2017, 12:24 h
Local: RJ  Registro: 24/05/2017  Postagens: 3
Boa tarde.
Estou com uma dúvida, alguém poderia me ajudar?

Tenho uma Dialog com 2 NewGetDados dividindo a tela: uma que lista todos os módulos e outra com todas as tabelas
Preciso fazer o relacionamento. Ao clicar no módulo, carregar as tabelas correspondentes e selecionar (Checkbox) quais que quero salvar.

Alguém tem idéia de como posso fazer? Obrigado.
Segue o fonte onde já abre a Dialog com os 2 grids (modulos e tabelas) carregados.


#Include ‘Protheus.ch‘
#INCLUDE "FWPrintSetup.ch"
#INCLUDE "topconn.ch"
#INCLUDE "TBICONN.CH"

User Function MontaTela()
Local aObjects, aSize, aObjects, aInfo, aPosObj, oDlg
Local aField := {}
Local aButtons := {}
Local lConfirma := .F.
Local cModulo := ""
//Local aCols1 := {} //Array com as linhas do grid de Módulos
Local aCols2 := {} //Array com as linhas do grid de Tabelas
Private aAlter := {}
Private aHeader1,aHeader2
Private oGrp1,oGrp2,oGrp3,oGrp4,oGrp5
Private oMSNewGe1,oMSNewGe2
Private cGetMarca, oGetMarca
Private cGetPesq, oGetPesq
Private cEmp
Private cFil
Private aX := {}



CriaCabec()



aHeader2:={}

Aadd(aHeader2, {;
                  "",;//X3Titulo()
                  "Z1_MARK",; //X3_CAMPO
                  "",;           //X3_PICTURE
                  1,;               //X3_TAMANHO
                  0,;               //X3_DECIMAL
                  "",;               //X3_VALID
                  "",;               //X3_USADO
                  "L",;               //X3_TIPO
                  "",;                //X3_F3
                  "R",;               //X3_CONTEXT
                  "",;               //X3_CBOX
                  "",;               //X3_RELACAO
                  "",;               //X3_WHEN
                  ""})

   Aadd(aHeader2, {;
                  "Tabela",;//X3Titulo()
                  "X2_CHAVE",; //X3_CAMPO
                  "@",;           //X3_PICTURE
                  3,;               //X3_TAMANHO
                  0,;               //X3_DECIMAL
                  "",;               //X3_VALID
                  "",;               //X3_USADO
                  "C",;               //X3_TIPO
                  "",;                //X3_F3
                  "R",;               //X3_CONTEXT
                  "",;               //X3_CBOX
                  "",;               //X3_RELACAO
                  "",;               //X3_WHEN
                  ""})               

    Aadd(aHeader2, {;
                  "Nome da Tabela",;//X3Titulo()
                  "X2_NOME",; //X3_CAMPO
                  "@",;           //X3_PICTURE
                  20,;               //X3_TAMANHO
                  0,;               //X3_DECIMAL
                  "",;               //X3_VALID
                  "",;               //X3_USADO
                  "C",;               //X3_TIPO
                  "",;                //X3_F3
                  "R",;               //X3_CONTEXT
                  "",;               //X3_CBOX
                  "",;               //X3_RELACAO
                  "",;               //X3_WHEN
                  ""})     
     



   
   


//Monta Tela

aObjects := {}
aSize := {0,30,674.5,301.5,1349,603,0}//MsAdvSize(.t.)//Posições da Dialog//

AAdd(aObjects,{100,100,.T.,.T.,.F.})
AAdd(aObjects,{55,100,.t.,.t.,.F.})
AAdd(aObjects,{100,100,.t.,.t.,.F.})

aInfo := {aSize[1],aSize[2],aSize[3],aSize[4],15,10}
aPosObj := MsObjSize(aInfo,aObjects,.T.,.T.)
oDlg:=MSDialog():New(aSize[1],aSize[2],aSize[6],aSize[5],‘Módulos x Tabelas‘,,,,,CLR_BLACK,CLR_WHITE,,,.T.)

oGrp3 := TGroup():New(aPosObj[3,1], aPosObj[3,2], aPosObj[3,3]-100, aPosObj[3,4], ‘Tabelas‘, oDlg,,, .T.)
oMSNewGe2 := MsNewGetDados():New(aPosObj[3,1], aPosObj[3,2], aPosObj[3,3]-100, aPosObj[3,4],GD_UPDATE , ‘AllwaysTrue()‘, ‘AllwaysTrue()‘, ‘‘,aAlter ,, 999, ‘AllwaysTrue()‘, ‘‘ , ‘AllwaysTrue()‘, oGrp3, aHeader2, aCols2)



oGrp1 := TGroup():New(aPosObj[1,1], aPosObj[1,2], aPosObj[1,3], aPosObj[1,4], ‘Módulos‘, oDlg,,, .T.)
//oMSNewGe1 := MsNewGetDados():New(aPosObj[1,1], aPosObj[1,2], aPosObj[1,3], aPosObj[1,4],GD_UPDATE                          , ‘AllwaysTrue()‘, ‘AllwaysTrue()‘, ‘‘,aAlter ,, 999, ‘AllwaysTrue()‘, ‘‘ , ‘AllwaysTrue()‘, oGrp1, aHeader1, aCols1)

oMSNewGe1 := MsNewGetDados():New(aPosObj[1,1], aPosObj[1,2], aPosObj[1,3], aPosObj[1,4],GD_UPDATE                          , "AllwaysTrue()", "AllwaysTrue()",,aAlter,,                999, "AllwaysTrue()",,,                          oGrp1, aHeader1, {|| MudaMod(oMSNewGe1[oMSNewGe1:nAt][2], aCols1)})              



Carrega()

cGetMarca := Space(3)

oGrp2 := TGroup():New(aPosObj[2,1], aPosObj[2,2], aPosObj[2,3], aPosObj[2,4], ‘Pesquisa‘, oDlg,,, .T.)
cGetPesq := Space(3)
oGetPesq := TGet():New( aPosObj[2,1], aPosObj[2,2],{||cGetMarca},oDlg,026,009,"@!",,0,,,.F.,,.T.,,.F.,,.F.,.F.,,.F.,.F.,,cGetMarca,,,,,,,‘Pesquisa‘,1,,, )
TButton():New( aPosObj[2,1]+8, aPosObj[2,2]+32, "Pesquisa",oDlg,{||alert("Ação do botão de pesquisar")}, 40,10,,,.F.,.T.,.F.,,.F.,,,.F. )



oGetMarca := TGet():New( aPosObj[2,1]+30, aPosObj[2,2],{||cGetMarca},oDlg,026,009,"@!",,0,,,.F.,,.T.,,.F.,,.F.,.F.,,.F.,.F.,,cGetMarca,,,,,,,‘Marcar/Desmarcar por máscara (???)‘,1,,,‘???‘ )
TButton():New( aPosObj[2,1]+30+8, aPosObj[2,2]+32, "Marcar",oDlg,{||""}, 40,10,,,.F.,.T.,.F.,,.F.,,,.F. )
TButton():New( aPosObj[2,1]+30+8, aPosObj[2,2]+36+43, "Desmarcar",oDlg,{||alert("Ação do botão de desmarcar")}, 40,10,,,.F.,.T.,.F.,,.F.,,,.F. )


oGrp4 := TGroup():New(aPosObj[3,3]-90, aPosObj[3,2], aPosObj[3,3], aPosObj[3,4], ‘Tabelas‘, oDlg,,, .T.)

cTextTab := "SA1 SA2 SA3 SA4 SA5 SA6"
oTMultiget1 := tMultiget():new(aPosObj[3,3]-90, aPosObj[3,2],{| u | if( pCount() > 0,(Alert(‘Atualizar aqui o grid de tabelas marcadas‘), cTextTab := u), cTextTab )},oDlg,aPosObj[3,4]-(aPosObj[3,2]),aPosObj[3,3]-(aPosObj[3,3]-90),,,,,,.T.)

ACTIVATE MSDIALOG oDlg CENTERED on init (EnchoiceBar(oDlg,{|| lConfirma:=.T.,oDlg:End()},{|| lConfirma:=.F., oDlg:End()},,@aButtons))

If lConfirma
     
EndIf

//Reset Environment

Return


Static Function CriaCabec()
   aHeader1 := {}
   
   
          
   
   Aadd(aHeader1, {;
                  "Módulo",;//X3Titulo()
                  "Z1_MODULO",; //X3_CAMPO
                  "@",;           //X3_PICTURE
                  7,;               //X3_TAMANHO
                  0,;               //X3_DECIMAL
                  "",;               //X3_VALID
                  "",;               //X3_USADO
                  "C",;               //X3_TIPO
                  "",;                //X3_F3
                  "R",;               //X3_CONTEXT
                  "",;               //X3_CBOX
                  "",;               //X3_RELACAO
                  "",;               //X3_WHEN
                  ""})               

    Aadd(aHeader1, {;
                  "Título",;//X3Titulo()
                  "Z1_DESC",; //X3_CAMPO
                  "@",;           //X3_PICTURE
                  20,;               //X3_TAMANHO
                  0,;               //X3_DECIMAL
                  "",;               //X3_VALID
                  "",;               //X3_USADO
                  "C",;               //X3_TIPO
                  "",;                //X3_F3
                  "R",;               //X3_CONTEXT
                  "",;               //X3_CBOX
                  "",;               //X3_RELACAO
                  "",;               //X3_WHEN
                  ""})               
    
Return



Static Function Carrega()
Local i
Local ax := {}

aX:= RetModName()

For i:= 1 to Len(ax)
    Aadd(aCols1, {ax[2], ax[3], .T.})
Next i


oMSNewGe1:SetArray(aCols1,.T.)


oMSNewGe1:Refresh()

Return


Static Function MudaMod(aCols1, cModulo)

Local nI

For nI:=1 to Len(aCols1)

If SZ1->(dbSeek(XFilial("SZ1"))+cModulo+aCols1[nI][2])

aCols1[nI][1] := .T.

Else

aCols1[nI][1] := .F.

EndIf

Next






Static Function Muda()

Local aCols2 := {}

dbSelectArea("SX2")
dbSetOrder(1)


WHILE !SX2->(EOF())
     
     
     
    Aadd(aCols2, {".F.",SX2->X2_CHAVE, SX2->X2_NOME, .F.})
    
SX2->(DbSkip())
End


oMSNewGe2:SetArray(aCols2,.T.)


oMSNewGe2:Refresh()

SX2->(DbGoTop())

Return




Foto
Mensagem do Enviar e-mail Abrir o Perfil do usuário VRTN VRTN em 25/05/2017, 12:09 h
Local: MG  Registro: 09/11/2009  Postagens: 191
Bom dia!

Dentro do objeto MsNewGetDados, existe um campo chamado oBrowse que é da classe MsBrGetDBase, talvez nesse objeto, ou na classe pai dele, vc consiga um evento para tratar a alteração de linha.

Everton Alves

Foto
Mensagem do Enviar e-mail Abrir o Perfil do usuário MARIAMELO MARIAMELO em 25/05/2017, 16:27 h
Local: RJ  Registro: 24/05/2017  Postagens: 3
Obrigado Everton, vou dar uma olhada...
Bom dia.

Para postar no Fórum você precisa efetuar o seu login ou se registrar

 Mudar para Fórum

 

 

 
 
   
Pagina Principal Shopping PROTHEUS Tire suas duvidas Vagas Microsiga em todo Brasil Aprofunde seus conhecimentos Noticias Online Fale Conosco Pagina Principal