Uma função interessante para quem desenha telas contendo um GetDados e precisa buscar itens na grade. A função se chama GdSeek(), você a encontra nas rotinas padrão como Pedido de Vendas (MATA410), Tabela de Preço (OMSA010), etc…

gdSeek1

Os campos que compõe a lista de opções (combobox) são as colunas do seu GetDadosgdSeek2

A função:

GdSeek( oGetDados , cTitulo , aHeaderPar , aColsPar , lOrdena , oMdlGrid )

Onde:

oGetDados : Objeto corrente da getdados

cTitulo : Texto da janela

aHeaderPar : aHeader      ( Opcional )

aColsPar : aCols        ( Opcional )

lOrdena : Ordena aCols ( Opcional )

oMdlGrid : ModelGrid    ( Opcional )

Exemplificando:

User Function APCP003I()
	Local aACabec := {/*Campos do cabeçalho que serão alterados*/}
	Local nX
	Local aItens 	:= {"PRODUTO","DESCRICAO","QUANTIDADE"}
	Local aCampos := {}
	Local aAItens := {"PRODUTO","QUANTIDADE"}
	Local aBotoes	:= {}
	
	Private aCabec  := {}
	Private aHeaderEx := {}
	Private aColsEx := {}
	Private oGetItens
	Private oCabec
	
	Static oDlg

	DEFINE MSDIALOG oDlg TITLE "Titulo" FROM 000, 000  TO 500, 500 COLORS 0, 16777215 PIXEL
		oDlg:lMaximized := .T.
		
		RegToMemory("ZZL",.T.)
		
		oCabec := Msmget():New("ZZL",0,3,,,,aCabec,{15,1,70,315},aACabec,3,,,,oDlg,,.T.,,,,,,,,.T.)
	
		DbSelectArea("SX3")
		SX3->(DbSetOrder(2))
		For nX := 1 to Len(aItens)
			If SX3->(DbSeek(aItens[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
		  	
		For nX := 1 to Len(aItens)
			If DbSeek(aItens[nX])
				Aadd(aCampos, CriaVar(SX3->X3_CAMPO))
			Endif
		Next nX
		Aadd(aCampos, .F.)
		Aadd(aColsEx, aCampos)
	
  		oGetItens := MsNewGetDados():New( 130, 000, 250, 250, GD_INSERT+GD_DELETE+GD_UPDATE, "AllwaysTrue", "AllwaysTrue",, aAItens,0, 99999, "AllwaysTrue", "", "AllwaysTrue", oDlg, aHeaderEx, aColsEx)
	  	
		oCabec:oBox:Align := CONTROL_ALIGN_TOP
		oGetItens:oBrowse:Align := CONTROL_ALIGN_ALLCLIENT
		
		AAdd(aBotoes,{"BMPCONS",{|| GdSeek(oGetItens,"Busca Itens",oGetItens:aHeader,oGetItens:aCols,If(Type("oGetItens:aIniCpos")=="A",.T.,)) },"Procurar"} )

	ACTIVATE MSDIALOG oDlg ON INIT EnchoiceBar(oDlg,{|| Processa({|| })},{|| oDlg:End(),RollbackSX8()},,aBotoes) CENTERED

Return

 

 

 


Equipe Blog Advpl

Amantes da tecnologia

1 comentário

Guilherme Gomes · 17 de abril de 2019 às 15:50

Ótimo artigo, estava atrás dessa função de busca para os objetos MsNewGetDados

Deixe uma resposta