Página 1 de 1

Qual o erro nessa rotina?

Enviado: 02 Jul 2012 12:53
por Vandi
Boa tarde,

Na rotina teste.prg abaixo, onde está o erro ou o que está faltando na mesma, pois, quando clico no botão "inclusao" nada acontece.

Código: Selecionar todos

#include "windows.ch"
#include "guilib.ch"
 
*---------------------------------------------------------------------------------------
Function Main
*---------------------------------------------------------------------------------------
Local oFontBtn
Local oFont := Nil
Private Form_Main

REQUEST DBFCDX
RDDSETDEFAULT( "DBFCDX" )
DBSETDRIVER( "DBFCDX" )

SET DELETE ON
SET DATE BRIT
SET CENT ON


   INIT WINDOW Form_Main MAIN MDI TITLE "CADASTRO DE CLIENTES" ;
             SIZE GetDesktopWidth(), GetDesktopHeight() // FONT oFontBtn

   AbreArquivos()
	
   MENU OF Form_Main
      MENU TITLE "&Arquivos"
         MENUITEM "&Empresas" ID 301 ACTION Empr()
         SEPARATOR
         MENUITEM "S&air" ACTION {||dbCloseAll(), EndWindow()}
      ENDMENU                                                                                            

   ENDMENU

   ACTIVATE WINDOW Form_Main ON activate {|o| Form_Main:center()}

return nil



*---------------------------------------------------------------------------------------
Function Empr()
*---------------------------------------------------------------------------------------

   @ 000, 03 button '&Inclusao'  OF Form_Main  size 200,50 on click {|| incluiempr() }
   @ 200, 03 button '&Alteracao' OF Form_Main  size 200,50 on click {|| alteraempr() }
   @ 400, 03 button '&Exclusao'  OF Form_Main  size 200,50 on click {|| excluiempr() }
   @ 600, 03 button '&Consulta'  OF Form_Main  size 200,50 on click {|| consultaempr() }
// @ 03, 400 button '&Sair' size 100,25 on click {|| oDlg:close() }

return nil


*---------------------------------------------------------------------------------------
Function IncluiEmpr()
*---------------------------------------------------------------------------------------
*
Private vCodi, vEmpr, vEnde, vInscr
Public oDlg

       INIT WINDOW oDlg MDICHILD TITLE "Inclusao de Clientes"  STYLE ;
       WS_VISIBLE + WS_OVERLAPPEDWINDOW AT 0,0 SIZE 718,376 ;     // FONT oFont;
           ON SIZE {||MsgInfo("Opção não Disponivel")}

   PREPARE FONT oFontBtn NAME "Arial" WIDTH 0 HEIGHT -12

   INIT DIALOG IncEmpresa CLIPPER NOEXIT TITLE Titulo SIZE 630, 320 Font oFontBtn


       @  25, 90 SAY Lbl_codigo     CAPTION "Codigo        " SIZE 120, 18
       @  25,120 SAY Lbl_razsoc     CAPTION "Razão Social"   SIZE 120, 18
       @  25,150 SAY Lbl_Endereco   CAPTION "Endereco"  SIZE 120, 18

       ACTIVATE DIALOG IncEmpresa ON activate {|o| IncEmpresa:center()}

return nil


func alteraempr
alert('alteracao')
return
func excluiempr
alert('exclusao')
return
func consultaempr
alert('consulta')
return



*---------------------------------------------------------------------------------------
Function AbreArquivos()
*---------------------------------------------------------------------------------------

If ! File('EMPRESA.DBF')
    dbcreate( 'EMPRESA.DBF',{;
    { "Codigo", "C", 3, 0 }, ;
    { "RazaoSocia","C",60, 0 }, ;
    { "Endereco","C",60, 0 }, ;
    { "Inscr","C",18, 0 } } )
EndIf

IF!FILE("Empresa.cdx")
    Use Empresa
    INDEX ON Codigo     TAG  Codigo TO Empresa.CDX
    INDEX ON RazaoSocia TAG  Razao  TO Empresa.CDX
    USE
ENDIF

USE Empresa Alias Empr  SHARED NEW
SET ORDER TO TAG Codigo
GO TOP

Return Nil
Agradecimentos,

Gilvandi

Qual o erro nessa rotina?

Enviado: 02 Jul 2012 14:16
por Toledo
Gilvandi, você está misturando as coisas... na linha 60 você está iniciando uma WINDOW oDlg e na linha 66 iniciando um DIALOG IncEmpresa. Então você vai ter que decidir, é um ou outro!

Para fazer um teste, faça o seguinte:

1 - comente (coloque um asterisco no início da linha) as linhas 60,61 e 62.
2 - na linha 66 troque TITLE Titulo por TITLE "Inclusao de Clientes"

Depois compile novamente esta sua rotina e veja se deu certo.

Abraços,

Qual o erro nessa rotina?

Enviado: 02 Jul 2012 17:18
por Vandi
Toledo,
Boa tarde...

Entendo o que vc disse, realmente estava uma salada. Porém, fiz as alterações que vc propôs e continua o mesmo problema: quando clico no botão "inclusão" nada acontece.
Será que falta algum comando na function Empr() para direcionar o programa para a rotina desejada: inclusao, alteracao, exclusao ou consulta?

Gilvandi

Qual o erro nessa rotina?

Enviado: 08 Jul 2012 14:37
por sygecom
Olá Vandi,
No meu ver falta uma DIALOG a ser criada quando clica no MENU, para não misturar com a tela principal.