Clipper On Line • Ver Tópico - Teste de inclusão

Teste de inclusão

Projeto MiniGui - Biblioteca visual para Harbour/xHarbour

Moderador: Moderadores

 

Teste de inclusão

Mensagempor Vandi » 27 Set 2012 20:06

Boa noite,

Estou com um problema e gostaria de poder contar com a ajuda dos colaboradores dêsse forum.
Na rotina em anexo, ao ser executada, será mostrada na tela o problema a que me refiro.
Como não conseguí anexar o arquivo exemplo CONTAS.DBF o mesmo deverá ser criado antes, com os seguintes campos:
CODI - C - 4
DESC - C - 70

Após criado, grave uns 10 registros para fazer o teste de funcionamento da rotina.

#include 'minigui.ch'

FUNC MAIN()

        REQUEST DBFCDX
        RDDSETDEFAULT( "DBFCDX" )

        SET NAVIGATION EXTENDED

        DEFINE WINDOW Win_4  AT 100,100        ;
                WIDTH 800    HEIGHT 490        ;
                TITLE 'TESTE DE INCLUSAO'      ;
                MAIN     FONT 'ARIAL' SIZE 11  ;
                ON INIT ABREARQ()              ;
                ON RELEASE FECHAARQ()

                ON KEY ESCAPE OF Win_4 ACTION Win_4.RELEASE

                @  30,018 FRAME FRAME_2   WIDTH 140      HEIGHT 36
                @  80,018 FRAME FRAME_3   WIDTH 751      HEIGHT 57
                @ 150,018 FRAME FRAME_7   WIDTH 223      HEIGHT 36
                @ 200,018 FRAME FRAME_8   WIDTH 223      HEIGHT 36

                @ 270,050 FRAME FRAME_9   WIDTH 700      HEIGHT 135
                *---------------------------------------------
                @  40, 30 LABEL lConta VALUE 'Código:' ;
                         WIDTH 60 HEIGHT 20  FONT 'ARIAL' SIZE 11

                @ 036, 90 TEXTBOX vConta   ;
                        FONT 'ARIAL' SIZE 11  ;
                        WIDTH 50 HEIGHT 25  INPUTMASK '9999' RIGHTALIGN   ;
                        ON GOTFOCUS Win_4.lConta.FontBold :=.T. ;
                        ON LOSTFOCUS Win_4.lConta.FontBold :=.F.;
                        ON ENTER PEGAHISTORICO(Win_4.vConta.Value)

                *---------------------------------------------
                @  88, 30 LABEL lHistorico VALUE 'Histórico:'  ;
                         WIDTH  80 HEIGHT 15  FONT 'ARIAL' SIZE 11

                @ 106, 30 TEXTBOX vHistorico   ;
                        FONT 'ARIAL' SIZE 11  ;
                        WIDTH 730 HEIGHT 25  MAXLENGTH 45;
                        ON GOTFOCUS Win_4.lHistorico.FontBold :=.T. ;
                        ON LOSTFOCUS Win_4.lHistorico.FontBold :=.F.
                *---------------------------------------------
                @ 160, 30 LABEL lData VALUE 'Data:' ;
                         WIDTH  80 HEIGHT 20  FONT 'ARIAL' SIZE 11

                @ 156, 130 TEXTBOX tData OF Win_4 Value '';
                        WIDTH 100 HEIGHT 25  FONT 'ARIAL' SIZE 12  INPUTMASK '99/99/9999' ;
                        RIGHTALIGN   ;
                        ON GOTFOCUS Win_4.lData.FontBold :=.T. ;
                        ON LOSTFOCUS Win_4.lData.FontBold :=.F.
                *---------------------------------------------
                @ 208, 30 LABEL lValor VALUE 'Valor:' ;
                         WIDTH  80 HEIGHT 20  FONT 'ARIAL' SIZE 13

                @ 206, 110 TEXTBOX tValorOriginal OF Win_4 Value '';
                        FONT 'ARIAL' SIZE 12  NUMERIC  INPUTMASK '9,999,999.99' ;
                        ON GOTFOCUS Win_4.lValor.FontBold :=.T. ;
                        ON LOSTFOCUS Win_4.lValor.FontBold :=.F.
                *---------------------------------------------

