Página 1 de 1

Relatorios Clipper+RTF+WordPad problemas?

Enviado: 12 Mar 2008 02:28
por Cezar
Boa noite,

Estou tentando usar o programa abaixo que foi postado aqui no forum
na seção "CODIGO FONTE" .
Aparentemente ele gera o arquivo corretamente TESTE.RTF,
mas a minha dificuldade esta em executa-lo de dentro do programa!

1.)
RUN ( "START /max \WORDVIEW\WORDVIEW.EXE "+"TESTE.RTF" )
usando este codigo o arquivo TESTE.RTF é aberto pelo WordView mas
a apresentação é RUIM, come uma faixa da margem esquerda e outras
partes do texto.
2.)
RUN ( "START C:\Arquivos de programas\Windows NT\Acessórios\wordpad.exe "+"TESTE.RTF" )
usando este codigo o arquivo o clipper reclama que NÃO ACHA o WordPad....
Não esta correto este codigo ou o clipper não consegue interpretar este
path tão grande ???
3.)
RUN ( "START wordpad.exe "+"TESTE.RTF" )
usando este codigo FUNCIONA porque coloquei o WordPad na mesma
pasta do programa.

Tem como impedir que o usuário ( bloquear ) de EDITAR o texto no WORDPAD ??

Agradeço a ajuda!!
cez_a@ubbi.com.br

Código: Selecionar todos

********************************
*
*
* Arquivo...: nfrtf.prg
* Autor.....: Desconhecido
* Adaptacao.: Jose Carlos da Rocha
* E-mail....: softclever@softclever.com
* Site......: http://www.softclever.com/
* Versao....: 1.0, 05/Ago/2003
* Objetivo..: Criar arquivos RTF para serem lidos pelo Word
*
*/

// Label Header
#define CR 					Chr(13)
#define LF 					Chr(10)
#define CRLF 				CR+LF

#define BOLD_ON 			"\b"
#define ITALIC_ON 		"\i"
#define UNDERLINE_ON 	"\ul"
#define CAPS_ON 			"\caps"

#define STYLE_OFF 		"0"
#define BOLD_OFF 			BOLD_ON+STYLE_OFF
#define ITALIC_OFF 		ITALIC_ON+STYLE_OFF
#define UNDERLINE_OFF 	UNDERLINE_ON+STYLE_OFF
#define CAPS_OFF 			CAPS_ON+STYLE_OFF

#define RTF_QC 			"\qc" 		// Centralizado
#define RTF_QJ 			"\qj" 		// Justificado
#define RTF_QL 			"\ql" 		// Esquerda
#define RTF_QR 			"\qr" 		// Direita

#define RTF_PAR 			"\par" 		// Paragrafo normal
#define RTF_PARD 			"\pard" 		// Paragrafo distanciado
#define RTF_PLAIN 		"\plain" 	// Paragrafo plaino

#define RTF_CF 			"\cf" 		// Cor da fonte

#define RTF_BULLET 		"\bullet" 		// Bullet SY
#define RTF_SECT 			"\sect\sectd" 	// Forca pagina
#define RTF_COLS 			"\cols" 			// Colunas na pagina
#define RTF_F 				"\f" 				// Numero da fonte
#define RTF_FS 			"\fs" 			// Tamanho da fonte

#define RTF_DEFAULT 		"\plain\f2\fs10\cf0" // Texto normalizado

RTFTESTE()    // gera teste.rtf

//RUN ( "START /max \WORDVIEW\WORDVIEW.EXE "+"TESTE.RTF" )
//RUN ( "START C:\Arquivos de programas\Windows NT\Acessórios\wordpad.exe "+(wTemp_a))
//RUN ( "START wordpad.exe "+(wTemp_a) )
QUIT
/*
*
*
*
*
*/
function rtfTeste
nRTF := rtfOpen( "TESTE.RTF", ;
RTF_QC+" Sistema de Faturamento Total"+;
RTF_PAR+RTF_QC+" Novembro de 2001", ;
"(r) Direitos Reservados SoftClever Informatica, 1995" )

...................................
...................................
...................................

	rtfEject( nRTF )

	rtfClose( nRTF )

