Página 1 de 1

Erro Componente de controle TAB

Enviado: 31 Jan 2015 16:05
por NiltonGM
Prezados,

Ao incluir um componente TAB dentro de uma página da TAB principal da erro e o HMG é abortado. O componente está com erro ou não foi implementado esse recurso? Uso uma TAB com 9 Páginas e na primeira página gostaria de usar uma sub-tab com 3 ou 4 páginas, ao incluir a sub-tab da erro conforme imagem anexa.

Abraços.

Erro Componente de controle TAB

Enviado: 31 Jan 2015 18:21
por Pablo César
Oi Nilton,

Realmente está dando erro ao tentar inserir uma nova TAB dentro de uma página de TAB já existente pela IDE. O ruim que este erro deveria ser previsto.

Mesmo fazendo manualmente, não aceita aninhamentos:
Screen2.png
Screen2.png (9.03 KiB) Exibido 2289 vezes
Estou relatando este erro no fórum oficial da HMG e retorno assim que tiver algo definido.

Obrigado Nilton por relatar !
:)

Erro Componente de controle TAB

Enviado: 07 Fev 2015 15:38
por NiltonGM
Oi Pablo,

Nada ainda? Os desenvolvedores do Harbour devem estar um tanto ocupados e talvez demore, o que vc acha? Estou com o projeto parado, acho que a solução temporária é encher de "Abas" o Tab principal até aparecer um release.

Qualquer novidade envia pra gente. Um forte abraço.

Erro Componente de controle TAB

Enviado: 07 Fev 2015 15:49
por Pablo César
NiltonGM escreveu:Nada ainda? Os desenvolvedores do Harbour devem estar um tanto ocupados e talvez demore
Nada ainda.
Não seria exatamente desenvolvedores do Harbour. Tem mais a ver com HMG e/ou Minigui Extended do que outra coisa.

Por falar disso, você verificou se em Minigui Extended também acontece isto ? (acho que sim, né ?)

Tem uma limitação e eu não sei o por quê. Quem pode fazer algo é o Dr. Claudio Soto.

Mas eu aviso quando surgir um upgrade ou um patch caso consertarem.
NiltonGM escreveu:Estou com o projeto parado, acho que a solução temporária é encher de "Abas" o Tab principal até aparecer um release.
Você poderia intentar fazer o outro TAB em outro FORM (abrindo nova janela), não é algo muito estético mas estaria meio caminho andado quando solucionar essa limitação.

Erro Componente de controle TAB

Enviado: 08 Fev 2015 14:34
por NiltonGM
Oi Pablo,
Por falar disso, você verificou se em Minigui Extended também acontece isto ? (acho que sim, né ?)
Eu não conheço a Minigui Extended, nunca baixei ela, minha primeira ferramenta foi a HMG que me aconselharam ser melhorzinha.
Você poderia intentar fazer o outro TAB em outro FORM (abrindo nova janela), não é algo muito estético mas estaria meio caminho andado quando solucionar essa limitação.
Cheguei a pensar nisso, para cada grupo de Sub-Tab teria que criar um formulário de TAB. Eu perco muito tempo para fazer um formulário porque acho que sou detalhista e fico reparando a estética, aí prefiro nem começar, mas se não tem jeito... fazer o quê. rs
Fico no aguardo.

Um Bom domingo.

Erro Componente de controle TAB

Enviado: 08 Fev 2015 17:32
por Pablo César
Oi Nilton,

Acabei de fazer um teste no Minigui Extended e também dá a mesma mensagem: (não pode ser aninhado outro TAB dentro de outro TAB).

Você ja tentou utilizar o TAB em Multine = .T. ?
tela2.PNG
tela2.PNG (5.74 KiB) Exibido 2235 vezes
Ou no modo vertical não resolveria ?
tela1.PNG
tela1.PNG (7.04 KiB) Exibido 2235 vezes
NiltonGM escreveu: Eu perco muito tempo para fazer um formulário porque acho que sou detalhista e fico reparando a estética, aí prefiro nem começar
Somos dois amigo. Mas já que as vezes pensamos que fazer um form dá trabalhinho... por quê não tenta utilizar a função InputWindow() ?
Você passa os labels e os campos a serem editados por meio de vetores e você obtém o form pronto.
Dê uma olhada em:
Imagem

