Alinhar um Char em um Disp (Output)

Discussão em 'Progress 4GL' iniciado por muertebr, Junho 27, 2013.

  1. muertebr

    muertebr Membro Participativo

    Como que eu faço pra alinha um campo do tipo char em um Disp (Output).

    Por padrão ele sai alinhado a esquerda, mais eu queria alinha a direita.
    Como que poderia ser feito?
  2. rhemati

    rhemati Membro Participativo

    Meu amigo boa noite.

    estarei postando aqui um exemplo que utilizo há muito anos.
    Fique a vontade em mudar para o problema em específico.
    segue:

    Código:
    function fn-preencheCaracterAlinhaDireita returns character ( input c-texto as char, input i-tamanhofinal  as int, input c-caracter as char ):
        def var c-destino   as char no-undo.
        def var c-retorno   as char no-undo.
        def var i-tamanho   as int  no-undo.
        def var i-x         as int  no-undo.
    
        assign i-tamanho    =   length( trim(c-texto ) ).
    
        do i-x = 1 to ( i-tamanhofinal - i-tamanho):
            assign c-destino = c-destino + c-caracter.
        end.
    
        assign  c-retorno   =   (c-destino) + (c-texto).
        return c-retorno.
    
    end function.
    
    function fn-preencheCaracterAlinhaEsquerda returns character ( input c-texto as char, input i-tamanhofinal  as int, input c-caracter as char ):
        def var c-destino   as char no-undo.
        def var c-retorno   as char no-undo.
        def var i-tamanho   as int  no-undo.
        def var i-x         as int  no-undo.
    
        assign i-tamanho    =   length( trim(c-texto ) ).
    
        do i-x = 1 to ( i-tamanhofinal - i-tamanho):
            assign c-destino = c-destino + c-caracter.
        end.
    
        assign  c-retorno   = (c-texto) + (c-destino).
        return c-retorno.
    
    end function.
    
    Segue exemplo de uso:
    Código:
    put fn-preencheCaracterAlinhaDireita( string(' '), 03, c-preenchimento ) format 'x(03)'.
    
  3. muertebr

    muertebr Membro Participativo

    Fiz algo bem parecido:

    Código:
    RUN adicionaEspaco (INPUT-OUTPUT cCampoRetornoA,
                                INPUT 9).
    
    PROCEDURE adicionaEspaco.
        define INPUT-OUTPUT parameter cTexto AS CHAR no-undo.
        define input        parameter inpTamanho as integer no-undo.
    
        DO WHILE LENGTH(cTexto) < inpTamanho.
            ASSIGN cTexto = " " + cTexto.
        END.
    
    END PROCEDURE.
    Achei que existia algo padrão do sistema.

Compartilhe esta Página