//----------------------------------------------------------
// Proposito :
// Abrir arquivo RTF e escrever cabecalhos
// Parametros:
// cFile - Nome do arquivo
// cHeader - Cabecalho do arquivo
// cFooter - Rodape do arquivo
// Retorna :
// nHandle - Handle do arquivo RTF
//----------------------------------------------------------
function rtfOpen( cFile, cHeader, cFooter )
	local nHandle
	local cBof := [{\rtf1\ansi\deff0\deftab720]+Chr(13)+Chr(10)+;
	[ {\fonttbl]+Chr(13)+Chr(10)+;
	[ {\f0\fnil Times New Roman;}]+Chr(13)+Chr(10)+;
 	[ {\f1\fnil Arial;}]+Chr(13)+Chr(10)+;
	[ {\f2\fnil Courier New;}]+Chr(13)+Chr(10)+;
	[ {\f3\fnil MS Sans Serif;}]+Chr(13)+Chr(10)+;
	[ {\f4\fnil\fcharset2 Symbol;}]+Chr(13)+Chr(10)+;
	[ {\f5\fnil\fprq2 System;}]+Chr(13)+Chr(10)+;
	[ {\f6\fnil Verdana;}]+Chr(13)+Chr(10)+;
	[ }]+Chr(13)+Chr(10)+;
	[ {\colortbl\red0\green0\blue0;\red0\green0\blue254;}]+Chr(13)+Chr(10)+;
	[ {\header \pard\par\f2\fs20]+cHeader+[ \par}]+Chr(13)+Chr(10)+;
	[ {\footer \pard\par\f2\fs10]+cFooter+[ \par}]+Chr(13)+Chr(10)
// [ \margl2520\margr2520\margt1440\margb1440]+Chr(13)+Chr(10)
// [ \deftab720\vertalc\fs24]+Chr(13)+Chr(10)+;
	nHandle := fCreate( cFile )
	fWrite( nHandle, cBof, Len( cBof ))
	return nHandle

//----------------------------------------------------------
// Proposito :
// Fecha arquivo RTF e escreve marcador final
// Parametros:
// Nada
// Retorna :
// nil
//----------------------------------------------------------
function rtfClose( nHandle )
	local cEof := "}"
	fWrite( nHandle, cEof, Len( cEof ))
	fClose( nHandle )
	return nil

//----------------------------------------------------------
// Proposito :
// Escreve uma string ou paragrafo
// Parametros:
// nHandle - Handle do archivo rtf
// nRow - Fila
// nCol - Columna
// cString - String a escribir
// Retorna :
// nil
//----------------------------------------------------------
function rtfWrite( nHandle, nFontNumber, nFontSyze, nFontColor, cStyle, cString )
	cFontNumber := iif(nFontNumber=nil, "\f2" , "\f" +str(nFontNumber,1))
	cFontSyze 	:= iif(nFontSyze=nil , "\fs20", "\fs" +str(nFontSyze*2,2))
	cFontColor 	:= iif(nFontColor=nil , "\cf0" , "\cf" +str(nFontColor,1))
	cString 		:= cStyle+cFontNumber+cFontSyze+cFontColor+cString+"\plain\f2\fs10\cf0"
	fWrite( nHandle, cString )
	return nil

function rtfWriteLn( nHandle, nFontNumber, nFontSyze, nFontColor, cStyle, cString )
	cFontNumber := iif(nFontNumber=nil, "\f2" , "\f" +str(nFontNumber,1))
	cFontSyze 	:= iif(nFontSyze=nil , "\fs20", "\fs" +str(nFontSyze*2,2))
	cFontColor 	:= iif(nFontColor=nil , "\cf0" , "\cf" +str(nFontColor,1))
//	cStyle 		:= iif("JUST"$upper(cStyle), "\qj" , "\qc" )
//	cStyle 		:= iif("JUST"$upper(cStyle), "\ql" , "\ql" )
	cString 		:= " \par\plain"+cStyle+cFontNumber+cFontSyze+cFontColor+cString+"\plain\f2\fs10\cf0"
	fWrite( nHandle, cString+Chr(13)+Chr(10) )
	return nil

function rtfBullet( nHandle )
	fWrite( nHandle, " \bullet" )
	return nil

function rtfEject( nHandle )
	fWrite( nHandle, " \sect\sectd" )
	return nil

function rtfCols( nHandle, nCols )
	fWrite( nHandle, " \cols"+str(nCols,1) )
	return nil

// FIM ...

Re: Relatorios Clipper+RTF+WordPad problemas?

Enviado: 13 Mar 2008 00:02
por sygecom
Cezar escreveu: Estou tentando usar o programa abaixo que foi postado aqui no forum
na seção "CODIGO FONTE" .
Aparentemente ele gera o arquivo corretamente TESTE.RTF,
mas a minha dificuldade esta em executa-lo de dentro do programa!
Se vc usa o Blinker pode usar o comando:
SwpRUNcmd()
Cezar escreveu: 2.)
RUN ( "START C:\Arquivos de programas\Windows NT\Acessórios\wordpad.exe "+"TESTE.RTF" )
usando este codigo o arquivo o clipper reclama que NÃO ACHA o WordPad....
Não esta correto este codigo ou o clipper não consegue interpretar este
path tão grande ???
Isso mesmo, porem existe LIB com funções para contornar esse problema, se não me engano a NANFOR.LIB
Cezar escreveu: Tem como impedir que o usuário ( bloquear ) de EDITAR o texto no WORDPAD ??
Não tem como, nesse caso seria ideal você gerar em HTML e abrir com o IE.
No link abaixo tem um exemplo de HTML no clipper.
https://pctoledo.org/download/cop ... t&deonde=2

