Clipper On Line • Ver Tópico - Como resolver o seguinte erro

Como resolver o seguinte erro

Projeto MiniGui - Biblioteca visual para Harbour/xHarbour

Moderador: Moderadores

 

Como resolver o seguinte erro

Mensagempor Paulo_CPV » 23 Out 2015 08:34

Bom dia!
Estou tendo dificuldade de fazer um tipo de menu com o controle ButtonEx e quando eu clico na opção dá a seguinte mensagem de erro:

Application: C:\Paulo_Sistema\SisComprev22\teste.exe
Date: 23/10/2015 Time: 07:19:52
Time from start: 0 days 0 hours 0 mins 6 secs
Error MGERROR/0 Window: Parent is not defined. Program terminated.

Called from MSGMINIGUIERROR(94)
Called from _DEFINEOWNERBUTTON(492)
Called from SISTEMA:BOTOESOPCOES(473)
Called from SISTEMA:DOACTION(383)
Called from (b)SISTEMA_JANELAPRINCIPAL(209)
Called from _DOCONTROLEVENTPROCEDURE(1672)
Called from EVENTS(1569)
Called from DOMESSAGELOOP(0)
Called from _ACTIVATEWINDOW(1390)
Called from DOMETHOD(4686)
Called from SISTEMA:JANELAPRINCIPAL(345)
Called from SISTEMA:INICIALIZAAMBIENTE(1428)
Called from MAIN(21)


Rotina principal que chama a função que está dando erro:

 
   VAR aCaptions       AS ARRAY INIT  { 'Conversão' , 'Cadastros' , 'Utilitários' , 'Saída' }
   
   VAR aImagens        AS ARRAY INIT  { "Info.bmp" , "Estimate.bmp" , "Repair.bmp" , ;
                                        "Exit.bmp" , "Info2.bmp" , "Estimate2.bmp" , ;
                                        "Repair2.bmp","Exit2.bmp" }
                                       
   VAR aOpCoversao     AS ARRAY INIT  { 'Conversão de Datas' , 'Somatória (Anos, Meses e Dias)' , ;
                                        'Voltar' }

LOCAL i , cObjeto , nPos := 40 , cForm := 'JanelaPrincipal'

   DEFINE WINDOW &cForm ;
      AT 0 , 0 WIDTH ::nWidth(800) HEIGHT ::nHeight(600) ;
      TITLE JANELA_PRINCIPAL_SISTEMA ;
      MAIN ;
      TOPMOST ;
      NOSIZE ;
      NOSYSMENU ;
      NOCAPTION ;
      ON INIT { || ::CriaArquivoIni() , DoMethod( cForm , 'ImageBk' , 'Setfocus' ) }

...

      FOR i := 1 TO LEN( ::aCaptions )

         cObject := "Button_" + STR( i , 1 )

         DEFINE BUTTONEX &cObject
         
            ROW      ::nWidth(nPos)
            COL      ::nHeight(20)
            WIDTH    ::nWidth(314)
            HEIGHT   ::nHeight(72)
            PICTURE  ::aImagens [i]
            CAPTION  ::aCaptions [i]
            ACTION   ::DoAction( VAL( RIGHT( this.name , 1 ) ) , GetProperty( cForm , this.name , "Caption" ) )
            VERTICAL .F.
            LEFTTEXT .F.
            FLAT     .F.
            FONTNAME FONT_BOTAO
            FONTSIZE FONT_TAM_BOTAO
            FONTBOLD .T.
            FONTCOLOR VERDEAGUA
            BACKCOLOR VERDESAPO
            UPPERTEXT  .F.
            NOHOTLIGHT .F.
            NOXPSTYLE  .T.
            HANDCURSOR .T.
            ONMOUSEHOVER ( SetProperty( cForm , this.name , "BackColor" , VERDEDURO ) , ;
                           SetProperty( cForm , this.name , "FontColor" , WHITE ) , ::ChangeImage( this.name ) )
            ONMOUSELEAVE ( SetProperty( cForm , this.name , "BackColor" , VERDESAPO ) , ;
                           SetProperty( cForm , this.name , "FontColor" , VERDEAGUA ) , ::RestoreImage() )
               
         END BUTTONEX

         nPos += 73

      NEXT
*-----------------------------------------------------------------------------*
METHOD DoAction( nMode , cAction ) CLASS Sistema

   LOCAL cForm := 'JanelaPrincipal'

   SWITCH nMode

   CASE 1
   
      ::BotoesOpcoes( nMode ) // Está opção que está com erro
      EXIT

   CASE 2
   
      exit

   CASE 3
   
      exit

   CASE 4
   
      thiswindow.release

   END SWITCH

   IF nMode < 4
   
      MSGINFO( cAction , 'Action ' + hb_ntos( nMode ) )
     
   ENDIF

   DoMethod( cForm , 'ImageBk' , 'Setfocus' )

