Nao pode existir Macro em Code Block??

Fórum sobre a linguagem CA-Clipper.

Moderador: Moderadores

Avatar do usuário
Pablo César
Usuário Nível 7
Usuário Nível 7
Mensagens: 5312
Registrado em: 31 Mai 2006 10:22
Localização: Curitiba - Paraná

Mensagem por Pablo César »

Caro junior,

Não sei se houve entendimento por completo no que eu quero lhe passar, apesar de você ter reconhecido que essa prática como boa e de fazer do jeito que você está fazendo até mesmo entitular-la como "gambiarra". Por isso decidí fazer uma exemplificação melhor para que você pudesse entender ao que me refiro:

1. Eu disse que seria conveniente (por várias razões: padronização e aplicabilidade) fazer com que o usuário pressione a tecla <F10> para evocar uma função de pesquisa em arquivo. E que você comenta que esta mesma tecla já é utilizada para pesquisa. Pois então, você poderia reunir todos os chamados de funções numa só tecla ou até então asignar a uma outra tecla de função como preferir. Mas digamos (que eu sou teimoso) e queira insistir que TODA pesquisa em arquivo seja feita pela tecla de função <F10>

2. Daí então faríamos apenas uma atribuição de tecla e não das letras ("A" ao "z") porque isto iria demandar um porção de declarações e faria com que o usuário tenha que "decorar" todos esses chamados para saber qual invocar.

3. Quando o usuário pressionar a tecla <F10>, a função chamada irá ler o NOME da variável em que o GET se encontra. Possibilitado desta forma diferenciar que quando estiver na variável ccodpro do GET, irá chamar a função pesqproduto() e se estiver na variável do código do cliente irá chamar a função pesqcliente()

4. Embora tenhamos funções para cada variável de GET, você também pode vir a fazer um MENÚ que permita selecionar uma função dentro de várias possibilidades de um mesmo GET. Não sei se entendí bem o que você colocou:
juniorcamilo escreveu:o get no ccodpro pode tambem simplesmente passar o codigo de barras, ou digitar o codigo tipo (01-0001) ou 011
Com isto você quis dizer que um mesmo GET pode aceitar CODIGO_DE_BARRAS ou CODIGO_INTERNO na mesma variável. Se for isso ou coisa parecida e senão tiver como diferenciar entre uma coisa ou outra, então sugiro você fazer que naquele GET após pressionado F10 pudesse exibir um menuzinho da qual você pudesse identificar que tipo de informação deve ser processada.

Com apenas uma declaração de tecla você treria todas as funções atualmente vigentes e de forma concetrada (o que possibilita o entendimento no futuro). Se não conseguiu visualizar o que estou dizendo, me diga que posto um exemplo.
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 do usuário
juniorcamilo
Usuário Nível 3
Usuário Nível 3
Mensagens: 343
Registrado em: 10 Nov 2006 09:12
Localização: Pará

a

Mensagem por juniorcamilo »

Pablo César escreveu:Caro junior,
seu post
.
Amigo Pablo o q eu fiz foi o seghuinte o prog inteiro esta, onde digita codigo de produto ou cliente (F10 e F9 respectivamente as tecla padrao), só que notei que os cliente meus hora que chega para digitar o código eles por nao conhecer as teclas de atalho e muitas das vezes por nao lerem o radape do sistema, eles simplemente começa a digitar o nome do produto ou pessoa cadastrada, ai para nao mudar oq esta feito e em diversas ocasioes do sistema, eu pensei na dita cuja funcao, pois sei que tem como fazer tal prodcedimeto em um do while ... enddo. Ai veio a tal Gambiarra propriamente dita 'ECURSO ALTERNATIVO DE PROGRAMADOR'... ai quando digitada a letra esta abre a funcao de pesquisa e ja danto seek com a primeira letra digitada, blz ... rsrsrsrsrsrsrrsrsrsr
Avatar do usuário
Pablo César
Usuário Nível 7
Usuário Nível 7
Mensagens: 5312
Registrado em: 31 Mai 2006 10:22
Localização: Curitiba - Paraná