Abraços
Leonardo Machado

Re: Relatorios Clipper+RTF+WordPad problemas?

Enviado: 13 Mar 2008 04:17
por Maligno
Cezar escreveu:2.)
RUN ( "START C:\Arquivos de programas\Windows NT\Acessórios\wordpad.exe "+"TESTE.RTF" )
usando este codigo o arquivo o clipper reclama que NÃO ACHA o WordPad....
Não esta correto este codigo ou o clipper não consegue interpretar este
path tão grande ???
O Clipper não interpreta isso. O comando RUN abre uma nova instância do interpretador de comandos e executa o comando passado. É como se você próprio tivesse digitado na linha de comando. Mas o ideal, se você usa o BLinker, é utilizar a função SwpRunCmd().
3.)
RUN ( "START wordpad.exe "+"TESTE.RTF" )
usando este codigo FUNCIONA porque coloquei o WordPad na mesma
pasta do programa.
Está explicado o porque do programa não ser executado no ítem 1: o path passado está errado ou não consta na variável ambiental PATH.
Tem como impedir que o usuário ( bloquear ) de EDITAR o texto no WORDPAD ??
Você não tem controle sobre o WordPad, mas pode evitar que o usuário grave qualquer informação, tornando o arquivo protegido contra escrita.

Enviado: 16 Mar 2008 19:01
por Cezar
Boa noite,

Grato pelas dicas e nos esclarecimentos!!

cez_a@ubbi.com.br

Enviado: 21 Mar 2008 14:49
por Cezar
Boa tarde,

Estou com o seguinte problema:

Executo o programa clipper a partir de um Icone de atalho no DeskTop no modo TELA CHEIA.

O programa roda normal na Tela Cheia.

Porem, quando o programa chama WordPad para mostrar o relatorio .RTF, o WordPad mostra normalmente, mas, quando fecho o WordPad, o programa retorna para o clipper, mas NÃO esta mais em TELA CHEIA no padrao do MsDos como iniciou !!

Obs: a tela do MsDos não foi minimizada, esta no padrao do windows antes de ter definido Tela Cheia na criação do Icone.

Estou chamando o WordPad desta forma:
SWPRUNCMD( "cmd /c START /max WORDPAD.EXE TESTE.RTF",0,"","")
SWPRUNCMD( "cmd /c START /max TESTE.RTF",0,"","")

Tem como retornar normalmente na Tela Cheia do MsDos??

Ja tentei outras formas com .Bat, outro .EXE so chamando o WordPad, etc.., mas não deu certo.

Se puderem me ajudar, agradeço muito
cez_a@ubbi.com.br

Enviado: 21 Mar 2008 15:53
por Maligno
Cezar escreveu:Tem como retornar normalmente na Tela Cheia do MsDos??
Sim, mas não de forma automática. A comutação para o modo windowed é uma característica normal. O que você pode fazer é comutar novamente para full screen usando algum artifício. O que eu uso para isso é a função WinFullScr(), cujo objeto está disponível no meu site. Clique aqui para baixá-lo.

Enviado: 21 Mar 2008 18:16
por Pablo César
Maligno escreveu:O que você pode fazer é comutar novamente para full screen usando algum artifício. O que eu uso para isso é a função WinFullScr(), cujo objeto está disponível no meu site.
Vale lembrar que esta opção é válida Windows baseado em NT não para WIN98 e WIN95.

Enviado: 21 Mar 2008 18:22
por Maligno
Pô! Faz tanto tempo que não vejo um Windows98 que nem me lembro dele. :)))
Não funciona mesmo?

Enviado: 21 Mar 2008 20:05
por Cezar
Boa noite!

Baixei o WinFullScr() e resolveu o problema.

Mais uma vez, muito grato.

cez_a@ubbi.com.br