Erro Componente de controle TAB
Moderador: Moderadores
Erro Componente de controle TAB
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.
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.
Nilton Medeiros
nilton@sistrom.com.br
nilton@sistrom.com.br
- Pablo César
- Usuário Nível 7

- Mensagens: 5312
- Registrado em: 31 Mai 2006 10:22
- Localização: Curitiba - Paraná
Erro Componente de controle TAB
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:
Estou relatando este erro no fórum oficial da HMG e retorno assim que tiver algo definido.
Obrigado Nilton por relatar !

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:
Estou relatando este erro no fórum oficial da HMG e retorno assim que tiver algo definido.
Obrigado Nilton por relatar !
Um clip-abraço !
Pablo César Arrascaeta
Compartilhe suas dúvidas e soluções com todos os colegas aqui do fórum.
Evite enviar as dúvidas técnicas por MPs ou eMails, assim todos iremos beneficiar-nos.
Pablo César Arrascaeta
Compartilhe suas dúvidas e soluções com todos os colegas aqui do fórum.
Evite enviar as dúvidas técnicas por MPs ou eMails, assim todos iremos beneficiar-nos.
Erro Componente de controle TAB
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.
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.
Nilton Medeiros
nilton@sistrom.com.br
nilton@sistrom.com.br
- Pablo César
- Usuário Nível 7

- Mensagens: 5312
- Registrado em: 31 Mai 2006 10:22
- Localização: Curitiba - Paraná
Erro Componente de controle TAB
Nada ainda.NiltonGM escreveu:Nada ainda? Os desenvolvedores do Harbour devem estar um tanto ocupados e talvez demore
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.
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.NiltonGM escreveu:Estou com o projeto parado, acho que a solução temporária é encher de "Abas" o Tab principal até aparecer um release.
Um clip-abraço !
Pablo César Arrascaeta
Compartilhe suas dúvidas e soluções com todos os colegas aqui do fórum.
Evite enviar as dúvidas técnicas por MPs ou eMails, assim todos iremos beneficiar-nos.
Pablo César Arrascaeta
Compartilhe suas dúvidas e soluções com todos os colegas aqui do fórum.
Evite enviar as dúvidas técnicas por MPs ou eMails, assim todos iremos beneficiar-nos.
Erro Componente de controle TAB
Oi Pablo,
Fico no aguardo.
Um Bom domingo.
Eu não conheço a Minigui Extended, nunca baixei ela, minha primeira ferramenta foi a HMG que me aconselharam ser melhorzinha.Por falar disso, você verificou se em Minigui Extended também acontece isto ? (acho que sim, né ?)
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ê. rsVocê 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.
Fico no aguardo.
Um Bom domingo.
Nilton Medeiros
nilton@sistrom.com.br
nilton@sistrom.com.br
- Pablo César
- Usuário Nível 7

- Mensagens: 5312
- Registrado em: 31 Mai 2006 10:22
- Localização: Curitiba - Paraná
Erro Componente de controle TAB
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. ? Ou no modo vertical não resolveria ?
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:

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:
Talvez poderia utilizar como indice um Grid como neste exemplo.
Sds
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. ? Ou no modo vertical não resolveria ?
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() ?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
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:
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:
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 NilSds
Um clip-abraço !
Pablo César Arrascaeta
Compartilhe suas dúvidas e soluções com todos os colegas aqui do fórum.
Evite enviar as dúvidas técnicas por MPs ou eMails, assim todos iremos beneficiar-nos.
Pablo César Arrascaeta
Compartilhe suas dúvidas e soluções com todos os colegas aqui do fórum.
Evite enviar as dúvidas técnicas por MPs ou eMails, assim todos iremos beneficiar-nos.
Erro Componente de controle TAB
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.
Abraços
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.
Abraços
Nilton Medeiros
nilton@sistrom.com.br
nilton@sistrom.com.br
-
Claudio Soto
- Colaborador

- Mensagens: 566
- Registrado em: 27 Ago 2012 12:31
- Localização: Uruguay
- Contato:
Erro Componente de controle TAB
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
"Estoy perdido en el jardín o la granja!" kkkk
Nilton Medeiros
nilton@sistrom.com.br
nilton@sistrom.com.br
