Página 1 de 1

HbMake não cria o cabeçalho.

Enviado: 22 Fev 2012 09:27
por johannstr
Olá, estou fazendo testes com programas menores para tentar depois com o programa principal, mas utilizando o hbmake faço a compilação do programa mas não da certo ele fica numa tela azul com uma caixinha em cima escrito return nil.
Está é prg principal:

Código: Selecionar todos

Function Main()
* ************************************************ *
* SISTEMA ............... BALANCO                  *
* DATA ULT. ALTERACAO ... 25/03/2007               *
* ************************************************ *
* .....definicao de ambiente
SET COLOR TO W/B
SET SCORE OFF
SET DATE BRIT
SET DELE ON
SET WRAP ON
SET CENTU ON
SET PROC TO CREPROC
* .... 
DECLARE MENU_00[12]
DO WHILE .T.
   CLEAR
   NMREDUZ="FASHION"
   CLEAR
   CAB_SCR(35,"EMISSAO DO BALANCO","V  12/10")
   MENU_00[01] =" Abandonar Sistema "
   MENU_00[02] =" Incluir Produtos  "
   MENU_00[03] =" Alterar Produtos  "
   MENU_00[04] =" Imprimir balanco  "   
   MENU_00[05] =" Configuracoes     "   
   OPCAO=Cec_Promp1(MENU_00,4,10,5)
   DO CASE
      CASE OPCAO=0 .OR. OPCAO=1
           EXIT
      CASE OPCAO=2
          * DO INCLUBAL
      CASE OPCAO=3
          * DO ALTERBAL
      CASE OPCAO=4
          * DO IMPRIBAL
      CASE OPCAO=5
           SELE A
           USE BALANCON
           INDEX ON ITEMN TO BALAN01
           USE
           SELE B
           USE BALCONFI              
           CNPJ=B->CF_CNPJ
           IEST=B->CF_IE
           EMPRE=B->CF_EMPRE
           DTREFER=B->CF_DTREFER           
           @ 16,01 clear to 22,78
           @ 16,01 to 21,78
           @ 17,02 say "CNPJ......:" GET CNPJ PICT "@R 99.999.999/9999-99" VALID !EMPTY(CNPJ)
           @ 18,02 say "Empresa...:" GET EMPRE PICT "@!" VALID !EMPTY(EMPRE)
           @ 19,02 say "Referencia:" GET DTREFER VALID !EMPTY(DTREFER)
           @ 20,02 say "Inscr.Est.:" GET IEST PICT "@R 999/9999999" VALID !EMPTY(IEST)
           READ
           IF LASTKEY()=27
              LOOP
           ENDIF
           SELE B
           REPLA CF_CNPJ WITH CNPJ,CF_EMPRE WITH EMPRE,CF_DTREFER WITH DTREFER,;
           CF_IE WITH IEST
           USE
   ENDCASE
ENDDO
CLOSE ALL
RETU NIL
 
e está a outra utilizada:

Código: Selecionar todos

* ************************************************ *
* SISTEMA ............... C.E.C                    *
* PROGRAMA .............. CREPROC                  *
* FUNCAO ................ Progr. de Pocedimentos   *
* DATA ULT. ALTERACAO ... 26/10/2004               *
* ************************************************ *
Function    CEC_PRN
Parameters  LOC_IMPR
Private     F_LIG,LOC_IMPR
* ------------------------------------------------
SET DEVI TO PRINT
RETU(.T.)
* ------------------------------------------------
Function   CAB_SCR
Parameters COLSCR,FUNSCR,PRGSCR
Private    COLSCR,FUNSCR,PRGSCR
* COLSCR  = Coluna a descricao da funcao
* FUNSCR  = Funcao do programa           
* PRGSCR  = Programa                     
* ------------------------------------------------
@ 00,00 TO 02,79 DOUBLE
@ 01,03 SAY NMREDUZ
@ 01,COLSCR SAY FUNSCR
@ 01,71 SAY PRGSCR
@ 23,01 TO 23,79
RETU NIL
* ------------------------------------------------
Function   CAB_PRN
Parameters NPAG,NOME_PRG,COLUN,TITULO,NR_TRACO,REDUZ
Private    NPAG,NOME_PRG,COLUN,TITULO,NR_TRACO,REDUZ
* NPAG    = Nro. da pagina corrente
* PROG    = Nome do programa
* COLUN   = Coluna para inicio do titulo
* TITULO  = Descricao da funcao do programa
* NR_TRACO= Nro. de tracos no cabecalho
* REDUZ   = Fator de reducao
* ------------------------------------------------
* normal="(sp10H"
IF CTL_PRN="HP"
   reduz="(sp16.60H"
   IF NR_TRACO>90
      @ 01,001   SAY reduz+" "+"PANO LEVE"
   ELSE
      @ 01,001   SAY "PANO LEVE"
   ENDIF