@280, 70 LABEL LIN1 VALUE 'O problema dessa rotina é o seguinte: ao entrar com o código o  sistema me traz no' ;
         WIDTH 700  FONT 'ARIAL'  SIZE 13  FONTCOLOR GRAY BOLD
@300, 70 LABEL LIN2 VALUE 'campo <Histórico> um valor pré-cadastrado. Porém, antes de entrar  com o  comple-' ;
         WIDTH 700  FONT 'ARIAL'  SIZE 13  FONTCOLOR GRAY BOLD
@320, 70 LABEL LIN3 VALUE 'mento do mesmo eu preciso teclar <End> ou <Seta Direita>, caso  contrário o valor' ;
         WIDTH 700  FONT 'ARIAL'  SIZE 13  FONTCOLOR GRAY BOLD
@340, 70 LABEL LIN4 VALUE 'do campo será apagado.' ;
         WIDTH 700  FONT 'ARIAL'  SIZE 13  FONTCOLOR GRAY BOLD
@360, 70 LABEL LIN5 VALUE 'Pergunta: como fazer para entrar com o complemento do histórico sem a necessida-' ;
         WIDTH 700  FONT 'ARIAL'  SIZE 13  FONTCOLOR GRAY BOLD
@380, 70 LABEL LIN6 VALUE 'de de ter que pressionar qualquer tecla antes???' ;
         WIDTH 700  FONT 'ARIAL'  SIZE 13  FONTCOLOR GRAY BOLD

        END WINDOW

        CENTER WINDOW Win_4
        ACTIVATE WINDOW Win_4

RETURN

FUNCTION ABREARQ
*----------------------------
USE CONTAS
INDEX ON CODI TAG CDG TO CONTAX
RETURN NIL

FUNCTION FECHAARQ
*----------------------------
CLOSE CONTAS
RETURN NIL

FUNCTION PEGAHISTORICO(vConta)
*----------------------------
CONTAS->(DBGOTOP())
CONTAS->(DBSEEK(vConta))
IF!FOUND()
   MSGINFO('CONTA INEXISTENTE','AVISO')
*  Win_4.vConta.Value:=' '
   Win_4.vConta.SetFocus
   RETURN.F.
ELSE
   Win_4.vHistorico.Caption:=ALLTRIM(CONTAS->DESC)+' '
   RETURN.T.
ENDIF


Agradecimentos antecipados,

Gilvandi
Vandi
Usuário Nível 2

Usuário Nível 2
 
Mensagens: 83
Data de registro: 16 Set 2011 23:26
Cidade/Estado: Brasilia-DF
Curtiu: 0 vez
Mens.Curtidas: 1 vez

Teste de inclusão

Mensagempor Pablo César » 27 Set 2012 20:28

Ei Gilvandi !

Para quê facilitar se pode complicar... afff

Após criar dbf, compilar e ainda interpretar a sua pergunta no programa, ficou trabalhoso entender. Mas vou tentar me esforçar mais ainda e peço seus esclarecimentos.

Gilvandi (no programa) escreveu:O problema dessa rotina é o seguinte:
ao entrar com o código o sistema me traz no campo um valor pré-cadastrado. Porém, antes de entrar com o complemento do mesmo eu preciso teclar ou caso contrário o valor do campo será apagado.

Pergunta:
como fazer para entrar com o complemento do histórico sem a necessidade de ter que pressionar qualquer tecla antes???
Se eu entendi bem, você precisa que o histórico não seja apagado se você digitar algo ?

Se for isso, simule a tecla END para que após de focado o TEXTBOX do histórico venha a posicionar-se na ultima posição. Ou até mesmo dá para usar o CaretPos.
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.
Avatar de usuário

Pablo César
Usuário Nível 7

Usuário Nível 7
 
Mensagens: 5312
Data de registro: 31 Mai 2006 10:22
Cidade/Estado: Curitiba - Paraná
Curtiu: 142 vezes
Mens.Curtidas: 152 vezes

Teste de inclusão

Mensagempor Vandi » 27 Set 2012 20:41

Pablo,

Boa noite....

Desculpe se eu compliquei ao invés de facilitar :)) , mas, me diz uma coisa, como é que eu faria a simulação da tecla <End>?