http://www.hmgforum.com/viewtopic.php?p=39057#p39057

O controle do TAB é considerado um recipiente, não tenho certeza se o conceito de conter um recipiente dentro de outro seria uma boa ideia.

Outra coisa que você poderia tentar, desconhecendo a finalidade de outro TAB dentro de TAB. Veja este exemplo agenda:
Tela03.png

Código: Selecionar todos

/*
 * Agenda de Contatos (2)
 * Humberto Fornazier - Março/2003
 * hfornazier@brfree.com.br
 * 
 * HMG - Harbour Win32 GUI library - Release 60
 * Copyright 2002 Roberto Lopez <mail.box.hmg@gmail.com>
 * http://www.hmgforum.com//
*/ 

#Include "hmg.ch"

#define BLUE { 0, 0, 128 }

Function Main()         
Local i := 0

SET DELETED ON
SET CENTURY ON

Private lNovo := .F.

AgendaOpen()    

DEFINE WINDOW Form_1   ;
    AT 0,0                ;
    WIDTH 480   ;  
    HEIGHT 470  ;
    TITLE "Agenda de Contatos";     
    MAIN                  ;      
    ICON "AGENDA"   ;
    NOMAXIMIZE  ;
    NOSIZE      ;       
    ON RELEASE Finaliza_Sistema() ;
    BACKCOLOR BLUE
    
    @ 010,415 Grid GIndice Of Form_1 WIDTH 48 HEIGHT 360 HEADERS {""} WIDTHS { 28 } ;                                            
              FONT "Arial" SIZE 09 BOLD ;
              TOOLTIP "Click na Letra Desejada"  ;                                                                      
              ON CLICK Pesquisa_Agenda() 

    @ 010,010 GRID Grid_Agenda      ;
              WIDTH  398            ;
              HEIGHT 360            ;
              HEADERS {"Código","Nome"}    ;
              WIDTHS  {53,338}      ;
              FONT "Arial" SIZE 09  ;
              ON DBLCLICK Novo_Registro(.F.)

    @ 385,010 BUTTON Btn_Novo Of Form_1 ;
              CAPTION '&Novo'       ;
              ACTION Novo_Registro(.T.)     ;       
              WIDTH 120 HEIGHT 27       ;
              FONT "Arial" SIZE 09      ;
              TOOLTIP "Novo Registro"       ;
              FLAT 

    @ 385,165 BUTTON Btn_Imprimir Of Form_1 ;
              CAPTION '&Imprimir'       ;
              ACTION Imprimir()     ;       
              WIDTH 120 HEIGHT 27       ;
              FONT "Arial" SIZE 09      ;
              TOOLTIP "Imprime Contatos"    ;
              FLAT 
           
    @ 385,318 BUTTON Btn_Sair Of Form_1  ;
              CAPTION '&Sair'       ;
              ACTION Form_1.Release       ;       
              WIDTH 120 HEIGHT 27     ;
              FONT "Arial" SIZE 09      ;
              TOOLTIP "Finalizar Sistema"   ;
              FLAT

    @ 418,16 ANIMATEBOX mensagem ;
             WIDTH 390      ;
             HEIGHT 20      ;
             FILE 'MSG02' AUTOPLAY

END WINDOW
For i := 1 To 26
    ADD ITEM { CHR(i+64) } TO GIndice OF Form_1   
Next
MODIFY CONTROL GIndice OF Form_1 VALUE 1

Pesquisa_Agenda()

CENTER WINDOW   Form_1
ACTIVATE WINDOW Form_1
Return

Function Pesquisa_Agenda()  
cPesq := ValorDaColuna( "GIndice" ,  "Form_1" , 1 )

cPesq := IIf( Empty(cPesq), "A" , cPesq )   