ELSE
   @ 01,001   SAY "PANO LEVE"
ENDIF
@ 01,(NR_TRACO-7) SAY "PAG: "+STRZERO(NPAG,3)
@ 02,001   SAY NOME_PRG
@ 02,COLUN SAY TITULO
@ 02,(NR_TRACO-15) SAY "DATA: "+DTOC(DATE())
@ 03,001   SAY REPLI("-",NR_TRACO)
RETU(.T.)
* ------------------------------------------------------------------
Function   CEC_BUSCA
Parameters VARI,BD,CTL,MSG
Private    VARI,BD,CTL,MSG
* VARI = nome da variavel enviada para consistencia
* BD   = nome do banco de dados a ser pesquisado
* CTL  = tipo de operacao: "I"-Inlcusao / "M"-Exclusao,Consulta
* MSG  = mensagem a ser enviada ao operador
* ------------------------------------------------------------------
SELE &BD
SEEK &VARI
DO CASE
   CASE FOUND() .AND. CTL="I"
        @ 23,03 SAY MSG+REPLI(CHR(196),76-LEN(MSG))
        INKEY(3)
        Msg_Err(23,05)
        RETU(.F.)
   CASE FOUND() .AND. CTL="M"
        RETU(.T.)
   CASE !FOUND() .AND. CTL="I"
        RETU(.T.)
   CASE !FOUND() .AND. CTL="M"
        @ 23,03 SAY MSG+REPLI(CHR(196),76-LEN(MSG))
        INKEY(3)
        Msg_Err(23,05)
        RETU(.F.)
   CASE FOUND() .AND. CTL="R"
        RETU(.T.)
ENDCASE
* ---------------------------------------------------------
Function   CEC_ZEROS
Parameters CL_NUM,CL_TAM
Private    CL_NUM,CL_TAM
* retorna string com zeros a esquerda
* ---------------------------------------------------------
RETU(STRZERO(VAL(CL_NUM),CL_TAM))
* ---------------------------------------------------------
Function   CEC_FUNCDB
Parameters MODO,PONTEIRO
Private    POS_CURSOR,REGISTRO
* DBEDIT() alterado
* ---------------------------------------------------------
POS_CURSOR=VETOR1[PONTEIRO]
* ....
DO CASE
   CASE MODO<4
        RETU(1)
   CASE LASTKEY()=27
        * .... Escape
        RETU(0)
   CASE LASTKEY()=13
        * ....
        IF REC_LOCK()
           IF !DELETED()
              COLUNA = COL()
              LINHA  = ROW()
              SET CURSOR ON
              @ ROW(),COL() GET &POS_CURSOR
              READ
              SET CURSOR OFF
              RETU(1)
           ELSE
              RETU(1)
           ENDIF
        ENDIF
   CASE LASTKEY()=-3
        * .... F4 pressionada
        DELE
        RETU(2)