RETURN NIL
*-----------------------------------------------------------------------------*
METHOD ChangeImage( cCtrl ) CLASS Sistema

   LOCAL nImage := VAL( RIGHT( cCtrl , 1 ) ) , cForm := 'JanelaPrincipal'

   IF ! ::lChangeImage
   
      ::aImageBak[1] := GetProperty( cForm , cCtrl , "Picture" )
      ::aImageBak[2] := cCtrl
      ::lChangeImage := .T.
     
   ENDIF

   SetProperty( cForm , ::aImageBak[2] , "Picture" , ::aImagens[nImage + 4] )

RETURN NIL
*-----------------------------------------------------------------------------*
METHOD RestoreImage() CLASS Sistema

   LOCAL cName := ::aImageBak[1] , cCtrl := ::aImageBak[2]
   LOCAL cForm := 'JanelaPrincipal'

   SetProperty( cForm, cCtrl, "Picture", cName )
   ::lChangeImage := .F.

RETURN NIL


Parte do meu código que está dando erro:

METHOD BotoesOpcoes( nOpcao ) CLASS Sistema

LOCAL i , cBotao , nPos := 40

         FOR i := 1 TO LEN( ::aOpCoversao )

            DEFINE BUTTONEX &cBotao
         
               ROW      ::nWidth(nPos)
               COL      ::nHeight(340)
               WIDTH    ::nWidth(314)
               HEIGHT   ::nHeight(72)
               CAPTION  ::aOpCoversao[i]
               ACTION   {|| ::RotinaConversao( i ) }
               VERTICAL .F.
               LEFTTEXT .F.
               FLAT     .F.
               FONTNAME FONT_BOTAO
               FONTSIZE FONT_TAM_BOTAO
               FONTBOLD .T.
               FONTCOLOR VERDEAGUA
               BACKCOLOR VERDESAPO
               UPPERTEXT  .F.
               NOHOTLIGHT .F.
               NOXPSTYLE  .T.
               HANDCURSOR .T.
               ONMOUSEHOVER ( SetProperty( cForm , this.name , "BackColor" , VERDEDURO ) , ;
                              SetProperty( cForm , this.name , "FontColor" , WHITE ) )
               ONMOUSELEAVE ( SetProperty( cForm , this.name , "BackColor" , VERDESAPO ) , ;
                              SetProperty( cForm , this.name , "FontColor" , VERDEAGUA ) )
               
            END BUTTONEX

            nPos += 73

         NEXT

RETURN NIL
*-----------------------------------------------------------------------------*
METHOD RotinaConversao( nValor ) CLASS Sistema

   SWITCH nValor
   
      CASE 1
     
         MSG_INFO( 'Opção 1' )
         EXIT
         
      CASE 2
     
         MSG_INFO( 'Opção 2' )
         EXIT
         
         
   
   END SWITCH

RETURN NIL


Quem puder me ajudar ficarei grato.
[]'s
Paulo - Jacareí/SP
Paulo_CPV
Usuário Nível 3

Usuário Nível 3
 
Mensagens: 179
Data de registro: 07 Mar 2013 10:27
Cidade/Estado: Jacarei/SP
Curtiu: 0 vez
Mens.Curtidas: 1 vez

Como resolver o seguinte erro

Mensagempor Toledo » 26 Out 2015 12:37

Paulo_CPV escreveu:Parent is not defined. Program terminated

Como indica a mensagem de erro, faltou definir a propriedade PARENT no BUTTONEX.

DEFINE BUTTONEX &cBotao
       PARENT NomeForm
       ...

Abraços,
Toledo - Clipper On Line
toledo@pctoledo.com.br
Harbour 3.2/MiniGui/HwGui
Faça uma doação para o fórum, clique neste link: http://www.pctoledo.com.br/doacao
Avatar de usuário

Toledo
Administrador

Administrador
 
Mensagens: 3065
Data de registro: 22 Jul 2003 18:39
Cidade/Estado: Araçatuba - SP
Curtiu: 246 vezes
Mens.Curtidas: 242 vezes

Como resolver o seguinte erro

Mensagempor Paulo_CPV » 26 Out 2015 23:40

Boa noite!

Toledo malis uma vez muito obrigado pela sua dica, funcionou perfeitamente.

Obrigado,

[]'s
Paulo - Jacareí/SP
Paulo_CPV
Usuário Nível 3

Usuário Nível 3
 