Gilvandi
Vandi
Usuário Nível 2

Usuário Nível 2
 
Mensagens: 83
Data de registro: 16 Set 2011 23:26
Cidade/Estado: Brasilia-DF
Curtiu: 0 vez
Mens.Curtidas: 1 vez

Teste de inclusão

Mensagempor Pablo César » 27 Set 2012 20:45

Veja se é isso que você precisa, o seu código fonte modificado e anexei o executável que inclusive já cria o dbf... rs:
#include 'minigui.ch'

Function Main
If !File("CONTAS.DBF")
   aCampos:={ {"CODI","C",004,000},;
              {"DESC","C",070,000} }
   DbCreate("CONTAS.DBF",aCampos,"DBFCDX")
Endif

REQUEST DBFCDX
RDDSETDEFAULT( "DBFCDX" )

SET NAVIGATION EXTENDED

DEFINE WINDOW Win_4  AT 100,100        ;
        WIDTH 800    HEIGHT 490        ;
        TITLE 'TESTE DE INCLUSAO'      ;
        MAIN     FONT 'ARIAL' SIZE 11  ;
        ON INIT ABREARQ()              ;
        ON RELEASE FECHAARQ()

        ON KEY ESCAPE OF Win_4 ACTION Win_4.RELEASE

        @  30,018 FRAME FRAME_2   WIDTH 140      HEIGHT 36
        @  80,018 FRAME FRAME_3   WIDTH 751      HEIGHT 57
        @ 150,018 FRAME FRAME_7   WIDTH 223      HEIGHT 36
        @ 200,018 FRAME FRAME_8   WIDTH 223      HEIGHT 36

        @ 270,050 FRAME FRAME_9   WIDTH 700      HEIGHT 135
        *---------------------------------------------
        @  40, 30 LABEL lConta VALUE 'Código:' ;
                 WIDTH 60 HEIGHT 20  FONT 'ARIAL' SIZE 11

        @ 036, 90 TEXTBOX vConta   ;
                FONT 'ARIAL' SIZE 11  ;
                WIDTH 50 HEIGHT 25  INPUTMASK '9999' RIGHTALIGN   ;
                ON GOTFOCUS Win_4.lConta.FontBold :=.T. ;
                ON LOSTFOCUS Win_4.lConta.FontBold :=.F.;
                ON ENTER PEGAHISTORICO(Win_4.vConta.Value)

        *---------------------------------------------
        @  88, 30 LABEL lHistorico VALUE 'Histórico:'  ;
                 WIDTH  80 HEIGHT 15  FONT 'ARIAL' SIZE 11

        @ 106, 30 TEXTBOX vHistorico   ;
                FONT 'ARIAL' SIZE 11  ;
                WIDTH 730 HEIGHT 25  MAXLENGTH 45;
                ON GOTFOCUS (Win_4.lHistorico.FontBold :=.T.,KEYBD_END());       ;
                ON LOSTFOCUS Win_4.lHistorico.FontBold :=.F.
        *---------------------------------------------
        @ 160, 30 LABEL lData VALUE 'Data:' ;
                 WIDTH  80 HEIGHT 20  FONT 'ARIAL' SIZE 11

        @ 156, 130 TEXTBOX tData OF Win_4 Value '';
                WIDTH 100 HEIGHT 25  FONT 'ARIAL' SIZE 12  INPUTMASK '99/99/9999' ;
                RIGHTALIGN   ;
                ON GOTFOCUS Win_4.lData.FontBold :=.T. ;
                ON LOSTFOCUS Win_4.lData.FontBold :=.F.
        *---------------------------------------------
        @ 208, 30 LABEL lValor VALUE 'Valor:' ;
                 WIDTH  80 HEIGHT 20  FONT 'ARIAL' SIZE 13

        @ 206, 110 TEXTBOX tValorOriginal OF Win_4 Value '';
                FONT 'ARIAL' SIZE 12  NUMERIC  INPUTMASK '9,999,999.99' ;
                ON GOTFOCUS Win_4.lValor.FontBold :=.T. ;
                ON LOSTFOCUS Win_4.lValor.FontBold :=.F.
        *---------------------------------------------