ENDCASE
*---------------------------------------------------------
Function   CEC_MHORZ
Parameter  VETOR
Private    I,OPTF
* Menu horizontal
*---------------------------------------------------------
SET CURSOR OFF
FOR I=1 TO LEN(VETOR)
@ 23,IIF(I=1,3,COL()+8) PROMPT VETOR[I]
NEXT I
MENU TO OPTF
SET CURSOR ON
RETU(OPTF)
* --------------------------------------------------------
Function   CEC_PROMP
Parameters VETOR,LIN,COL
Private    LIN,COL,I,OPT
* --------------------------------------------------------
* SET COLOR TO W/R
@ LIN-1,COL-1 TO LIN+LEN(VETOR),COL+LEN(VETOR[1]) DOUBLE
FOR I=1 TO LEN(VETOR)
    @ IIF(I=1,LIN,ROW()+1),COL PROMPT VETOR[I]
NEXT I
* SET COLOR TO W/B
MENU TO OPT
RETU(OPT)
* --------------------------------------------------------
Function   CEC_PROMP1
Parameters VETOR,LIN,COL,NROPT
Private    LIN,COL,I,OPT,NROPT
* Vetor: Vetor contendo as opcoes de menu
* Lin  : Linha inicial para 1a. opcao
* Col  : Coluna inicial para 1a. opcao
* Nropt: Numero de opcoes no menu
* --------------------------------------------------------
@ LIN-1,COL-1 CLEAR TO LIN+NROPT,COL+LEN(VETOR[1])
@ LIN-1,COL-1 TO LIN+NROPT,COL+LEN(VETOR[1]) DOUBLE
FOR I=1 TO NROPT
@ IIF(I=1,LIN,ROW()+1),COL PROMPT VETOR[I]
NEXT I
MENU TO OPT
RETU(OPT)
* --------------------------------------------------------
Function    NET_USE
Parameters  area,file, ex_use, espera ,apelido
Private     forever
* --------------------------------------------------------
forever = (espera = 0)
DO WHILE (forever .OR. espera > 0)
   IF ex_use                    && exclusivo
      SELE &area
      USE &file EXCLUSIVE
   ELSE
      SELE &area
      IF !EMPTY(apelido)
          USE &file ALIAS &apelido               && compartilhado
      ELSE
          USE &file                              && compartilhado
      ENDIF
   ENDIF
   IF !NETERR()                 && USE bem sucedido
      RETURN (.T.)
   ENDIF
   INKEY(1)                     && espera 1 segundo
   espera = espera - 1
ENDDO
RETURN (.F.)                    && USE falhou
* --------------------------------------------------------
Function   FIL_LOCK
Parameters espera
Private    forever
* --------------------------------------------------------
IF FLOCK()
   RETURN (.T.)                        && Bloqueado
ENDIF
forever = (espera = 0)
DO WHILE (forever .OR. espera > 0)
   INKEY(.5)                           && espera 1/2 segundo
   espera = espera - .5
   IF FLOCK()
      RETURN (.T.)                     && Bloqueado
   ENDIF
ENDDO
RETURN (.F.)                           && nao conseguiu bloquear
* --------------------------------------------------------
Function   REC_LOCK
Parameters espera
Private    forever
* --------------------------------------------------------
IF RLOCK()
   RETURN (.T.)                        && Bloqueado
ENDIF
forever = (espera = 0)
DO WHILE (forever .OR. espera > 0)
   IF RLOCK()
      RETURN (.T.)                     && Bloqueado
   ENDIF
   INKEY(.5)                           && espera 1/2 segundo
   espera = espera - .5
   Msg_Err(23,02)
ENDDO
RETURN (.F.)                           && nao conseguiu bloquear
* --------------------------------------------------------
Function   ADD_REC
Parameters espera
Private    forever,ordem
* --------------------------------------------------------
forever = (espera = 0)
ordem=INDEXORD()
SET ORDER TO 0
DO WHILE (forever .OR. espera > 0)
   APPEND BLANK
   IF !NETERR()
      EXIT
   ENDIF
   espera = espera - 1
   Msg_Err(23,06)
ENDDO
SET ORDER TO ordem
IF NETERR()
   RETURN .F.                           && nao conseguiu bloquear