Agenda->(DBSetOrder(2))
Agenda->(DBSeek(cPesq,.T.))
DELETE ITEM ALL FROM Grid_Agenda OF Form_1
Do While ! Agenda->(Eof())
   If Substr(Agenda->Nome,1,1) == cPesq       
      ADD ITEM {Agenda->Codigo,Agenda->Nome} TO Grid_Agenda OF Form_1
   Else
      EXIT
   Endif
   Agenda->(DBSkip())
EndDo
Return Nil

Function Novo_Registro( lNovo_Registro  )
Local cCodigo   := ""
Local cNome := ""
Local cEndereco := ""
Local cBairro   := ""
Local cCep  := ""
Local cCidade   := ""
Local cEstado   := ""
Local cFone1    := ""
Local cFone2    := ""
Local cEmail    := ""

Form_1.Btn_Novo.Enabled := .F.  
Form_1.Btn_Sair.Enabled := .F.      

lNovo := lNovo_Registro

If ! lNovo     
   cCodigo := ValorDaColuna( "Grid_Agenda" ,  "Form_1" , 1 )
   Agenda->(DBSetOrder(1))
   If ! Agenda->(DBSeek( cCodigo  ))
      MsgSTOP("Registro "+cCodigo+" não localizado!!","Agenda")
      Release Window ALL
   EndIf
   cNome        := AllTrim( Agenda->Nome)
   cEndereco    := AllTrim( Agenda->Endereco)
             cBairro        := AllTrim( Agenda->Bairro)
   cCep     := AllTrim( Agenda->Cep)
   cCidade  := AllTrim( Agenda->Cidade)
   cEstado  := AllTrim( Agenda->Estado)
   cFone1       := AllTrim( Agenda->Fone1)
   cFone2       := AllTrim( Agenda->Fone2)
   cEmail       := AllTrim( Agenda->EMail)  
EndIf   

