Filtro dentro de button

Boa tarde, tabela de preços, ao clicar em F11 tenho uma rotina criada por usuario, que me trás os produtos, quando seleciono o produto desejado sou direcionado a outra rotina. Criei um botão, que ao clicar nele, ele abre uma outra rotina. Seria possível criar um tipo de "filtro" dentro desse botão para que ele traga apenas os registros que tenham o código ou nome do produto selecionado? (ao clicar no botão "Preços de Mercado" ele ja trazer filtrado apenas os registros que tenham o mesmo código ou mesmo nome do produto selecionado na página anterior)

Meu botão:

@051, 005 Button oBtn3 Prompt 'Preços de Mercado' SIZE 60, 13; Action (U_MVCZX2()) Of oPanel Pixel

:warning: Atenção: Esta publicação foi transferida automaticamente do fórum antigo, mas os anexos não foram incluídos.

É possível mas é necessário entender quais componentes você está trabalhando para te dar uma resposta mais assertiva.

Na imagem do print 3, caso o cabeçalho da tela for uma tabela e ela estiver posicionada, você poderá usar ela para criar um filtro na tela a seguir. Caso contrário, você precisará ter o código do produto armazenado em alguma variável.

Se a tela do print 4 é construída com FwMBrowse, você pode utilizar o método SetFilterDefault para criar um filtro padrão, exibindo só os registros (produtos) desejados.


// nesse exemplo, digamos que o cabeçalho da tela do print 3 seja uma tabela e ela está posicionada
// digamos que o nome dessa tabela é ZX1 e o campo de código do produto dela seja ZX1_CODPRO
// você irá construir seu browse do print 4 da seguinte maneira:

oBrowse := FwMBrowse():New()
oBrowse:SetAlias('XXX')
oBrowse:SetFilterDefault("XXX_CODPRO == '" + ZX1->ZX1_CODPRO + "'")
oBrowse:SetDescription('Preço de Mercado')
oBrowse:DisableReport()
oBrowse:Activate()

Caso não for uma tabela ou não estiver posicionada, você precisará saber o código do produto para efetuar o filtro.


// digamos que sua variável do código do produto é cCodPro
// irá filtrar o browse onde o campo XXX_CODPRO for igual a variável cCodPro

oBrowse:SetFilterDefault("XXX_CODPRO == '" + cCodPro + "'")

sobre print 3 -

		@005, 005 Say OemToAnsi("Cod. Prod.:")        OF oPanel Pixel
		@013, 005 MSGet oCod var aTopo[1][1]          PICTURE "@!"                Size 060, 004 WHEN .F. OF oPanel PIXEL COLOR CLR_BLACK

---------------- e a declaração do código--------------------------------------------------------------------------------------------------
While !EOF()
aAdd(aRet, {AllTrim(QRYB1->B1_COD) , AllTrim(QRYB1->B1_DESC) ,;
AllTrim(QRYB1->B1_XDESCM), AllTrim(QRYB1->B1_X_DESGR),;
AllTrim(QRYB1->B1_XDESCS), AllTrim(QRYB1->B1_XDESCC) ,;

A cima enviei como é feito a tabela do print 3, para ver se é possivel utilizar