ENDIF
RETUR .T.
* --------------------------------------------------------
Function   MSG_ERR
Parameters LIN,POS
Private    POS,VET_MSG,LIN
* --------------------------------------------------------
DECLARE VET_MSG[50]
AFILL(VET_MSG," ")
VET_MSG[01]="        USUARIO NAO CADASTRADO !!!                "
VET_MSG[02]="Aguarde. Outra estacao esta alterando registro    "
VET_MSG[03]="Campo nao permite alteracao                       "
VET_MSG[04]="Registro excluido do arquivo                      "
VET_MSG[05]="Tecle [ESC] para sair                             "
VET_MSG[06]="Aguarde. Outra estacao esta incluindo registro    "
VET_MSG[07]="Soma das prestacoes nao confere c/ valor da compra"
VET_MSG[08]="Erro de gravacao. COMUNIQUE CPD                   "
VET_MSG[09]="Compra ja esta paga                               "
VET_MSG[10]="Nao ha saldo para a duplicata                     "
VET_MSG[11]="[ESC] - P/ sair            [ENTER] - P/ confirmar "
VET_MSG[12]="Nao ha pagamento a ser estornado                  "
VET_MSG[13]="Cliente com compras em aberto. Exclusao rejeitada "
VET_MSG[14]="Vendedor c/ compras em aberto. Exclusao rejeitada "
VET_MSG[15]="Soma dos itens nao fecha com total da compra      "
VET_MSG[16]="Estorno rejeitado. Conta em movimento             "
VET_MSG[17]="[ESC] - P/ sair   [ENTER] - P/ consultar clientes "
VET_MSG[18]="Cliente nao possui compras em andamento           "
VET_MSG[19]="Compra nao possui prestacoes pagas                "
VET_MSG[20]="Valor da compra maior que o limite de credito     "
VET_MSG[21]="[ESC] - P/ sair    [ENTER] - Proximo cliente      "
VET_MSG[22]="[ESC]-Sair [F5]-Ver prestacoes [ENTER]-Pagar prest"
VET_MSG[23]="Cliente nao encontrado                            "
VET_MSG[24]="[ESC] - Sair     [ENTER] Consulta Ficha/Cliente   "
VET_MSG[25]="Ligue a impressora !!!                            "
VET_MSG[26]="**** COPIA C/ PROBLEMAS. PROCURE RESPONSAVEL! ****"
VET_MSG[27]="************* COPIA NAO AUTORIZADA ***************"
VET_MSG[28]="Vendedor nao encontrado                           "
VET_MSG[29]="Aguarde .....                                     "
VET_MSG[30]="[ESC] - P/ sair    [ENTER] - Proxima Pagina       "
VET_MSG[31]="Data da prestacao ja informada. Rejeitada.        "
VET_MSG[32]="Funcao [F5] nao disponivel para esta tela.        "
VET_MSG[33]="Seu grupo nao tem autorizacao para esta funcao!!! "
VET_MSG[34]="Aguarde. Selecionando clientes p/ SPC.            "
VET_MSG[35]="Aguarde. Registrando SPC na ficha do cliente.     "
VET_MSG[36]="[ESC] - P/ sair    [ENTER] - Historico SPC        "
VET_MSG[37]="Aguarde. Procurando prestacoes em aberto.         "
VET_MSG[38]="Aguarde. Procurando prestacoes quitadas.          "
VET_MSG[39]="[ESC] - P/ Sair  [ENTER] - P/ Consultar Convenios "
VET_MSG[40]="Data da Prestacao com erro. Rejeitada.            "
VET_MSG[41]="Valor da Prestacao zerado. Rejeitada.             "
VET_MSG[42]="Compra nao Cadastrada.                            "
VET_MSG[43]="[ESC] - P/ Sair   [ENTER] - P/ Consultar Vendedor "
VET_MSG[44]="[ENTER] Cheques    [F2] Pgtos. Parciais           "
VET_MSG[45]="[ESC] - P/ sair   [ENTER] - P/ Consultar Grupos   "
VET_MSG[46]="[ESC] - P/ sair   [ENTER] - P/ Consultar Seccoes  "
VET_MSG[47]="[ESC] - P/ sair   [ENTER] - P/ Consultar Produtos " 
VET_MSG[48]="Cliente nao esta cadastrado em convenio. Rejeitado" 
VET_MSG[49]="[ESC] - P/ sair   [ENTER] - P/ Consultar Cartoes  " 
VET_MSG[50]="[ESC] - P/ sair   [ENTER] - P/ Consultar Detalhes " 
@ LIN,03 SAY ALLTRIM(VET_MSG[POS])+REPLI(CHR(196),76-LEN(ALLTRIM(VET_MSG[POS])))
RETU(.T.)
* -------------------------------------------------------------------
Function   CEC_NMES
Parameters NRMES
Private    NRMES,VET_NMES
* --------------------------------------------------------
DECLARE VET_NMES[12]
VET_NMES[01]="Janeiro"
VET_NMES[02]="Fevereiro"
VET_NMES[03]="Marco"
VET_NMES[04]="Abril"
VET_NMES[05]="Maio"
VET_NMES[06]="Junho"
VET_NMES[07]="Julho"
VET_NMES[08]="Agosto"
VET_NMES[09]="Setembro"
VET_NMES[10]="Outubro"
VET_NMES[11]="Novembro"
VET_NMES[12]="Dezembro"
RETU(VET_NMES[NRMES])
* ---------------------------------------------------------
PROC EX_QUERY
* ---------------------------------------------------------
SAVE SCREEN TO TELA_L24
Msg_Err(23,32)
INKEY(2)
@ 23,01 CLEAR TO 23,78
REST SCREEN FROM TELA_L24
RETU
* -----------------------------------------------------------------
Function   SCR_TERMO
Parameters SCR_TITULO,SCR_QTIND,SCR_ATUIND
Private    SCR_TITULO,SCR_QTIND,SCR_ATUIND,TAM_TITU,NRO_PARTE,DIFER
* -----------------------------------------------------------------
* .... Monta moldura
TAM_TITU=LEN(SCR_TITULO)
IF SCR_ATUIND=0
   @ 19,00 clear to 23,79
   @ 21,04 TO 23,55
   set color to gr+/b
   @ 20,05 SAY "0%"
   @ 20,51 SAY "100%"
   set color to w/b   
   set color to g/n
   @ 20,08  SAY SPACE(INT((42-TAM_TITU)/2))+SCR_TITULO+SPACE(42-INT((42-TAM_TITU)/2)-TAM_TITU)
   set color to w/b   
   RETU(.T.)