Mensagens: 179
Data de registro: 07 Mar 2013 10:27
Cidade/Estado: Jacarei/SP
Curtiu: 0 vez
Mens.Curtidas: 1 vez

Como resolver o erro: HMG3.4.4 WINDOW form_util is not defin

Mensagempor syslink » 12 Abr 2020 20:37

BOA NIOTE
to com o seguinte problema q num entendo
veja parte do codigo com o erro
              DEFINE WINDOW form_util ;
            AT 0,0 WIDTH 530 HEIGHT 450 ;
            TITLE "menu util"
            // MODAL

               @ 350,230  BUTTON Button_1 CAPTION "&Ok" WIDTH 50 HEIGHT 50 ACTION thisWindow.release // msginfo('teste botão ok') // iif(MsgYesNo('Deseja Encerrar Menu UTIL'),thisWindow.release)
               
            END WINDOW
            CENTER WINDOW    form_util
            ACTIVATE WINDOW form_util
       
         do while I <= NUM_OPCOES

         cMSG += OPCOES [I,3] + '  ' + chr (LETRA) + ' ' + OPCOES [I,1] + hb_eol()
            LETRA++
            I++
         enddo

      DEFINE SPLITBOX PARENT form_util

            LISTBOX List_1 PARENT form_util;
                WIDTH 200 ;
                HEIGHT 400 ;
                ITEMS {'Item 1','Item 2','Item 3','Item 4','Item 5'} ;
                VALUE 3 ;
                TOOLTIP 'ListBox 1'

            EDITBOX Edit_1 PARENT form_util;
                WIDTH 200 ;
                HEIGHT 400 ;
                VALUE 'EditBox!!' ;
                TOOLTIP 'EditBox' ;
                MAXLENGTH 255

        END SPLITBOX   

o erro aparece no inicio do DEFINE SPLITBOX... vejam que o menu foi feito e eh encerrado pelo botao
entao sei muito bem o erro eh porque o form foi encerrado
bom como faco para que o splitbox apareça apos o end window como esta ai no codigo sem clicar no botao ok?
no meu pequeno conhecimento o splitbox era para aparecer antes de clicar no botao
mas soh aparece apos o botao q encerra o form e com certeza dara o erro

alguem tem uma ideia pra gente acrescentar atraves do parent os objetos q quiser no form após sua criaçao?

ps
outro problema
se eu colocar como modal ou child gera um erro
sempre acontece isso nos meus forms e sou obrigado a eliminar o modal/child etc
alguem sabe dizer o q causa isso?
syslink
Usuário Nível 3

Usuário Nível 3
 
Mensagens: 126
Data de registro: 20 Fev 2018 13:13
Cidade/Estado: joinvile/sc
Curtiu: 2 vezes
Mens.Curtidas: 2 vezes

Como resolver o seguinte erro

Mensagempor Toledo » 12 Abr 2020 21:41

Amigo, quando você ativa a janela com o comando ACTIVATE WINDOW form_util, qualquer linha de comando que vier depois do ACTIVATE WINDOW form_util só será executado depois que você finalizar a janela.
Toledo - Clipper On Line
toledo@pctoledo.com.br
Harbour 3.2/MiniGui/HwGui
Faça uma doação para o fórum, clique neste link: http://www.pctoledo.com.br/doacao
Avatar de usuário

Toledo
Administrador

Administrador
 
Mensagens: 3065
Data de registro: 22 Jul 2003 18:39
Cidade/Estado: Araçatuba - SP
Curtiu: 246 vezes
Mens.Curtidas: 242 vezes

Como resolver o seguinte erro

Mensagempor syslink » 12 Abr 2020 21:51

Toledo escreveu: ACTIVATE WINDOW form_util só será executado depois que você finalizar a janela.
entao quer dizer q devo colocar o actvate somente apos todos os botoes label textbox, etc estiverem sido lancados?
syslink
Usuário Nível 3

Usuário Nível 3
 
Mensagens: 126
Data de registro: 20 Fev 2018 13:13
Cidade/Estado: joinvile/sc
Curtiu: 2 vezes
Mens.Curtidas: 2 vezes




Retornar para MiniGui

Quem está online

Usuários vendo este fórum: Nenhum usuário registrado online e 2 visitantes


Ola Amigo, espero que meu site e forum tem lhe beneficiado, com exemplos e dicas de programacao.
Entao divulgue o link da Doacao abaixo para seus amigos e redes sociais ou faça uma doacao para o site forum...
MUITO OBRIGADO PELA SUA DOACAO!
Faça uma doação para o forum
cron
v
Olá visitante, seja bem-vindo ao Fórum Clipper On Line!
Efetue o seu login ou faça o seu Registro