Página 1 de 1
Como tornar o conteudo de um get em comando do clipper
Enviado: 22 Fev 2005 08:15
por Paulao
Tenho uma rotina de impresão de formularios ondo o usuario mesmo define onde serão impressos os campos e os efeitos de impressão que deseja dar, mas agora necessito que o conteudo de um get seja interpretado como comando do clipper (Por exemplo um get tenha digitado SET CENTURY OFF, e o clipper veja o conteudo deste get como o comando do clipper.
Grande abraço a todos
Enviado: 22 Fev 2005 12:23
por vagucs
Vc pode usar macro substituição para fazer, ou mesmo no caso citado usar condicional tipo
Código: Selecionar todos
opc="ON "
@ 10,10 get opc picture "@!" valid opc$"ON*OFF"
read
if lastkey()#27
if opc="ON "
set century on
else
set century off
end if
end if
Outro exemplo:
Código: Selecionar todos
opc="ON "
@ 10,10 get opc picture "@!" valid opc$"ON*OFF"
read
if lastkey()#27
__SetCentury( alltrim(opc))
end if
Ou mesmo usar macro para isto:
macro="__setcentury("+opc+")"
¯o
Enviado: 23 Fev 2005 19:40
por Paulao
Boa noite Wagner seus exemplos são muito interessantes, mas gostaria de que fosse um pouco diferente, pois não é só o set cent on/off que desejo colocar no get
Vou tentar explicar em poucas palavras a rotina.
tenho um dbf com os seguintes campos
i_linha - define a linha onde sera inpresso o campo
i_coluna - define a coluna onde sera impresso o campo
i_campo - o campo do dbf que sera impresso na linha e coluna acima
i_efeito - o efeito que desejo dar na impressao (negrito,condesado, etc)
i_comand - um comando do clipper <------
i_vfixos - um valor fixo que sera impresso na linha/coluna informado
este dbf coloca num dbedit fica mais ou menos assim:
i_linha 00 - i_coluna 00 - i_efeito chr(27)+"@" <------ reseta impr.
i_linha 01 - i_coluna 01 - i _campo nome <-----imprime campo nome
i_linha 02 - i_coluna 00 - i_comand set cent off <----o comando
i_linha 03 - i_coluna 23 - i_campo endereco
.
.
.
.
e assim por diante até imprimir todos os campo do formulario
o caso é que no campo comando eu posssa digitar um comando qq e quando chegar neste campo o programa executar o comando escrito dentro dele
Espero ter conseguido explicar bem
Boa noite a todos e grande abraço
Enviado: 23 Fev 2005 21:38
por vagucs
Vc poderá usar os valores destes campos para fazer o relatório usando macro substituição
exemplo
Supondo que digitei 'NOME' dentro de i_campo, então quando correr o relatório ele vai exibir o conteúdo da variável ou campo NOME, sacou.
Enviado: 24 Fev 2005 08:24
por Mário Isa
Porém poderá ocorrer que, se for o usuário que digitará o comando ele poderá errar. Assim, antes dar o comando através da macro teste o comando assim:
o_comando := 'set century on' // tb pode entrar pelo get
if ! expvalid(o_comando)
Tecle('Redigite o comando.')
loop
end
/*
* ExpValid()
*/
FUNCTION ExpValid( cExp )
local lOk := .T.
local bError := ErrorBlock( { |e| ExpError( e, bError ) } )
local xResult
cExp = alltrim(cExp)
BEGIN SEQUENCE
if !Empty( cExp )
// xResult := Eval( bCompile( cExp ))
lOk := .t.
telaerr := &cExp
// cExp := "@ 10,10 say "+AllTrim( cExp )
if !(lOk)
Tecle( "Tipo de expressÆo inv lida." )
end
end
RECOVER
lOk := .F.
END SEQUENCE
ErrorBlock( bError )
RETURN (lOk)
/*
* ExpError()
*/
STATIC FUNCTION ExpError( e, bOldErr )
if e:subSystem == "BASE"
if procname(7) = "ENTRADA" .or. procname(8) = "ENTRADA" .or. procname(10)=;
"EDITAREF"
Tecle( e:descriptio +". ExpressÆo Inv lida." )
End
BREAK e
end
RETURN Eval( bOldErr, e )
Enviado: 24 Fev 2005 11:52
por evolver
Para ter mais idéias tem no diretório sources/samples do clipper5 original um programa chamado dot que é um interpretador de comandos ao estilo dbase. Quem sabe isso não pode lhe dar mais idéias de como fazer o que deseja?