1. Anuncie Aqui ! Entre em contato fdantas@4each.com.br

Componente MonthView - OpenEdge ABL

Discussão em 'TDN - Datasul' iniciado por Ricardo Martins Menna, Novembro 9, 2022.

  1. Página editado por Ricardo Martins Menna



    CONTEÚDO


    1. Visão Geral
    2. Chamada do Componente
      1. Definindo um Callback - Opcional
    3. Exemplo de Utilização
    4. Tela do MonthView



    01. VISÃO GERAL


    Este componente MonthView, feito em progress, tem como objetivo substituir o componente MonthView fornecido pela Microsoft, pois este OCX não possui compatibilidade com o OpenEdge 64Bits.

    Ele é um MonthView que possui as seguintes características:

    • Programa único e muito performático.
    • Feito totalmente em progress.
    • Possuímos o código fonte, onde podemos customizá-lo de acordo com as nossas necessidades.
    • Possui uma janela fixa dentro da janela pai.
    • Uma característica do MonthView no OCX, é que ele era usado apenas para mostrar um calendário embutido na janela principal, mas não selecionava nenhuma data.



    02. CHAMADA DO COMPONENTE


    Para utilizar o componente, basta fazer uma chamada persistente ao componente, realizando uma execução com RUN, conforme o exemplo abaixo:


    ParâmetrosTipoDescrição
    IdtInitialDateData inicial para o componente
    IhWinHandleHandle do janela pai
    IdeLinDecimalLinha onde o componente deverá ser posicionado
    IdeColDecimalColuna onde o componente deverá ser posicionado

    RUN utp/ut-monthView.p PERSISTENT SET hMonth (TODAY, hWin, 2, 40).



    a. Definindo um Callback - Opcional


    Quando houver a necessidade você pode criar um Callback do MonthView, onde a data selecionada nele será repassada para o programa pai.

    Para este callback você deverá utilizar a seguinte procedure:

    • Na piSetCallback temos os seguintes parâmetros:

    ParâmetrosTipoDescrição
    IhHandleHandleHandle do programa pai
    IcProcCharacterNome da procedure que será executada



    • Na procedure que for definida para o callback, deverá possuir o seguinte parâmetro:

    ParâmetrosTipoDescrição
    IdtSelectedDate
    Data que foi selecionada no MonthView






    Exemplo de utilização do Callback:


    // seta o callback caso necessario (opcional)
    RUN piSetCallback IN hMonth (THIS-PROCEDURE, "piAtualizaRetorno").

    PROCEDURE piAtualizaRetorno:
    DEFINE INPUT PARAMETER dtSelected AS DATE NO-UNDO.

    MESSAGE "Data Selecionada - " dtSelected VIEW-AS ALERT-BOX.
    END PROCEDURE.







    03. EXEMPLO DE UTILIZAÇÃO


    Estamos disponibilizando um exemplo de um programa que utiliza esse componente de MonthView, onde é necessário fazer a chamada do componente no seguinte formato:

    [​IMG]TestMonthView.p



    Exemplo de utilização do MonthView

    DEFINE VARIABLE cDat AS CHARACTER NO-UNDO FORMAT "x(10)".
    DEFINE VARIABLE dDat AS DATE NO-UNDO FORMAT "99/99/9999" INITIAL TODAY.

    DEFINE VARIABLE hWin AS HANDLE NO-UNDO.
    DEFINE VARIABLE hMonth AS HANDLE NO-UNDO.
    DEFINE VARIABLE lProc AS LOGICAL NO-UNDO.

    DEFINE BUTTON b1 LABEL "Dates Selected" SIZE 20 BY 1.14.
    DEFINE FRAME f1 b1 AT ROW 11 COL 2 WITH SIDE-LABELS THREE-D SIZE 80 BY 20.

    CREATE WINDOW hWin ASSIGN
    WIDTH = 80
    HEIGHT = 20
    STATUS-AREA = TRUE.

    ASSIGN current-window = hWin.

    DEFINE FRAME f-x
    cDat
    dDat
    WITH SIDE-LABELS 1 COLUMN ROW 1 COL 1 OVERLAY SIZE 80 BY 20
    TITLE "Teste do MonthView Progress".
    FRAME f1:pARENT = hWin.

    ON MOUSE-SELECT-DBLCLICK OF cDat, dDat DO:
    // exemplo de DtPicker
    RUN utp/ut-dtpicker.w (DATE(SELF:SCREEN-VALUE), SELF:HANDLE, OUTPUT lProc).
    END.

    // chamada ao MonthView
    RUN utp/ut-monthView.p PERSISTENT SET hMonth (TODAY, hWin, 2, 40).

    // seta o callback caso necessario (opcional)
    RUN piSetCallback IN hMonth (THIS-PROCEDURE, "piAtualizaRetorno").

    DISPLAY cDat dDat WITH FRAME f-x.
    ENABLE ALL WITH FRAME f-x.

    WAIT-FOR GO OF CURRENT-WINDOW.

    ASSIGN cDat dDat.

    MESSAGE cDat SKIP dDat
    VIEW-AS ALERT-BOX INFORMATION BUTTONS OK.

    FINALLY:
    DELETE PROCEDURE hMonth.
    END FINALLY.

    PROCEDURE piAtualizaRetorno:
    DEF INPUT PARAM dtSelected AS DATE NO-UNDO.
    ASSIGN cDat:SCREEN-VALUE IN FRAME f-x = STRING(dtSelected).
    END PROCEDURE.

    /* fim */





    04. TELA DO MONTHVIEW




    [​IMG]









    Mostrar online · Ver Alterações Online

    Continue reading...

Compartilhe esta Página