DEFINE WINDOW Form_2   ;
    AT 0,0               ;
    WIDTH 490  ;  
    HEIGHT 300 ;
    TITLE "Agenda de Contatos - "+Iif( lNovo , "Novo Registro" , "Alterando Registro");    
    ICON "AGENDA"  ;
    MODAL      ;                                          
    NOSIZE     ;      
    ON RELEASE  {|| Form_1.Btn_Novo.Enabled := .T. , Form_1.Btn_Sair.Enabled := .T. , Form_2.Btn_Excluir.Enabled := .T. , Agenda->(DBSetOrder(2)) , Pesquisa_Agenda() , Form_1.Grid_Agenda.SetFocus() } ;                  
    BACKCOLOR WHITE

    @ 10,10 LABEL Label_Codigo ;
        VALUE 'Código'     ;
        WIDTH 140       ;
        HEIGHT 30       ;
        FONT 'Arial' SIZE 09      ;
        BACKCOLOR WHITE   ;
        FONTCOLOR BLUE BOLD

    @ 40,10 LABEL Label_Nome   ;
        VALUE 'Nome'        ;
        WIDTH 140       ;
        HEIGHT 30       ;
        FONT 'Arial' SIZE 09      ;
        BACKCOLOR WHITE   ;
        FONTCOLOR BLUE BOLD

    @ 70,10 LABEL Label_Endereco   ;
        VALUE 'Endereço'       ;
        WIDTH 140       ;
        HEIGHT 30       ;
        FONT 'Arial' SIZE 09      ;
        BACKCOLOR WHITE   ;
        FONTCOLOR BLUE BOLD

    @ 100,10 LABEL Label_Bairro ;
        VALUE 'Bairro'      ;
        WIDTH 140       ;
        HEIGHT 30       ;
        FONT 'Arial' SIZE 09      ;
        BACKCOLOR WHITE   ;
        FONTCOLOR BLUE BOLD

    @ 100,360 LABEL Label_Cep       ;
        VALUE 'Cep'     ;
        WIDTH 80            ;
        HEIGHT 30       ;
        FONT 'Arial' SIZE 09      ;
        BACKCOLOR WHITE   ;
        FONTCOLOR BLUE BOLD

    @ 130,10 LABEL Label_Cidade ;
        VALUE 'Cidade'      ;
        WIDTH 140       ;
        HEIGHT 30       ;
        FONT 'Arial' SIZE 09      ;
        BACKCOLOR WHITE   ;
        FONTCOLOR BLUE BOLD

    @ 130,345 LABEL Label_Estado    ;
        VALUE 'Estado'      ;
        WIDTH 80            ;
        HEIGHT 30       ;
        FONT 'Arial' SIZE 09      ;
        BACKCOLOR WHITE   ;
        FONTCOLOR BLUE BOLD

    @ 160,10 LABEL Label_Fone1  ;
        VALUE 'Fone 1'      ;
        WIDTH 80            ;
        HEIGHT 30       ;
        FONT 'Arial' SIZE 09      ;
        BACKCOLOR WHITE   ;
        FONTCOLOR BLUE BOLD

    @ 160,346 LABEL Label_Fone2 ;
        VALUE 'Fone 2'      ;
        WIDTH 80            ;
        HEIGHT 30       ;
        FONT 'Arial' SIZE 09      ;
        BACKCOLOR WHITE   ;
        FONTCOLOR BLUE BOLD

    @ 190,10 LABEL Label_Email  ;
        VALUE 'e-mail'      ;
        WIDTH 140       ;
        HEIGHT 30       ;
        FONT 'Arial' SIZE 09      ;
        BACKCOLOR WHITE   ;
        FONTCOLOR BLUE BOLD

    @ 13,70 TEXTBOX T_Codigo       ;
        WIDTH 40           ;
        VALUE cCodigo      ;
        TOOLTIP 'Código do Contato' 

    @ 43,70 TEXTBOX T_Nome      ;   
        OF Form_2     ;
        WIDTH 400     ;
        VALUE cNome       ;
        TOOLTIP 'Nome do Contato' ;
        MAXLENGTH 40      ;
        UPPERCASE     ;
        ON ENTER Iif( ! Empty( Form_2.T_Nome.Value ) , Form_2.T_Endereco.SetFocus , Form_2.T_Nome.SetFocus )

    @ 73,70 TEXTBOX T_Endereco   ;
        OF Form_2      ;
        WIDTH 400        ;
        VALUE cEndereco      ;
        TOOLTIP 'Endereço do Contato';
        MAXLENGTH 40     ;
        UPPERCASE        ;
        ON GOTFOCUS Form_2.Btn_Salvar.Enabled := .T.  ;
        ON ENTER Form_2.T_Bairro.SetFocus 

    @ 103,70 TEXTBOX T_Bairro     ;   
        OF Form_2      ; 
        WIDTH 250     ;
        VALUE cBairro     ;
        TOOLTIP 'Bairro do Contato'   ;
        MAXLENGTH 25      ;
        UPPERCASE     ;
        ON ENTER Form_2.T_Cep.SetFocus          

    @ 103,390 TEXTBOX T_Cep       ;
        OF Form_2     ;   
        WIDTH 80      ;
        VALUE cCep        ;
        TOOLTIP 'Cep do Contato'  ;
        MAXLENGTH 08      ;
        UPPERCASE     ;   
        ON ENTER Form_2.T_Cidade.SetFocus 

    @ 133,70 TEXTBOX T_Cidade     ;
        OF Form_2     ;
        WIDTH 250     ;
        VALUE cCidade     ;
        TOOLTIP 'Bairro do Contato'   ;
        MAXLENGTH 25      ;
        UPPERCASE     ;
        ON ENTER Form_2.T_Estado.SetFocus           

    @ 133,390 TEXTBOX T_Estado    ;
        OF Form_2     ;
        WIDTH 30      ;
        VALUE cEstado     ;
        TOOLTIP 'Estado do Contato';
        MAXLENGTH 02      ;
        UPPERCASE     ;
        ON ENTER Form_2.T_Fone1.SetFocus

    @ 163,70 TEXTBOX T_Fone1      ;
        OF Form_2       ;
        WIDTH 110     ;
        VALUE cFone1      ;
        TOOLTIP 'Telefone do Contato';
        MAXLENGTH 10      ;
        UPPERCASE     ;   
        ON ENTER Form_2.T_Fone2.SetFocus

    @ 163,390 TEXTBOX T_Fone2 ;
        OF Form_2     ;
        WIDTH 80      ;
        VALUE cFone2      ;
        TOOLTIP 'Telefone do Contato';
        MAXLENGTH 10      ;
        UPPERCASE     ;   
        ON ENTER Form_2.T_Email.SetFocus

    @ 193,70 TEXTBOX T_Email      ;
        OF Form_2       ;
        WIDTH 400     ;
        VALUE cEmail      ;
        TOOLTIP 'E-mail do Contato'   ;
        MAXLENGTH 40      ;
        LOWERCASE     ;
        ON ENTER Form_2.Btn_Salvar.SetFocus

    @ 232,70 BUTTON Btn_Salvar Of Form_2   ;
        CAPTION '&Salvar'     ;
        ACTION Salvar_Registro()        ;       
        WIDTH 120 HEIGHT 27     ;
        FONT "Arial" SIZE 09      ;
        TOOLTIP "Salvar Registro" ;
        FLAT       

    @ 232,210  BUTTON Btn_Excluir Of Form_2   ;
        CAPTION '&Deletar'        ;
        ACTION Excluir_Registro()   ;       
        WIDTH 120 HEIGHT 27     ;
        FONT "Arial" SIZE 09      ;
        TOOLTIP "Excluir Registro"    ;
        FLAT

    @ 232,346  BUTTON Btn_Cancelar Of Form_2  ;
        CAPTION '&Cancelar'       ;
        ACTION Sair_do_Form2()      ;       
        WIDTH 120 HEIGHT 27     ;
        FONT "Arial" SIZE 09      ;
        TOOLTIP "Cancelar Operação" ;
        FLAT