@280, 70 LABEL LIN1 VALUE 'O problema dessa rotina é o seguinte: ao entrar com o código o  sistema me traz no' ;
         WIDTH 700  FONT 'ARIAL'  SIZE 13  FONTCOLOR GRAY BOLD
@300, 70 LABEL LIN2 VALUE 'campo  um valor pré-cadastrado. Porém, antes de entrar  com o  comple-' ;
         WIDTH 700  FONT 'ARIAL'  SIZE 13  FONTCOLOR GRAY BOLD
@320, 70 LABEL LIN3 VALUE 'mento do mesmo eu preciso teclar  ou , caso  contrário o valor' ;
         WIDTH 700  FONT 'ARIAL'  SIZE 13  FONTCOLOR GRAY BOLD
@340, 70 LABEL LIN4 VALUE 'do campo será apagado.' ;
         WIDTH 700  FONT 'ARIAL'  SIZE 13  FONTCOLOR GRAY BOLD
@360, 70 LABEL LIN5 VALUE 'Pergunta: como fazer para entrar com o complemento do histórico sem a necessida-' ;
         WIDTH 700  FONT 'ARIAL'  SIZE 13  FONTCOLOR GRAY BOLD
@380, 70 LABEL LIN6 VALUE 'de de ter que pressionar qualquer tecla antes???' ;
         WIDTH 700  FONT 'ARIAL'  SIZE 13  FONTCOLOR GRAY BOLD

        END WINDOW

        CENTER WINDOW Win_4
        ACTIVATE WINDOW Win_4

RETURN

FUNCTION ABREARQ
*----------------------------
USE CONTAS
INDEX ON CODI TAG CDG TO CONTAX
RETURN NIL

FUNCTION FECHAARQ
*----------------------------
CLOSE CONTAS
RETURN NIL

FUNCTION PEGAHISTORICO(vConta)
*----------------------------
CONTAS->(DBGOTOP())
CONTAS->(DBSEEK(vConta))
IF!FOUND()
   MSGINFO('CONTA INEXISTENTE','AVISO')
*  Win_4.vConta.Value:=' '
   Win_4.vConta.SetFocus
   RETURN.F.
ELSE
   Win_4.vHistorico.Caption:=ALLTRIM(CONTAS->DESC)+' '
   RETURN.T.
ENDIF

#pragma BEGINDUMP

#include <windows.h>

HB_FUNC( KEYBD_END )
{
   keybd_event(
      VK_END,   // virtual-key code
      0,      // hardware scan code
      0,      // flags specifying various function options
      0      // additional data associated with keystroke
   );
}

#pragma ENDDUMP
A principio, bastou colocar no evento ON GOTFOCUS do TEXTBOX do histórico para que faça o chamado de função KEYBD_END() e assim simular o pressionamento da tecla END.
Anexos
Teste47.rar
(787.1 KiB) Baixado 120 vezes
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.
Avatar de usuário

Pablo César
Usuário Nível 7

Usuário Nível 7
 
Mensagens: 5312
Data de registro: 31 Mai 2006 10:22
Cidade/Estado: Curitiba - Paraná
Curtiu: 142 vezes
Mens.Curtidas: 152 vezes

Teste de inclusão

Mensagempor Vandi » 27 Set 2012 23:30

Pablo,
Boa noite...

:)Pos Muito obrigado!!! Ficou 100%!!! Valeu mesmo!!!
Dessa forma como você colocou, a rotina está rodando justamente como eu esperava.
Mais uma vez obrigado...

Gilvandi
Vandi
Usuário Nível 2

Usuário Nível 2
 
Mensagens: 83
Data de registro: 16 Set 2011 23:26
Cidade/Estado: Brasilia-DF
Curtiu: 0 vez
Mens.Curtidas: 1 vez

Teste de inclusão

Mensagempor Vandi » 28 Set 2012 10:46

Pablo,

Bom dia...

Rodei o executável que você disponibilizou aqui no forum e deu OK!!!
Mas hoje, quando fui compilar o fonte que vc mandou deu erro... por acaso não está faltando alguma coisa no #include logo após o #pragma BEGINDUMP?

Gilvandi
Vandi
Usuário Nível 2

Usuário Nível 2
 
Mensagens: 83
Data de registro: 16 Set 2011 23:26
Cidade/Estado: Brasilia-DF
Curtiu: 0 vez
Mens.Curtidas: 1 vez

