Criar Janela para exibir campos

Preciso criar uma janela dentro de pedidos de compra, tipo a de históricos de produto, dentro do botão "outras ações" (estarei anexando duas imagens com essa referência de como preciso faze-la). Mas não sei como fazer isso, preciso que ela abra e exiba alguns campos Sendo eles: C7_QUANT, C7_PRECO, C7_TOTAL, C7_VALIPI, C7_XIPIUNI, C7_VALFRE, C7_XFREUNI, C7_ICMSRET, C7_XSTUNIT, C7_XPRECO, C7_XTOTAL, C7_XDIF, C7_XDIFV, C7_XDIFT, DA1_X_ULTC, DA1_X_CULT

Ja tenho o ponto de entrada que adiciona o botão dentro do "outras ações" agora preciso que ao clicar nele, uma janela seja exibida e tenha os campos a cima Estou anexando uma imagem de referencia da janela

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

Na verdade vc deve criar uma tela de modo: pop-up.
A forma mais facil é você desenhar está tela no GAIA e chama ela por esse botão.

Uma alternativa é você utilizar a MsDialog. Aqui um exemplo bem simples:



static function altPesag()

    Local oDlg
    Local aH      := {}
    local nI
    Local cV      := 'AlwaysTrue'
    local aCpos   := {} 
    local aRet    := {}
    local aCampos := {'ZZD_QTDPES', 'ZZD_SOLVEN', 'ZZD_PRCDIL', 'ZZD_QTDDIL'}

    aAdd(aCpos, {"ZZD_COMPO"}) 
    aAdd(aCpos, {"ZZD_DSCOMP"}) 
    aAdd(aCpos, {"ZZD_PERCEN"})
    aAdd(aCpos, {"ZZD_QTDCPO"})
    aAdd(aCpos, {"ZZD_QTDPES"})
    aAdd(aCpos, {"ZZD_SOLVEN"})
    aAdd(aCpos, {"ZZD_PRCDIL"})
    aAdd(aCpos, {"ZZD_QTDDIL"})

    For nI := 1 to len(aCpos)
        Posicione("SX3",2,aCpos[nI,1],"")
        SX3->(AADD(aH,{Trim(X3Titulo()),X3_CAMPO,X3_PICTURE,X3_TAMANHO,X3_DECIMAL,X3_VALID,"",X3_TIPO,"","" }))
    Next nI

    Define MsDialog oDlg From 0,0 to 294,1000 Pixel Title "Informe o Peso"
    oBrw := MsNewGetDados():New(0,0,200,500,3,cV,cV,,aCampos,0,9999999,cV,cV,cV,oDlg,aH,aDados)

    @ 130,001 Button "OK" Size 40,15 of oDlg Pixel Action (aRet:=tudoOK(oBrw), oDlg:End())
    @ 130,045 Button "Pesar" Size 40,15 of oDlg Pixel Action (aRet:=buscaPeso(oBrw))

    Activate MsDialog oDlg Centered

return aRet

Com esse fonte eu abro uma tela para a pessoa realizar uma pesagem e faço todas as validações dentro dos botões.

Este outro eu uso um FwBrowse dentro de um MsDialog:


