get historico grande
Moderador: Moderadores
get historico grande
tenho o seguinte historico = space(160)
@ 1,1 say ´histoico" get historico pict ´@!´
aparece linha enorme -- gostaria mostrar em 2 linhas - e com o funcionamento do insert e del
separei em 2 partes a ssim so no final um nao entrosa outra parte e usuario tem excluir a 2 parte
@ 2,1 say "historio" get parte1 pict ´@!´
@ 3.1 say "........." get parte2 pict "@!´
/// tem como usar uma so variavel -- em 2 ou 4 linhas --- exep: seria iqual formatacao de texto como do word
gostaria demonstrativo simples -------
@ 1,1 say ´histoico" get historico pict ´@!´
aparece linha enorme -- gostaria mostrar em 2 linhas - e com o funcionamento do insert e del
separei em 2 partes a ssim so no final um nao entrosa outra parte e usuario tem excluir a 2 parte
@ 2,1 say "historio" get parte1 pict ´@!´
@ 3.1 say "........." get parte2 pict "@!´
/// tem como usar uma so variavel -- em 2 ou 4 linhas --- exep: seria iqual formatacao de texto como do word
gostaria demonstrativo simples -------
- Pablo César
- Usuário Nível 7

- Mensagens: 5312
- Registrado em: 31 Mai 2006 10:22
- Localização: Curitiba - Paraná
Re: get historico grande
Em lugar do @ SAY... por quê não usa o MEMOEDIT ? Ficaria mais fácil para exibir durante a hora de edição. Inclusive se tiver alguma limitação você pode inclui-la na função de controle que permite o MEMOEDIT (função de controle está no 7º parâmentro)
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.
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.
Re: get historico grande
nao da mesmo por o "memoedit" ja tenho en cima e baixo e (lado direito) outros campos..
os 160 char tem que ser divididos em 2 ou 4 linhas (a tela ja esta toda preencida)
nao tem como algum comando ou funcao
( ler esta variavel de 160 char dentro de um quadro (area) especifico
) modo tela 24,80
pensei ate realmente no memoedit mas nao fica legall....
grato pela ajuda
:%
os 160 char tem que ser divididos em 2 ou 4 linhas (a tela ja esta toda preencida)
nao tem como algum comando ou funcao
( ler esta variavel de 160 char dentro de um quadro (area) especifico
pensei ate realmente no memoedit mas nao fica legall....
grato pela ajuda
:%
Re: get historico grande
Amigo, poste um exemplo visual do que voce esta querendo fazer, por que não consegui imaginar esta situação, mesmo por que, nao vemos a forma como sua tela esta desenhada.
Primeiramente pensei no memoedit, como não deu certo, forneça mais detalhes para que possamos ajudá-lo.
Ate+
Primeiramente pensei no memoedit, como não deu certo, forneça mais detalhes para que possamos ajudá-lo.
Ate+
Clipper 5.2e / Blinker 5.1 / Harbour 3.2 / GTwvg
Re: get historico grande
╔════════════════════════════════════════════════════════════════════════════╗
║ SISTEMA DE CONTABILIDADE M O V I M E N T O G.W.M. ║
╚════════════════════════════════════════════════════════════════════════════╝
╔═════════════════════════════════════════════════════════════════════
║ Empresa: 177 C ║
║ Filial : 01 PMP Data:31/10/2010 Lote:0001 ║
║ Val.LOTE: 1,00 ║
╠═════════════════════════════════════════════════════════════════════╣
║ Lancamento: 0001 Doc.: 0001 ║
║ Conta a DEBITO .: 1.1.1.01.01.001- ║
║ Descricao ......: CAIXA ║
║ Centro de Custo : 0001 ADMINISTRACAO ║
║ Conta a CREDITO : ║
║ Descricao ......: ║
║ Centro de Custo : ║
║ Valor ..: 1.00 Historico Padrao: 0 ║
║ ╔══════[ SALDO DO LOTE ]═════════╗ ╔═════════[ TEXTO/COMPLEMENTO ]═══════╗ ║
║ ║Tot.Deb: 0,00║ ║1234567890123456789012345678901234567890║ ║
║ ║Tot.Cre: 0,00║ ║ INSERIR E EXCLURIR AQUI ║ ║
║ ║Dif.Deb: 1,00║ ║ ║ ║
║ ║Dif.Cre: 1,00║ ║ ║ ║
║ ╚═════════════════════════════╝ ╚═══════════════════════════════════╝ ║
╚═════════════════════════════════════════════════════════════════════╝
tela e esta aqui no final ta tremida mas no visor sai reta....
--- negocio esta no texto sao 160 char eu estou rapartindo em 4 variaveis , parte_1,2,3,4
na hora gravar junto as 4,
======== dificuldade esta no usuario.... acha deveria ser linha so na hora inserir e excluir
as linhas abaixo (ideia memoedit la nao e ruim) mais se alguem outra...
grato.....
║ SISTEMA DE CONTABILIDADE M O V I M E N T O G.W.M. ║
╚════════════════════════════════════════════════════════════════════════════╝
╔═════════════════════════════════════════════════════════════════════
║ Empresa: 177 C ║
║ Filial : 01 PMP Data:31/10/2010 Lote:0001 ║
║ Val.LOTE: 1,00 ║
╠═════════════════════════════════════════════════════════════════════╣
║ Lancamento: 0001 Doc.: 0001 ║
║ Conta a DEBITO .: 1.1.1.01.01.001- ║
║ Descricao ......: CAIXA ║
║ Centro de Custo : 0001 ADMINISTRACAO ║
║ Conta a CREDITO : ║
║ Descricao ......: ║
║ Centro de Custo : ║
║ Valor ..: 1.00 Historico Padrao: 0 ║
║ ╔══════[ SALDO DO LOTE ]═════════╗ ╔═════════[ TEXTO/COMPLEMENTO ]═══════╗ ║
║ ║Tot.Deb: 0,00║ ║1234567890123456789012345678901234567890║ ║
║ ║Tot.Cre: 0,00║ ║ INSERIR E EXCLURIR AQUI ║ ║
║ ║Dif.Deb: 1,00║ ║ ║ ║
║ ║Dif.Cre: 1,00║ ║ ║ ║
║ ╚═════════════════════════════╝ ╚═══════════════════════════════════╝ ║
╚═════════════════════════════════════════════════════════════════════╝
tela e esta aqui no final ta tremida mas no visor sai reta....
--- negocio esta no texto sao 160 char eu estou rapartindo em 4 variaveis , parte_1,2,3,4
na hora gravar junto as 4,
======== dificuldade esta no usuario.... acha deveria ser linha so na hora inserir e excluir
as linhas abaixo (ideia memoedit la nao e ruim) mais se alguem outra...
grato.....
- Pablo César
- Usuário Nível 7

- Mensagens: 5312
- Registrado em: 31 Mai 2006 10:22
- Localização: Curitiba - Paraná
Re: get historico grande
Não entendí muito bem, você poderia ter feito um print screen e gravado em jpg para termos uma idéia melhor, inclusive com a edição do campo que não ficou claro qual é exatamente, seria o campo "TEXTO/COMPLEMENTO" ? Então, você pode tranquilamente fazer com o MEMOEDIT, se a questão é como fazer a chamada dele dentro da edição dos GETs, tenho duas alternativas:
1. No rodapé do campo "TEXTO/COMPLEMENTO" onde está a linha "╚═══════════════════════════════════╝" você redesenha a linha assim: "╚═══════════ F9 - Edição de texto ══════════╝" e dentro do campo exiba através do SAY as SUBSTRINGS das primeiras 4 linhas, só para constar que tem uma observação. E coloca o SET KEY -8 TO SUA_FUNCAO antes dos GETs, assim poderá ser chamado o MEMOEDIT quando pressionarem F9 e faça ja com o tamanho de 160 de largura, mas pode abrir com a janela no tamanho máximo de 00,00,23,79 isso se não usar outra resolução ou até mesmo faça de um tamanho que fique sobreposta a tela de edição de campo dos GETs, podendo fazer outra janela com cor de fundo diferenciando dando a sensação de estar sobre-pósta e até com sombra (fica bom).
2. Você pode colocar um GET fora do campo e visão, digamos @ 25,81 GET xVar WHEN SUA_FUNCAO daí cada vez que o cursor se posicionar neste campo abre automáticamente o MEMOEDIT. A função tem que sempre retornar .T.
Não vejo por quê não fazer com MEMOEDIT... explique melhor a sua dificuldade.
1. No rodapé do campo "TEXTO/COMPLEMENTO" onde está a linha "╚═══════════════════════════════════╝" você redesenha a linha assim: "╚═══════════ F9 - Edição de texto ══════════╝" e dentro do campo exiba através do SAY as SUBSTRINGS das primeiras 4 linhas, só para constar que tem uma observação. E coloca o SET KEY -8 TO SUA_FUNCAO antes dos GETs, assim poderá ser chamado o MEMOEDIT quando pressionarem F9 e faça ja com o tamanho de 160 de largura, mas pode abrir com a janela no tamanho máximo de 00,00,23,79 isso se não usar outra resolução ou até mesmo faça de um tamanho que fique sobreposta a tela de edição de campo dos GETs, podendo fazer outra janela com cor de fundo diferenciando dando a sensação de estar sobre-pósta e até com sombra (fica bom).
2. Você pode colocar um GET fora do campo e visão, digamos @ 25,81 GET xVar WHEN SUA_FUNCAO daí cada vez que o cursor se posicionar neste campo abre automáticamente o MEMOEDIT. A função tem que sempre retornar .T.
Não vejo por quê não fazer com MEMOEDIT... explique melhor a sua dificuldade.
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.
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.
Re: get historico grande
Amigo, embora eu concorde com que o Pablo disse sobre a tela postada, segue uma função desenvolvida em cima do que entendi do seu post.
A funcao que faz a edição dos valores dos gets
A funcao auxiliar da funcao postada acima.
E aqui, a funcao para impedir a edicao de alguns gets, como
feito no inicio deste exemplo.
Boa sorte, ate+
Código: Selecionar todos
//Programador: Anderson Vieira
//Liguagem...: Clipper 5x
//Objetivo...: Preencher variaveis somente se necessario
cls
teste1=space(20)
teste2=space(20)
var1=space(40)
var2=space(40)
var3=space(40)
var4=space(40)
*--siga este procedimento, que declara o array, troque pelo nome das suas
*--vars, atente-se no primeiro sem aspas e no segundo com aspas
arCampos:={{var1,"var1"},;
{var2,"var2"},;
{var3,"var3"},;
{var4,"var4"};
}
*--array para retornar os dados editados
arBuffer:={}
*--variavel de exemplo, para demonstrar o preechimento
*--quando a var1 esta entre variaveis
@09,27 say" Teste1:" get teste1
@10,27 say"Historico:" get var1 valid edicao(10,39,arCampos,40)=.t.
*--estas sao as demais variaveis que serao usadas
*--preencher o campo de 160 posicoes, se nao
*--quiser visualiza-las na tela, desative-as
@11,27 say" " get var2 when passa()=.t.
@12,27 say" " get var3 when passa()=.t.
@13,27 say" " get var4 when passa()=.t.
*--variavel de exemplo, para demonstrar o preechimento
*--quando a var1 esta entre variaveis
@14,27 say" Teste2:" get teste2
@23,00 say padc("*** No campo HISTORICO tecle ENTER para preencher todo o historico ***",79)
read
? var1
? var2
? var3
? var4
Código: Selecionar todos
function edicao()
parameters l1,c1,arCampos,largura
local tela
priv sub:=0
*--obtem sempre o vlr atualizado da var atual
var=readvar() //arCampos[1,2] //readvar()
vlr=&var
if lastkey()#13
return .t.
endif
keyb chr(255)
inkey(0)
*--array para uso na funcao achoice
if len(arBuffer)=0
aadd(arBuffer,padr(vlr,40)) //arCampos[1,1])
else
arBuffer[1]=vlr
endif
for i = 2 to len(arCampos)
if !empty(arCampos[i,1])
var=arCampos[i,2]
vlr=&var
aadd(arBuffer,padr(vlr,40))
endif
next
do while .t.
lfin=l1+len(arBuffer)
l4=lfin
tela:=savescreen(l1-1,c1-1,l4+2,c1+1+largura)
set colo to b/w,w/b
@l1-1,c1-1 to lfin,c1+largura
@lfin+1,c1-1 say padr("F10=Aceitar Esc=Cancelar Del=Exclui",largura+3)
sub=achoice(l1,c1,lfin,c1+largura-1,arBuffer,"","contro",sub)
restscreen(l1-1,c1-1,l4+2,c1+1+largura,tela)
if lastkey()=-9
for i=1 to len(arCampos)
if i<=len(arBuffer)
cmp=arCampos[i,2]
&cmp=arBuffer[i]
else
cmp=arCampos[i,2]
&cmp=space(40)
endif
next
exit
elseif lastkey()=27
exit
endif
enddo
return .t.
Código: Selecionar todos
function contro
parameters modo, num_sel, posicao
local getlist:={}
do case
case lastkey()>=48.and.lastkey()<=57.or.lastkey()>=65.and.lastkey()<=90.or.lastkey()>=97.and.lastkey()<=122.or.lastkey()=13
setcursor(3)
if lastkey()#13
keyb chr(lastkey())
else
if len(alltrim(arBuffer[num_sel]))=0
keyb chr(1)
else
keyb chr(6)
endif
endif
@row(),col() get arBuffer[num_sel] colo "w/n,w+/b"
read
setcursor(0)
*--se a linha for toda preenchida, add uma
*--nova linha e posiciona o cursor
if len(alltrim(arBuffer[num_sel]))=largura
if num_sel=len(arBuffer)
aadd(arBuffer,space(largura))
lfin++
sub=num_sel+1
keyb chr(30)
return 1
endif
elseif len(alltrim(arBuffer[num_sel]))=0
*--se a linha for editada e seu conteudo final
*--for vazio, elimina a linha do achoice
if len(arBuffer)=1
arBuffer[num_sel]=space(largura)
else
adel(arBuffer,num_sel)
asize(arBuffer,len(arBuffer)-1)
endif
keyb chr(30)
sub=num_sel-1
return 1
endif
return 2
case lastkey()=7
if len(arBuffer)=1
arBuffer[num_sel]=space(largura)
else
adel(arBuffer,num_sel)
asize(arBuffer,len(arBuffer)-1)
endif
keyb chr(30)
sub=num_sel-1
return 1
case lastkey()=-9
return 0
case lastkey()=13
return 1
case lastkey()=27
return 0
otherwise
return 2
endcase
feito no inicio deste exemplo.
Código: Selecionar todos
function passa
*--funcao para pular as variaves que nao desejo preencher
*--atualizando o seu buffer
if lastkey()=5
keyb chr(5)
return .t.
endif
keyb chr(13)
return .t.
Clipper 5.2e / Blinker 5.1 / Harbour 3.2 / GTwvg
- Pablo César
- Usuário Nível 7

- Mensagens: 5312
- Registrado em: 31 Mai 2006 10:22
- Localização: Curitiba - Paraná
get historico grande
Enquanto o Andril postava a sua resposta, eu estava fazendo este exemplo que disponibilizo com os fontes para melhor compresão sobre o que eu sugeri na mensagem anterior.
Vou também compilar o que o colega Andril postou, mas acho que ja deve resolver com estas opções apresentadas.
Vou também compilar o que o colega Andril postou, mas acho que ja deve resolver com estas opções apresentadas.
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.
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.
-
alxsts
- Colaborador

- Mensagens: 3092
- Registrado em: 12 Ago 2008 15:50
- Localização: São Paulo-SP-Brasil
Re: get historico grande
Olá!
Segue mais uma solução, que julgo ser mais simples:
Segue mais uma solução, que julgo ser mais simples:
Código: Selecionar todos
#include "Box.ch"
#include "Inkey.ch"
PROCEDURE Main()
LOCAL nTotDeb, nTotCre, nDifCre, nDifDeb, GetList := {}
LOCAL cHistor := PadR( "Resposta a um post do forum Clipper on Line.", 160 )
CLS
DispBox( 15, 0, 22, 79, B_SINGLE + " " )
DispBox( 16, 2, 21, 35, B_SINGLE + " " )
DispBox( 16,36, 21, 78, B_SINGLE + " " )
@ 16, 9 Say "[ SALDO DO LOTE ]"
@ 16,46 Say "[ TEXTO/COMPLEMENTO ]"
@ 21,46 Say "[ Ctrl+W salvar ]"
nTotDeb := 0
nTotCre := 0
nDifCre := 0
nDifDeb := 0
@ 17, 3 Say "Tot.Deb:" Get nTotDeb Pict "@E 9,999.99"
@ 18, 3 Say "Tot.Cre:" Get nTotCre Pict "@E 9,999.99"
@ 19, 3 Say "Dif.Deb:" Get nDifCre Pict "@E 9,999.99"
@ 20, 3 Say "Dif.Cre:" Get nDifDeb Pict "@E 9,999.99"
@ MaxRow() + 1, MaxCol() + 1 Get cHistor ;
When { |oGet| oGet:VarPut( MemoEdit( oGet:VarGet, 17, 37, 20, 75, .T.,, 40 ) ), .F. }
// apenas exibe o texto do historico antes do Read
__KeyBoard( CHR( K_ESC ) )
MemoEdit( cHistor, 17, 37, 20, 75, .F., , 40 )
ReadModal( GetList ); GetList := {}
// Remover "soft carriage return/line feeds"
cHistor := StrTran( cHistor, Chr(141)+Chr(10), " " )
Alert( cHistor,,"W+/B" )
RETURN
//------------------------------------------------------------------------------
[]´s
Alexandre Santos (AlxSts)
Alexandre Santos (AlxSts)

