Página 1 de 1

Como resolver o seguinte erro

Enviado: 23 Out 2015 09:34
por Paulo_CPV
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:

Código: Selecionar todos

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:

Código: Selecionar todos

 
   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:

Código: Selecionar todos

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

Como resolver o seguinte erro

Enviado: 26 Out 2015 13:37
por Toledo
Paulo_CPV escreveu:Parent is not defined. Program terminated
Como indica a mensagem de erro, faltou definir a propriedade PARENT no BUTTONEX.

Código: Selecionar todos

DEFINE BUTTONEX &cBotao
       PARENT NomeForm
       ...
Abraços,

Como resolver o seguinte erro

Enviado: 27 Out 2015 00:40
por Paulo_CPV
Boa noite!

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

Obrigado,

[]'s
Paulo - Jacareí/SP

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

Enviado: 12 Abr 2020 20:37
por syslink
BOA NIOTE
to com o seguinte problema q num entendo
veja parte do codigo com o erro

Código: Selecionar todos

              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?

Como resolver o seguinte erro

Enviado: 12 Abr 2020 21:41
por Toledo
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.

Como resolver o seguinte erro

Enviado: 12 Abr 2020 21:51
por syslink
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?