Árvore de páginas

Versões comparadas

Chave

  • Esta linha foi adicionada.
  • Esta linha foi removida.
  • A formatação mudou.

...

A finalidade do ponto de entrada F240IND é permitir que a ordenação dos títulos em tela seja alterada.

O ponto de entrada F240IND é executado em dois pontos dentro da rotina FINA240 (Borderô de pagamentos), sendo elas:

  • Durante o carregamento da tela de marcação dos títulos para borderô (após informar os parâmetros iniciais);
  • Dentro do botão "Atualizar", sendo assim possível efetuar a troca do índice.


Obs. 1: somente os índices selecionados na tela de seleção de índices poderão ser utilizados para atualizar o browse de marcação de títulos. Durante a primeira execução do ponto de entrada (após a seleção manual de índices), caso seja retornado um índice que não tenha sido marcado manualmente o mesmo será adicionado aos índices da tela de marcação de títulos.

Obs. 2: caso o índice seja alfanumérico (exemplo: A, B, C), o retorno do ponto de entrada deve seguir a mesma regra da função "DBSetOrder", ou seja, o retorno deve ser numérico.


Exemplo: índice 1 e índice 2 marcados manualmente na tela seleção abaixo e índice 6 retornado através do ponto de entrada: os títulos serão ordenados pelo índice 6 e os três índices poderão ser utilizados na execução do ponto de entrada através do botão atualizar.

03. PARÂMETROS

Execução no carregamento da tela de seleção de títulos:

Nome

Tipo

Descrição

Conteúdo

paramIXB[1]

logical

lRefresh - se a execução é através do botão Atualizar ou não.

Falso
paramIXB[2]arrayaIndices - array vazio (apenas por compatibilidade. O mesmo estará preenchido na execução onde o lRefresh estiver como verdadeiro.{}


Execução através do botão "Atualizar":

Nome

Tipo

Descrição

Conteúdo

paramIXB[1]

logical

lRefresh - se a execução é através do botão Atualizar ou não.

Falso
paramIXB[2]arrayaIndices - Array (matriz) contendo os índices selecionados previamente na tela de seleção de índices.

1ª posição = Número do índice;

2ª posição = Descrição do índice conforme tabela SIX.

04. RETORNO

Nome

Tipo

Descrição

nIndex

Numérico

Número do índice que deverá reordenar os títulos apresentados para marcação.

05. EXEMPLO DE UTILIZAÇÃO

Bloco de código
languagevb
themeMidnight
firstline1
titleF240IND
linenumberstrue
#Include "TOTVS.CH"

/*/{Protheus.doc} F240IND
Ponto de entrada para manipulação de índice da tela de borderô (FINA240).

@version    P12
@since      10/09/2021
@return     numeric, índice a ser posicionado
@obs        Função utilizada nas rotinas FINA240
/*/
User Function F240IND() As Numeric

    Local aIndices  As Array
    Local lRefresh  As Logical
    Local nIndex    As Numeric

    nIndex      := 1
    lRefresh    := paramIXB[1]
    aIndices    := paramIXB[2] //somente é carregado na execução via botão Atualizar (quando lRefresh está como verdadeiro)

    //Escolha do indice inicial da tabela
    If !lRefresh
        If MsgYesNo("Desejar ordenar por Código do Fornecedor?", "F240IND - Alterar o Indice")
            nIndex := 6
        EndIf
    Else
        //Chamada via botão refresh da tabela de borderô - Permite a troca do índice atual
        //Sua lógica para seleção de índice - Exemplo utilizando List Box
        nIndex := U_SelIndex(aIndices)
    EndIf

Return nIndex

/*/{Protheus.doc} SelIndex
Rotina para seleção de índice no botão refresh da tela de seleção de borderô.

@version    P12
@since      10/09/2021
@param      aIndices array, array de índices que poderão ser selecionados
@return     numeric, indice a ser utilizado na tela de seleção de borderô
/*/
User Function SelIndex(aIndices As Array) As Numeric

    Local nVar      As Numeric
    Local nOpca     As Numeric
    Local nSE2Index As Numeric
    Local oList     As Object
    Local oDlg      As Object

	nOpca       := 2

	DEFINE MSDIALOG oDlg TITLE "Seleção de Índice" From 9, 0 To 32, 74 OF oMainWnd

	@0.5, 0.3 TO 12.2, 32.2 LABEL "Índices" OF oDlg
	@2.3, 3.0 Say OemToAnsi("  ")
	@1.0, 0.7 LISTBOX oList VAR nVar Fields HEADER "Índice" SIZE 250, 150 NOSCROLL ON DBLCLICK (nSE2Index := aIndices[oList:nAt][1], nOpca := 1, oDlg:End())

	oList:SetArray(aIndices)
	oList:bLine := {|| {aIndices[oList:nAt][2]}}

	DEFINE SBUTTON FROM 10.0, 260 TYPE 1 ACTION (nOpca := 1, nSE2Index := aIndices[oList:nAt][1], oDlg:End()) ENABLE OF oDlg
	DEFINE SBUTTON FROM 22.5, 260 TYPE 2 ACTION oDlg:End() ENABLE OF oDlg

    ACTIVATE MSDIALOG oDlg CENTERED

    //Caso cancelada a seleção, automaticamente seleciona o primeiro índice
    If nOpca == 2
        nSE2Index := 1
    EndIf

Return nSE2Index

...