Clipper On Line • Ver Tópico - Várias ABAS com MiniGui
Mudar para estilo Clássico
Projeto MiniGui - Biblioteca visual para Harbour/xHarbour
Postar uma resposta

Várias ABAS com MiniGui

03 Nov 2019 11:30

Bom dia colegas.

Código:
FUNCTION CreaBrowse( cBaseFile, aNomb, aLong, aJust, lAutofit )
   *
   aHdr       := aClone( aNomb )
   aHdr[1]    := Nil
   aCabImg    := aClone( VerHeadIcon() )
   ( Alias() )->( DBGoTop() )
   *
   DEFINE TAB Tab_1 OF oWndBase AT 40,10 WIDTH oWndBase.width  - 38 HEIGHT oWndBase.height - 150 VALUE 1 FONT "Arial" SIZE 9 TOOLTIP "" FLAT  ON CHANGE Nil
      *
      PAGE cBaseFile
         *
         DEFINE BROWSE Browse_1
            ROW         26
            COL         00
            WIDTH       oWndBase.width  - 40
            HEIGHT      oWndBase.height - 160
            VALUE       0
            WIDTHS      aLong
            HEADERS     aHdr
            WORKAREA    &cBaseFile
            FIELDS      aNomb
            FONTNAME    "Arial"
            FONTSIZE    10
            TOOLTIP     ""
            ONCHANGE    MostraRecord( cBaseFile )
            ONGOTFOCUS  NIL
            ONLOSTFOCUS NIL
            FONTBOLD    .F.
            FONTITALIC  .F.
            FONTUNDERLINE .F.
            FONTSTRIKEOUT .F.
         END BROWSE
         *
      END PAGE
      *
   END TAB
   *
   SetHeaderImages()
   *
RETURN Nil

A minha intenção é poder abrir 1 ou mais DBF´s, conforme a necessidade, cada um em sua ABA.

Com uma só ABA já está funcionando, mas estou apanhando para abrir o segundo DBF, numa segunda ABA, sem fechar a primeira ABA.

Procurei no fórum e nos SAMPLES e nenhuma "luz se acendeu".
Alguma orientação de como fazer ?

Várias ABAS com MiniGui

19 Nov 2019 08:59

Hasse escreveu:Bom dia colegas.
Com uma só ABA já está funcionando, mas estou apanhando para abrir o segundo DBF, numa segunda ABA, sem fechar a primeira ABA.


Você pode criar uma função que recupera o value do TAB e por ele definir o que você quer fazer:

Veja se ajuda, código de um TAB meu, observe o ON CHANGE:

Código:
define tab tab_produto;
       at 10,10;
       width 930;
       height 435;
       value 1;
       on change vnp12000_tab(this.value)


Com o value da TAB, faço o que quero, no código abaixo eu checo se o usuário tem permissão ou não. No seu caso pode colocar para abrir/fechar DBFs:

Código:
/*
* Checa permissões do tab
*/

function vnp12000_tab(n)
    do case
        case n = 1
        //    wcdpgm = 'vnp12010'
        case n = 2
            wcdpgm = 'vnp12020'
        case n = 3
            wcdpgm = 'vnp12030'
        case n = 4
            wcdpgm = 'vnp12040'
    endcase
    if n > 1
        if !Seg()
            setproperty('vnp12000_produto','tab_produto','value',1)
        endif
    endif
return


O que a função Seg faz é só checar em outra tabela se ele pode acessar aquele programa, caso contrário retorna em falso, dá um aviso e volta pra aba número 1.

Abraços.

Várias ABAS com MiniGui

19 Nov 2019 21:10

Boa noite colega Heero.

Beleza a tua contribuição...
Com ela já dei mais um passo à frente.
Muito obrigado.
Fico ainda com uma dúvida:

Para o controle dos vários DBF's abertos, tanto os TAB, os PAGE quanto os BROWSE podem ser controlados por índices como no teste abaixo ?
Isto fuciona desta forma ?

FUNCTION CreaBrowse( cBaseFile, aNomb, aLong, aJust, lAutofit )
*
...........
...........
*
DEFINE TAB Tab_1(n) OF oWndBase AT 40,colun(n1) WIDTH oWndBase.width - 38 HEIGHT oWndBase.height - 150 VALUE 1 FONT "Arial" SIZE 9 TOOLTIP "" FLAT ON CHANGE Nil
*
PAGE cBaseFile(n)
*
DEFINE BROWSE Browse_1(n)
ROW 26
COL 00
............
............

ON Change entendido.
Função SEG() entendido.
Postar uma resposta