ELSE
   @ 21,04 TO 23,55
   set color to gr+/b
   @ 20,05 SAY "0%"
   @ 20,51 SAY "100%"
   set color to w/b   
ENDIF
* .... Centraliza titulo
set color to g/n
@ 20,08  SAY SPACE(INT((42-TAM_TITU)/2))+SCR_TITULO+SPACE(42-INT((42-TAM_TITU)/2)-TAM_TITU)
set color to w/b   
* .... Calcula avanco do marcador
NRO_PARTE=INT(50/SCR_QTIND)
DIFER=IIF(SCR_ATUIND=SCR_QTIND,50-(INT(50/SCR_QTIND)*SCR_QTIND),0)
* ....
IF SCR_ATUIND#SCR_QTIND
*   set color to r/b
   set color to w/n
   @ 22,05 SAY REPLI(CHR(178),(NRO_PARTE*SCR_ATUIND))
   set color to w/b
ELSE
*   set color to r/b
   set color to w/n
   @ 22,05 SAY REPLI(CHR(178),(NRO_PARTE*SCR_ATUIND+DIFER))
   set color to w/b   
   INKEY(1)
   @ 22,05 SAY REPLI(" ",50)
   @ 20,08 SAY SPACE(42)
ENDIF
RETU(.T.)
* --------------------------------------------------------
FUNCTION    PESQUISA
PARAMETERS  ARQBUSCA,CHAVE,CAMP1,CAMP2,CHAVE_C,ORDEM
PRIVATE CHAVE_C,ORDEM,F_ZZEROS,IND_PESQ
* --------------------------------------------------------
IF EMPTY(CHAVE)
   RETU(.T.)