Teste de inclusão

Mensagempor Pablo César » 28 Set 2012 10:50

Vandi escreveu:Mas hoje, quando fui compilar o fonte que vc mandou deu erro...
Pode dizer-nos quais erros aconteceram (poste conteúdo do log) na sua compilação ? Você está utilizando qual versão do HMG ou MiniGui ?
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.
Avatar de usuário

Pablo César
Usuário Nível 7

Usuário Nível 7
 
Mensagens: 5312
Data de registro: 31 Mai 2006 10:22
Cidade/Estado: Curitiba - Paraná
Curtiu: 142 vezes
Mens.Curtidas: 152 vezes

Teste de inclusão

Mensagempor Pablo César » 28 Set 2012 10:58

por acaso não está faltando alguma coisa no #include logo após o #pragma BEGINDUMP?
Ahhh agora me toquei qual é o seu erro... você deve ter clicado no botão "Ver código" e selecionou e colou, só que esse recurso aqui no fórum está dando problemas. Eu já alertei ao Sr. Toledo disto. Ai fica sem <windows.h> e você terá que completar manualmente.

Veja na figura abaixo:
Tela46.PNG


Abraços.
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.
Avatar de usuário

Pablo César
Usuário Nível 7

Usuário Nível 7
 
Mensagens: 5312
Data de registro: 31 Mai 2006 10:22
Cidade/Estado: Curitiba - Paraná
Curtiu: 142 vezes
Mens.Curtidas: 152 vezes

Teste de inclusão

Mensagempor Vandi » 28 Set 2012 11:05

Pablo,

Segue aí a tela com o erro:

C:\MINIGUI\SAMPLES\BASIC\CONTAB~3>edit teste47.prg

C:\MINIGUI\SAMPLES\BASIC\CONTAB~3>cteste
Harbour 3.1.0dev (Rev. 17094)
Copyright (c) 1999-2011, http://harbour-project.org/
Compiling 'Teste47.prg'...
Lines 19469, Functions/Procedures 4
Generating C source output to 'Teste47.c'... Done.
Borland C++ 5.5.1 for Win32 Copyright (c) 1993, 2000 Borland
Teste47.c:
Error E2046 Teste47.prg 118: Bad file name format in include directive
Error E2451 Teste47.prg 123: Undefined symbol 'VK_END' in function HB_FUN_KEYBD_
END
Warning W8065 Teste47.prg 127: Call to function 'keybd_event' with no prototype
in function HB_FUN_KEYBD_END
*** 2 errors in Compile ***

C compile error.

Pressione qualquer tecla para continuar. . .

Gilvandi
Vandi
Usuário Nível 2

Usuário Nível 2
 
Mensagens: 83
Data de registro: 16 Set 2011 23:26
Cidade/Estado: Brasilia-DF
Curtiu: 0 vez
Mens.Curtidas: 1 vez

Teste de inclusão

Mensagempor Vandi » 28 Set 2012 11:15

:)Pos Pablo,

Resolvido... faltou mesmo o <windows.h>

Obrigado,

Gilvandi
Vandi
Usuário Nível 2

Usuário Nível 2
 
Mensagens: 83
Data de registro: 16 Set 2011 23:26
Cidade/Estado: Brasilia-DF
Curtiu: 0 vez
Mens.Curtidas: 1 vez

Teste de inclusão

Mensagempor alxsts » 28 Set 2012 12:39

Olá!

Também já havia notado.

Este problema no recurso "Ver Código" do fórum ocorre apenas quando o nome do arquivo de inclusão está entre o símbolos < e >. Provavelmente são confundidos com HTML. Se o nome do arquivo estiver entre aspas, simples ou duplas, o problema não acontece. Existe outro problema também quando tem tags posthilit (acho que é assim que se escreve).
[]´s
Alexandre Santos (AlxSts)
alxsts
Colaborador

Colaborador
 
Mensagens: 2943
Data de registro: 12 Ago 2008 15:50
Cidade/Estado: São Paulo-SP-Brasil
Curtiu: 21 vezes
Mens.Curtidas: 248 vezes




Retornar para MiniGui

Quem está online

Usuários vendo este fórum: Nenhum usuário registrado online e 6 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