END WINDOW
Form_2.T_Codigo.Enabled := .F.

If lNovo
   Form_2.Btn_Salvar.Enabled := .F. 
   Form_2.Btn_Excluir.Enabled := .F.    
EndIf

CENTER WINDOW   Form_2
ACTIVATE WINDOW Form_2
Return Nil

Function Salvar_Registro()
Local ProximoCodigo := ""
Local cCodigo       := ""

If Empty( Form_2.T_Nome.Value )
   MsgINFO( "Nome não foi Informado!!" , "Agenda" )
   Form_2.T_Nome.SetFocus
   Return Nil
EndIf       

If lNovo      
   Agenda->(DBSetOrder(1))
   Agenda->(DBGoBottom())
   ProximoCodigo := StrZero(  Val( Agenda->Codigo ) + 1 , 4 )
   Agenda->(DBAppend())
   Agenda->Codigo := ProximoCodigo    
   Agenda->Nome := Form_2.T_Nome.Value  
   Agenda->Endereco := Form_2.T_Endereco.Value
             Agenda->Bairro := Form_2.T_Bairro.Value
   Agenda->Cep  := Form_2.T_Cep.Value   
   Agenda->Cidade   := Form_2.T_Cidade.Value    
   Agenda->Estado   := Form_2.T_Estado.Value    
   Agenda->Fone1    := Form_2.T_Fone1.Value 
   Agenda->Fone2    := Form_2.T_Fone2.Value 
   Agenda->EMail    := Form_2.T_Email   .Value
Else
   cCodigo := Form_2.T_Codigo.Value
   Agenda->(DBSetOrder(1))
   If ! Agenda->(DBSeek( cCodigo  ))
      MsgSTOP("Registro "+cCodigo+" não localizado!!","Agenda")
      Release Window ALL
   EndIf
   If BloqueiaRegistroNaRede( "Agenda" )
      Agenda->Nome  := Form_2.T_Nome.Value
      Agenda->Endereco    := Form_2.T_Endereco.Value
      Agenda->Bairro  := Form_2.T_Bairro.Value
      Agenda->Cep       := Form_2.T_Cep.Value   
      Agenda->Cidade    := Form_2.T_Cidade.Value    
      Agenda->Estado    := Form_2.T_Estado.Value    
      Agenda->Fone1 := Form_2.T_Fone1.Value 
      Agenda->Fone2 := Form_2.T_Fone2.Value 
      Agenda->EMail := Form_2.T_Email.Value 
      Agenda->(DBUnlock())
   EndIf    