If Len(aDados) > 0

        DEFINE MsDialog oDlg Title "Importação de Metas" From 000, 000 To aTamanho[6], aTamanho[5] Pixel

        If Type("oBrwMeta") == "O"
            oBrwMeta:DeActivate( .T. )
        EndIf

        oBrwMeta:= FWBrowse():New(oDlg)
        oBrwMeta:SetDataArray()
        oBrwMeta:SetArray(aDados)
        oBrwMeta:DisableSeek()
        oBrwMeta:DisableReport()
        oBrwMeta:DisableSaveConfig()

        Add Column oColumn Data &("{|| aDados[oBrwMeta:nAt][" + Str(1)  + "]}")  Title "competencia"                Size AvSx3("Z13_COMPET" , EB_TAMANHO) Picture X3Picture("Z13_COMPET")    Of oBrwMeta
        Add Column oColumn Data &("{|| aDados[oBrwMeta:nAt][" + Str(2)  + "]}")  Title "cod_representante"          Size AvSx3("Z13_VEND"   , EB_TAMANHO) Picture X3Picture("Z13_VEND")        Of oBrwMeta
        Add Column oColumn Data &("{|| aDados[oBrwMeta:nAt][" + Str(3)  + "]}")  Title "razao_social_representante" Size AvSx3("A3_NOME"    , EB_TAMANHO) Picture X3Picture("A3_NOME")         Of oBrwMeta
        Add Column oColumn Data &("{|| aDados[oBrwMeta:nAt][" + Str(4)  + "]}")  Title "cod_tamanho_relatorios"     Size AvSx3("Z13_GRUPO"  , EB_TAMANHO) Picture X3Picture("Z13_GRUPO")     Of oBrwMeta
        Add Column oColumn Data &("{|| aDados[oBrwMeta:nAt][" + Str(5)  + "]}")  Title "tamanho_relatorios"         Size AvSx3("BM_DESC"    , EB_TAMANHO) Picture X3Picture("BM_DESC")        Of oBrwMeta
        Add Column oColumn Data &("{|| aDados[oBrwMeta:nAt][" + Str(6)  + "]}")  Title "cod_produto"                 Size AvSx3("Z13_PRODUT" , EB_TAMANHO) Picture X3Picture("Z13_PRODUT")    Of oBrwMeta
        Add Column oColumn Data &("{|| aDados[oBrwMeta:nAt][" + Str(7)  + "]}")  Title "desc_produto"                 Size AvSx3("B1_DESC"    , EB_TAMANHO) Picture X3Picture("B1_DESC")         Of oBrwMeta
        Add Column oColumn Data &("{|| aDados[oBrwMeta:nAt][" + Str(8)  + "]}")  Title "meta_qtdade"                 Size AvSx3("Z13_QUANT"  , EB_TAMANHO) Picture X3Picture("Z13_QUANT")     Of oBrwMeta
        Add Column oColumn Data &("{|| aDados[oBrwMeta:nAt][" + Str(9)  + "]}")  Title "corr_meta_m2"                 Size AvSx3("Z13_QUANT2" , EB_TAMANHO) Picture X3Picture("Z13_QUANT2")     Of oBrwMeta
        Add Column oColumn Data &("{|| aDados[oBrwMeta:nAt][" + Str(10)  + "]}") Title "prd_processo"                 Size AvSx3("Z13_VIA"    , EB_TAMANHO) Picture X3Picture("Z13_VIA")         Of oBrwMeta
        Add Column oColumn Data &("{|| aDados[oBrwMeta:nAt][" + Str(11)  + "]}") Title "prd_processo_desc"             Size AvSx3("Z08_DESCRI" , EB_TAMANHO) Picture X3Picture("Z08_DESCRI")     Of oBrwMeta
        Add Column oColumn Data &("{|| aDados[oBrwMeta:nAt][" + Str(12)  + "]}") Title "cod_marca"                     Size AvSx3("Z13_MARCA"  , EB_TAMANHO) Picture X3Picture("Z13_MARCA")     Of oBrwMeta
        Add Column oColumn Data &("{|| aDados[oBrwMeta:nAt][" + Str(13)  + "]}") Title "desc_marca"                 Size AvSx3("Z10_DESCRI" , EB_TAMANHO) Picture X3Picture("Z10_DESCRI")     Of oBrwMeta
        Add Column oColumn Data &("{|| aDados[oBrwMeta:nAt][" + Str(14)  + "]}") Title "meta_valor"                 Size AvSx3("Z13_VLMALV" , EB_TAMANHO) Picture X3Picture("Z13_VLMALV")     Of oBrwMeta
        Add Column oColumn Data &("{|| aDados[oBrwMeta:nAt][" + Str(15)  + "]}") Title "tipo_cliente"                 Size AvSx3("Z13_TIPOCL" , EB_TAMANHO) Picture X3Picture("Z13_TIPOCL")     Of oBrwMeta
        Add Column oColumn Data &("{|| aDados[oBrwMeta:nAt][" + Str(16)  + "]}") Title "grupo_societario"           Size AvSx3("Z13_GRPSOC" , EB_TAMANHO) Picture X3Picture("Z13_GRPSOC")     Of oBrwMeta
        Add Column oColumn Data &("{|| aDados[oBrwMeta:nAt][" + Str(17)  + "]}") Title "desc_grupo"                 Size AvSx3("AGT_DESCRI" , EB_TAMANHO) Picture X3Picture("AGT_DESCRI")     Of oBrwMeta
        Add Column oColumn Data &("{|| aDados[oBrwMeta:nAt][" + Str(18)  + "]}") Title "status"                     Size AvSx3("Z13_STATUS" , EB_TAMANHO) Picture X3Picture("Z13_STATUS")     Of oBrwMeta
        Add Column oColumn Data &("{|| aDados[oBrwMeta:nAt][" + Str(19)  + "]}") Title "cod_gerente"                 Size AvSx3("Z13_CODGER"  , EB_TAMANHO) Picture X3Picture("Z13_CODGER")     Of oBrwMeta
        Add Column oColumn Data &("{|| aDados[oBrwMeta:nAt][" + Str(20)  + "]}") Title "razao_social_gerente"         Size AvSx3("Z13_NOMGER" , EB_TAMANHO) Picture X3Picture("Z13_NOMGER")     Of oBrwMeta

        oBrwMeta:Activate()

        ACTIVATE MSDIALOG oDlg ON INIT ENCHOICEBAR(oDlg,bOK,bCancel,,,,,,,.F.) CENTERED

    else
        MsgStop("Não encontrado dados para processamento.","Atenção")
    EndIf

dentro da função SetArray eu mando um array com os dados que eu preciso que sejam preenchidos. Há muitas formas de criar uma tela com as suas necessidades, basta você criar a função dentro do Outras Ações.

Quando finalizar retorne aqui para nós como você usou.