ENDIF   
DECLARE NCAMP[2]
NCAMP[1]=CAMP1
NCAMP[2]=CAMP2
J_ANTERIOR=SAVESCREEN(00,00,24,79)
ARQ_ATUAL=ARQBUSCA
SELE &ARQBUSCA
IF !EMPTY(ORDEM)
   SET ORDER TO ORDEM
ENDIF
* .... Verifica chave zerada
CARAC1=1
F_ZZEROS=.F.
FOR IND_PESQ=CARAC1 TO LEN(CHAVE)
    IF SUBS(CHAVE,IND_PESQ,1)#"0"   && Pelo menos um digito difer. de zero
       F_ZZEROS=.T.
    ENDIF
NEXT IND_PESQ       
IF F_ZZEROS
   SELE &ARQBUSCA
   SET ORDER TO 1
   SEEK CHAVE
ELSE
   SELE &ARQBUSCA
   SEEK CHAVE
ENDIF
IF FOUND()
   SELE &ARQ_ATUAL
   RETU(.T.)
ELSE
   SAVE SCREE TO PESQTELA
   @ 02,09 CLEAR TO 22,77
   @ 02,09 TO 22,77 DOUB
   SET ORDER TO ORDEM
   GO TOP
   rec=recno()
   DBEDIT(03,10,21,76,NCAMP,"TESTAPESQ",.T.,VETOR3,"Ä"," ³","","")
   Unlock   
   RETU(.T.)
ENDIF
RETU(.T.)
* --------------------------------------------------------
FUNCTION    TESTAPESQ
PARAMETERS  MODE,COUNTER
* --------------------------------------------------------
IF rec#RECNO()
   Unlock
   rec=RECNO()
ENDIF
SET CURSOR ON
DO CASE
   CASE MODE=0
        IF DELETED()
           @ 23,70 SAY "Excluido"
        ENDIF
        RETU(1)
   CASE MODE=1
        J_PESQ=SAVESCREEN(00,00,24,79)
        @ 23,55 SAY "[Inicio do Arquivo]"         
        INKEY(.5)
        RESTSCREEN(00,00,24,79,J_PESQ)        
        RETU(1)
   CASE MODE=2
        J_PESQ=SAVESCREEN(00,00,24,79)
        @ 23,55 SAY "[Fim do Arquivo]"         
        INKEY(.5)
        RESTSCREEN(00,00,24,79,J_PESQ)        
        RETU(1)        
   CASE MODE=3
        J_PESQ=SAVESCREEN(00,00,24,79)
        @ 23,10 SAY "[Arquivo sem Conteudo]"         
        INKEY(1)
        RESTSCREEN(00,00,24,79,J_PESQ)        
        RETU(0)        
   CASE LASTKEY()=27
        SELE &ARQ_ATUAL
        RESTSCREEN(00,00,24,79,J_ANTERIOR)        
        RETU(0)        
   CASE LASTKEY()=13
        VARIAVEL=READVAR()
        &VARIAVEL=&CAMP2
        VAR_TRANS=&CAMP2
        SELE &ARQ_ATUAL
        SET ORDER TO 1
        RESTSCREEN(00,00,24,79,J_ANTERIOR)        
        CHAV_AUX="" 
        RETU(0)        
   OTHER
       SELE &ARQ_ATUAL
       CHAV_AUX=CHAV_AUX+CHR(LASTKEY())
       SEEK CHAV_AUX
       IF LEN(CHAV_AUX)>50
          CHAV_AUX=""
          GO TOP
          rec=recno()
       ENDIF   
       RETU(1)                
ENDCASE       
RETU(0)
*=================[ Funcoes UTILITARIAS ]=====================
* A seguintes funcoes: WINDOW, MUDATRIB, FORE e BACK
* sao responsaveis pela formacao de uma janela na tela.
*
*===========================================[Bruno]============