EndIf 
MsgInfo( "Registo "+Iif( lNovo , "Incluído" ,"Alterado!!" )  )
PosicionaIndice( Left( Agenda->Nome , 1 ) )
Pesquisa_Agenda()
Form_2.Release 
Return Nil

Function Sair_do_Form2()
Form_1.Btn_Novo.Enabled := .T.  
Form_1.Btn_Sair.Enabled := .T.
Form_2.Btn_Excluir.Enabled := .T.       
Form_2.Release    
Agenda->(DBSetOrder(2))
Pesquisa_Agenda()
Form_1.Grid_Agenda.SetFocus()
Return Nil

Function Excluir_Registro()                     
If MsgOkCancel ("Confirma Exclusão do Registro??", "Excluir "+AllTrim(Agenda->Nome))
   If BloqueiaRegistroNaRede( "Agenda" )
      Agenda->(DBDelete())
      Agenda->(DBUnlock())
      MsgINFO("Registro Excluído!!","Agenda")    
      Sair_do_Form2()
   EndIf
EndIf
Form_1.Grid_Agenda.SetFocus
Return Nil

Function Finaliza_Sistema() 
Agenda->(DBCloseArea())
Return Nil
    
Function AgendaOpen()
Local nArea    := Select( 'Agenda' )
Local aarq := {}       
Local aDados   := {} 

If nArea == 0
   If ! FILE( "AGENDA.DBF" )
      Aadd( aArq , { 'CODIGO'  , 'C'   , 04    , 0 } )
      Aadd( aArq , { 'NOME '       , 'C'   , 40    , 0 } )
      Aadd( aArq , { 'ENDERECO'    , 'C'   , 40    , 0 } )
      Aadd( aArq , { 'BAIRRO'      , 'C'   , 25    , 0 } )
      Aadd( aArq , { 'CEP'         , 'C'   , 08    , 0 } )
      Aadd( aArq , { 'CIDADE'      , 'C'   , 25    , 0 } )
      Aadd( aArq , { 'ESTADO'  , 'C'   , 02    , 0 } ) 
      Aadd( aArq , { 'FONE1'       , 'C'   , 10    , 0 } )
      Aadd( aArq , { 'FONE2'       , 'C'   , 10    , 0 } ) 
      Aadd( aArq , { 'EMAIL'       , 'C'   , 40    , 0 } )
      DBCreate( "AGENDA.DBF" , aArq  )      
   EndIf
   Use AGENDA Alias Agenda new shared
   If ! File( 'Agenda1.ntx' )
      Index on Codigo to Agenda1
   Endif
   If ! File( 'Agenda2.ntx' )
      Index on Nome  to Agenda2
   Endif
   Agenda->(DBCLearIndex())
   Agenda->(DBSetIndex( 'Agenda1'))
   Agenda->(DBSetIndex( 'Agenda2'))
Endif  
Return Nil

Function ValorDaColuna( ControlName, ParentForm , nCol )
Local aRet := {}
If GetControlType (ControlName,ParentForm) != "GRID"
   MsgBox( "Objeto não é um Grid!!") 
   Return( aRet )
EndIf   
nCol := Iif( nCol == Nil .Or. nCol == 0 , 1 , nCol )
aRet := GetProperty (  ParentForm  , ControlName , 'Item' , GetProperty( ParentForm , ControlName , 'Value' ) )
Return( aRet[ nCol ] )  

Function BloqueiaRegistroNaRede( cArea )
Do While ! (cArea)->(RLock())
   If ! MSGRetryCancel("Registro em Uso na Rede Tenta Acesso??","Agenda")
      Return .F.
   EndIf
EndDo
Return .T.

Function PosicionaIndice(cLetra)
Local i := 0

