|
Bem Vindo, Visitante
|
Todos os Fórums
ADVPL
|
Imprimir
Enviar Para um Amigo Precisa estar Logado
|
|
|
Assunto: |
Carregar aCols |
|
Versão: |
12 |
|
Plataforma: |
Microsoft |
Complemento: |
|
|
DB: |
SQL Server |
Complemento: |
|
|
|
|
|
Mensagem do
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
|
|
|
Mensagem do
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 |
|
|
Mensagem do
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
|
|