*******************
FUNCTION WINDOW(Arg1, Arg2, Arg3, Arg4, Arg5, Arg6, Arg7)
*******************
   Private nqtde, x, t, ccorant, csbinf, csblat
   ccorant:= SetColor()
   Arg6:= IIf(ValType(Arg6) != "C", "w/b", Arg6)
   Arg7:= IIf(ValType(Arg7) != "L", .T., Arg7)
   nqtde:= Int((Arg4 - Arg2) / 2)
   Set Color To (Arg6)
    if upper(arg5)="S"
       Arg5:= "ÚÄ¿³ÙÄÀ³ "
   elseif upper(arg5)="D"
       Arg5:= "ÉÍ»º¼ÍȺ "
   else        
       Arg5:= "ÚÄ¿³ÙÄÀ³ "
   endif
   For x:= nqtde To 1 Step -3
      @ Arg1, Arg2 + x, Arg3, Arg4 - x Box Arg5
      InKey(0.01)
   Next
   @ Arg1, Arg2, Arg3, Arg4 Box Arg5
   If (Arg7)
      csblat:= SaveScreen(Arg1 + 1, Arg4 + 1, Arg3, Arg4 + 1)
      csbinf:= SaveScreen(Arg3 + 1, Arg2 + 1, Arg3 + 1, Arg4 + 1)
      csblat:= mudatrib(csblat, "w/n")
      csbinf:= mudatrib(csbinf, "w/n")
      RestScreen(Arg1 + 1, Arg4 + 1, Arg3, Arg4 + 1, csblat)
      RestScreen(Arg3 + 1, Arg2 + 1, Arg3 + 1, Arg4 + 1, csbinf)
   EndIf
   Set Color To (ccorant)
Return(.T.)

*********************
Function MUDATRIB
*********************
   Parameters ctel, ccor
   Private acor:= {"N", "B", "G", "BG", "R", "RB", "GR", "W"}
   Private caux, ctrb, ccar, cascii, natr, x, crettel
   crettel:= ""
   natr:= 0
   ccor:= Upper(ccor)
   ctrb:= back(ccor)
   natr:= (ascan(acor, ctrb) - 1) * 16
   If ("x" $ ccor)
      natr:= natr + natr / 16
   Else
      ctrb:= ""
      caux:= fore(ccor)
      For x:= 1 To Len(caux)
         ccar:= SubStr(caux, x, 1)
         ctrb:= ctrb + IIf(isalpha(ccar), ccar, "")
      Next
      natr:= natr + ascan(acor, ctrb) - 1
      natr:= natr + IIf("*" $ ccor, 128, 0)
      natr:= natr + IIf("+" $ ccor, 6, 0)
   EndIf
   cascii:= Chr(natr)
   For x:= 1 To Len(ctel) Step 2
      crettel:= crettel + SubStr(ctel, x, 1) + cascii
   Next
Return crettel

***********************
Function FORE(Arg1)
***********************
   Local Local1, Local2
   Local2:= SubStr(Arg1, At("/", Arg1) + 1)
   Local1:= SubStr(Arg1, 1, At("/", Arg1) - 1)
   Local1:= IIf("+" $ Local2, Local1 + "+", Local1)
   Local1:= IIf("x" $ Local2, Local1 + "x", Local1)
   Local1:= IIf("*" $ Local2, Local1 + "*", Local1)
   Return Local1

   Keyboard Chr(27) + Chr(4) + Chr(13)
Return

************************
Function BACK(Arg1)
************************
   Local Local1, Local2, Local3, Local4
   Local1:= ""
   Local2:= SubStr(Arg1, At("/", Arg1) + 1)
   For Local4:= 1 To Len(Local2)
      Local3:= SubStr(Local2, Local4, 1)
      Local1:= Local1 + IIf(isalpha(Local3), Local3, "")
   Next
Return Local1
* ========================= FIM DE PROCEDIMENTOS ==============================
 

HbMake não cria o cabeçalho.

Enviado: 22 Fev 2012 09:28
por johannstr
O que o hbmake não faz é criar o menu do Balancoa.

Agradeço toda a ajuda.

HbMake não cria o cabeçalho.

Enviado: 22 Fev 2012 09:38
por johannstr
Agora deu o seguinte erro:
"Erroe BASE/1082 Argument error: - Arguments: < [1] = Type: U [2] = Type N Val: 1>"