For i := 1 To 26
    If CHR(i+64) == cLetra
       MODIFY CONTROL GIndice OF Form_1 VALUE i
    EndIf
Next
Form_1.GIndice.SetFocus
Return Nil

Function Imprimir()
Local nLinha := 0
Local i :=  0
Local cLetra := ""
Local nReg   := 0

Private nFont := 11
Private cArquivo := "" 

Set Printer TO REL.TMP
Set Printer ON
Set Console OFF

cLetra := ValorDaColuna( "GIndice" ,  "Form_1" , 1 )

Agenda->(DBSetOrder(2))
Agenda->(DBSeek(cLetra,.T.))    
Do While ! Agenda->(Eof())
   If Substr(Agenda->Nome,1,1) == cLetra
      If nLinha == 0
         ? PadC("     Agenda de Contatos",78)
         ? PadC("Contatos Cadastrados com letra "+cLetra,78)
         ? "Código  Nome"           
         ? Replicate("-",78)
      EndIf
      nLinha += 1
      nReg += 1
      ?   "  "+Agenda->Codigo +   "   "
      ?? Agenda->Nome                              
   Else
      EXIT
   Endif
   Agenda->(DBSkip())
EndDo
? Replicate("-",78)
? "Registros Impressos: "+StrZero(nReg,4)

Set Printer TO 
Set Printer OFF
Set Console ON

cArquivo :=memoRead("REL.TMP")

DEFINE WINDOW Form_3;
    At 0,0              ;
    Width 450        ;
    Height 500       ;
    Title "Contatos Cadastrados com Letra "+cLetra;
    ICON "AGENDA";
    CHILD ;
    NOSYSMENU;
    NOSIZE       ;       
    BACKCOLOR WHITE

    @ 20,-1 EDITBOX Edit_1 ;
        WIDTH 460 ;
        HEIGHT 510 ;
        VALUE cArquivo ;
        TOOLTIP "Contatos Cadastrados com Letra "+cLetra ;
        MAXLENGTH 255                

    @ 01,01 BUTTON Bt_Zoom_Mais  ;
        CAPTION '&Zoom(+)'             ;
        WIDTH 120 HEIGHT 17    ;
        ACTION ZoomLabel(1);
        FONT "MS Sans Serif" SIZE 09 FLAT 

    @ 01,125 BUTTON Bt_Zoom_menos  ;
        CAPTION '&Zoom(-)'             ;
        WIDTH 120 HEIGHT 17    ;
        ACTION ZoomLabel(2);
        FONT "MS Sans Serif" SIZE 09 FLAT

    @ 01,321 BUTTON Sair_1  ;
        CAPTION '&Sair'             ;
        WIDTH 120 HEIGHT 17    ;
        ACTION Form_3.Release;
        FONT "MS Sans Serif" SIZE 09 FLAT

END WINDOW
MODIFY CONTROL Edit_1 OF Form_3 FONTSIZE nFont  
Center Window Form_3
Activate Window Form_3
Return Nil

Function ZoomLabel(nmm)         
If nmm == 1 
   nFont++
Else
   nFont--
Endif
MODIFY CONTROL Edit_1 OF Form_3 FONTSIZE nFont
Return Nil
Talvez poderia utilizar como indice um Grid como neste exemplo.
Sds

Erro Componente de controle TAB

Enviado: 09 Fev 2015 17:08
por NiltonGM
Oi Plablo,

Além da quantidade de abas que preciso tenho a necessidade de agrupar-las, as outras opções são interessante, vou analisar.
Componentes de controle de TAB's em outras linguagens permite sem problema. Veja o aninhamento de abas dentro de abas em Java.
sub-abas.png
Abraços

Erro Componente de controle TAB

Enviado: 10 Fev 2015 11:43
por Claudio Soto
El no poder anidar los controles TAB no es un problema de lenguaje es un problema del funcionamiento de la estructura interna de HMG.

Erro Componente de controle TAB

Enviado: 12 Fev 2015 13:01
por NiltonGM
"Estoy perdido en el jardín o la granja!" kkkk