Mensagem por Pablo César »

Ahhh agora entendí. Eu peguei seu código para compilar e no final não compilei. Mas vendo bem o que você fez, agora posso dizer que captei a sua idéia. Inclusive, eu ja tive necessidade de evocar função ao pressionar qualquer tecla (que no seu caso seria: caracteres ALFA).

Desta forma se digitar qualquer LETRA, você chama a função de procura. Eu acho que é válido !. Legal, isso é que colocar o cabresto nos usuários teimosos... hihihihi

Desculpe pela minha insistência, eu estava falando sobre outro assunto (claro que também válido), mas o seu caso ja saquei (não tinha percebido, acho que muita chuva aqui no sul deu curto... hihihi) e acho que está bom o suficiente para funcionar. Beleza !
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 do usuário
juniorcamilo
Usuário Nível 3
Usuário Nível 3
Mensagens: 343
Registrado em: 10 Nov 2006 09:12
Localização: Pará

a

Mensagem por juniorcamilo »

vamos dizer que quase criei a funcao Keypress,rsrsrsrrsrsrsrsrrsrs :P
Avatar do usuário
Pablo César
Usuário Nível 7
Usuário Nível 7
Mensagens: 5312
Registrado em: 31 Mai 2006 10:22
Localização: Curitiba - Paraná

Mensagem por Pablo César »

Essa sua função me faz lembrar...

http://uk.youtube.com/watch?v=Sdby6zrZRS0


hihihi só o Homer mesmo !
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.
DMR
Usuário Nível 1
Usuário Nível 1
Mensagens: 28
Registrado em: 03 Out 2007 09:15
Localização: Porto Ferreira-SP

Mensagem por DMR »

Bom dia a todos!

Se vale como dica, eu criei uma função chamada HELP e utilizo o F1 para chamá-la. A vantagem está no fato de não precisar do SET KEY 28 TO HELP, pois utilizando uma função com este nome e esta tecla para chamá-la não precisa do SET KEY.
Avatar do usuário
juniorcamilo
Usuário Nível 3
Usuário Nível 3
Mensagens: 343
Registrado em: 10 Nov 2006 09:12
Localização: Pará

a

Mensagem por juniorcamilo »

DMR escreveu:Bom dia a todos!

Se vale como dica, eu criei uma função chamada HELP e utilizo o F1 para chamá-la. A vantagem está no fato de não precisar do SET KEY 28 TO HELP, pois utilizando uma função com este nome e esta tecla para chamá-la não precisa do SET KEY.
post sua ideia aqui... valeu
DMR
Usuário Nível 1
Usuário Nível 1
Mensagens: 28
Registrado em: 03 Out 2007 09:15
Localização: Porto Ferreira-SP

Mensagem por DMR »

Na verdade é uma procedure. Quando em qualquer GET do sistema edito a variável CODI_IMPR pressionando F1 acesso o cadastro de impressoras.

proc help(nomprog,numlin,nomvar)
loca telant:=savescreen(0,0,24,79),corant:=setcolor()
if nomvar#'CODI_IMPR'
retu
endi
setcolor('w+/bg,n/w')
if nomvar='CODI_IMPR'
ari060->(dbgotop())
decl vexnom[2],vexcab[2]
vexnom[1]='ari060->codi_060'
vexnom[2]='ari060->nome_060'
vexcab[1]='CODIGO'
vexcab[2]='NOME'
janela(0,39,23,78,0)
@ 22,41 say '<'+chr(24)+chr(25)+'>-Move <ENTER>-Confirma <ESC>-Sai'
ari060->(dbedit(1,40,21,77,vexnom,,,vexcab,'Ä',,'Ä'))
if lastkey()=13
keyb ari060->(strzero(codi_060,2))
endi
endi
restscreen(0,0,24,79,telant)
setcolor(corant)
retu
Responder