Exibir coluna atual dentro do GET
Moderador: Moderadores
Exibir coluna atual dentro do GET
Pessoal,
Preciso saber quando estou editando uma variável a coluna atual, a exemplo do que fazemos na função MEMOEDIT() para exibir linha e coluna onde o cursor esta.
Sei que com o objeto GET é possivel atraves do "POS", mais não consigo entender nem como criar ou manipular o objeto GET.
Usava o MEMOEDIT mais este tem limite de exibição de 255 caracteres e preciso editar uma var com mais de 600 caracteres e saber em que coluna estou?
Se alguem tiver uma idéia ou exemplo, agradeço.
Ate+
Preciso saber quando estou editando uma variável a coluna atual, a exemplo do que fazemos na função MEMOEDIT() para exibir linha e coluna onde o cursor esta.
Sei que com o objeto GET é possivel atraves do "POS", mais não consigo entender nem como criar ou manipular o objeto GET.
Usava o MEMOEDIT mais este tem limite de exibição de 255 caracteres e preciso editar uma var com mais de 600 caracteres e saber em que coluna estou?
Se alguem tiver uma idéia ou exemplo, agradeço.
Ate+
Clipper 5.2e / Blinker 5.1 / Harbour 3.2 / GTwvg
- sygecom
- Administrador

- Mensagens: 7131
- Registrado em: 21 Jul 2006 10:12
- Localização: Alvorada-RS
- Contato:
Re: Exibir coluna atual dentro do GET
Não entendi bem sua duvida, mas acredito que com FieldName(), você resolva o seu problema. Abaixo um link que fala sobre fildname()
http://www.itlnet.net/programming/progr ... 45816.html
http://www.itlnet.net/programming/progr ... 45816.html
Leonardo Machado
xHarbour.org + Hwgui + PostgreSql
xHarbour.org + Hwgui + PostgreSql
-
Stanis Luksys
- Colaborador

- Mensagens: 1329
- Registrado em: 18 Jun 2005 03:04
- Localização: São Paulo
- Contato:
Re: Exibir coluna atual dentro do GET
Olá...
Voltei! rs
Partindo do princípio que você sabe onde coloocou seu memoedit ou get, basta usar a função Col() e fazer as continhas...
[]s
Voltei! rs
Partindo do princípio que você sabe onde coloocou seu memoedit ou get, basta usar a função Col() e fazer as continhas...
[]s
Stanis Luksys
sites.google.com/hblibs
Apoiar e se utilizar de projetos opensource não é uma questão de boicote, mas sim de liberdade.
Utilize, aprimore e distribua.
sites.google.com/hblibs
Apoiar e se utilizar de projetos opensource não é uma questão de boicote, mas sim de liberdade.
Utilize, aprimore e distribua.
Re: Exibir coluna atual dentro do GET
Obrigado pessoal,
Mais meu problema é outro.
Tenho a seguinte linha:
A função COL() me retorna a posição incial do GET neste caso (@00,00) e não a posição durante a "EDIÇÃO" do GET.
Por isso, conto com a ajuda do pessoal que utiliza o GET porem como OBJETO , pois acho eu, é a única forma de obter a posição que preciso através da instância "POS".
Como disse, usava o MEMOEDIT porem este tem um limite de 255 caracteres e preciso navegar por +- 600 caracteres.
Ate+
Mais meu problema é outro.
Tenho a seguinte linha:
Quando uso as setas (dir/esq) navego no GET porem não sei em que coluna esta dentro do GET, precisava saber o número da coluna porque faço a captura de parte do conteudo da variavel "VAR".VAR=space(600)
@00,00 get VAR pict"@!s70"
read
A função COL() me retorna a posição incial do GET neste caso (@00,00) e não a posição durante a "EDIÇÃO" do GET.
Por isso, conto com a ajuda do pessoal que utiliza o GET porem como OBJETO , pois acho eu, é a única forma de obter a posição que preciso através da instância "POS".
Como disse, usava o MEMOEDIT porem este tem um limite de 255 caracteres e preciso navegar por +- 600 caracteres.
Ate+
Clipper 5.2e / Blinker 5.1 / Harbour 3.2 / GTwvg
Pra obter o número da coluna de acordo com a posição do cursor, você teria de interagir com o código do pseudo-objeto que controla a edição. Posso estar enganado, mas acho que isso não será possível. Porém, uma vez que você conhece a posição inicial do GET e conhece a posição do cursor, basta fazer a conta, não?
[]'s
Maligno
---
Não respondo questões técnicas através de MP ou eMail. Não insista.
As dúvidas devem ser postadas no fórum. Desta forma, todos poderão
se beneficiar das respostas.
---
Se um dia precisar de uma transfusão de sangue você perceberá como
é importante a figura do doador. Procure o hemocentro de sua cidade e
se informe sobre a doação de sangue, plaquetas e medula óssea. Doe!
Maligno
---
Não respondo questões técnicas através de MP ou eMail. Não insista.
As dúvidas devem ser postadas no fórum. Desta forma, todos poderão
se beneficiar das respostas.
---
Se um dia precisar de uma transfusão de sangue você perceberá como
é importante a figura do doador. Procure o hemocentro de sua cidade e
se informe sobre a doação de sangue, plaquetas e medula óssea. Doe!
Re: Exibir coluna atual dentro do GET
Pessoal,

Qual a função que me retorna então a posição atual da coluna quando um GET esta sendo editado? COL() não é!Porém, uma vez que você conhece a posição inicial do GET e conhece a posição do cursor, basta fazer a conta, não?
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á
Exibir coluna atual dentro do GET
Andril, para esses casos eu modifico o GETSYS.PRG, é dizer faço um específico. Lá você pode inserir uma função que leia inkey um a um e fazer teu próprio controle.
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: Exibir coluna atual dentro do GET
Andril,
Teste a rotina, creio que poderá dar uma início para você.
Conforme vc vai digitando, o número da coluna é atualizada.
Também é atualizado utilizando setas, backspace, home e end.
Do jeito que está, você terá problemas utilizando "@!s70".
Tente adaptar a sua necessidade
[]´s
Zoc
Teste a rotina, creio que poderá dar uma início para você.
Conforme vc vai digitando, o número da coluna é atualizada.
Também é atualizado utilizando setas, backspace, home e end.
Do jeito que está, você terá problemas utilizando "@!s70".
Tente adaptar a sua necessidade
Código: Selecionar todos
#include "inkey.ch"
clear
cNOME = space(40)
@ 10,10 GET cNOME PICT "@!s20" WHEN POSCOLUNA()
READ
/////////////////////////////
FUNCTION POSCOLUNA
LOCAL tam, buf, get, pos, lin, col, tec
get := GETACTIVE()
lin := get:row
col := get:col
buf := get:VarGet()
tam := LEN(buf)
pos := 1
SETCOLOR("N/W")
DO WHILE .T.
SETPOS(lin, col)
DISPOUT(buf)
SETPOS(lin, col - 1 + pos)
tec := INKEY(0)
IF tec >= 32 .AND. tec <= 255
*TEC := ASC( UPPER( CHR( TEC )))
buf := LEFT(buf, pos - 1) + CHR(tec) + SUBS(buf, pos + 1)
pos := MIN(tam, pos + 1)
ELSEIF tec == K_LEFT
pos := MAX(1, pos - 1)
ELSEIF tec == K_RIGHT
pos := MIN(tam, pos + 1)
ELSEIF tec == K_HOME
pos := 1
ELSEIF tec == K_END
pos := MIN(tam, LEN(TRIM(buf)) + 1)
ELSEIF tec == K_BS
IF pos > 1
pos --
buf := LEFT(buf, pos - 1) + SUBS(buf, pos + 1) + " "
ENDIF
ELSE
KEYB CHR(tec)
get:VarPut(buf)
get:UpdateBuffer()
RETURN .T.
ENDIF
@ 15,10 say str( pos, 5)
ENDDO
RETURN .T.
Zoc
Re: Exibir coluna atual dentro do GET
Zoc,
Obrigado pela sua função, mais não funcionou corretamente por ser uma string de 600 caracteres, ou seja, usando a "@s70" apos a coluna 70 nao rola a tela.
Mais foi muito boa, por que aprendi um pouco sobre o objeto GET que nem tinha ideia de como utilizá-lo.
Resolvi o problema fazendo uma função que recebe a string e navega por ela fazendo um SCROLL até o seu final. Outro problema que tinha encontrado no GET era que a string não poderia ser editada (alterada pelo usuário) ficando o processo muito difícil.
Segue a função que estou usando:
Uso:
Agradeço a todos,
Até+
Obrigado pela sua função, mais não funcionou corretamente por ser uma string de 600 caracteres, ou seja, usando a "@s70" apos a coluna 70 nao rola a tela.
Mais foi muito boa, por que aprendi um pouco sobre o objeto GET que nem tinha ideia de como utilizá-lo.
Resolvi o problema fazendo uma função que recebe a string e navega por ela fazendo um SCROLL até o seu final. Outro problema que tinha encontrado no GET era que a string não poderia ser editada (alterada pelo usuário) ficando o processo muito difícil.
Segue a função que estou usando:
Código: Selecionar todos
FUNCTION myvisao(string,largura,exibent,exibsai)
*string a var que sera posicionada
*largura tamanho de exibicao na tela
*exibent array {0,10} indica onde a string sera apresentada na tela
*exibsai array {1,1} indica para exibir na tela em linha 1 e coluna 10 a coluna atual
LOCAL coluna:=1,contador:=1,largrela:=1,linhaunica:=savescreen(exibent[1],exibent[2],exibent[1],exibent[2]+largura)
do while .t.
@exibent[1],exibent[2] clea to exibent[1],exibent[2]+largura
@exibent[1],exibent[2] say substr(string,largrela*contador,largura)
@exibent[1],exibent[2]-1+coluna say substr(substr(string,largrela*contador,largura),coluna,1) colo "gr+/r"
@exibsai[1],exibsai[2] say padl(coluna+contador-1,3,"0") colo "r/gr*"
inkey(0)
if lastkey()=19 //esquerda
coluna=coluna-1
elseif lastkey()=4 //direita
coluna=coluna+1
elseif lastkey()=1 //home
coluna=coluna-10 //-10 esquerda
elseif lastkey()=6 //.and.contador+10<=len(a) //end
if coluna+10+contador>len(string)+1
*coluna=coluna-1
else
coluna=coluna+10 //+10 direita
endif
elseif lastkey()=27
exit
endif
if coluna<1.and.contador=1
contador=1
coluna=1
elseif coluna<1
coluna=len(string)
contador=contador-largura
coluna=largura
elseif coluna>largura
contador=contador+largura
coluna=1
elseif lastkey()=27
exit
endif
if coluna+contador>len(string)+1
coluna=coluna-1
endif
enddo
restscreen(exibent[1],exibent[2],exibent[1],exibent[2]+largura,linhaunica)
return coluna+contador-1
Uso:
Código: Selecionar todos
var="Aqui deve ter uma string com mais de 500 caracters para que seja feito o exemplo"
myvisao(var,70,{07,04},{05,65})
Agradeço a todos,
Até+
Clipper 5.2e / Blinker 5.1 / Harbour 3.2 / GTwvg
Re: Exibir coluna atual dentro do GET
Vc já tentou estes?
- oget:col
- oget:pos
- oget:col
- oget:pos
"TRS-80/Sincler/Apple/PC - Clipper Winter 85, tlink 1.0 [pc 10 MHz - 640K] {NEZ 8000 2Kb RAM}"
{POG - Programação Orientada a Gambiarra}
{POG - Programação Orientada a Gambiarra}
- vagucs
- Membro Master

- Mensagens: 1480
- Registrado em: 10 Jul 2004 10:45
- Localização: Ipanema - MG
- Contato:
Re: Exibir coluna atual dentro do GET
Bom, pelo que sei, o limite do dbedit é 64k e nao apenas 255 bytes, acho que devia informar bem sobre isto, mesmo um campo caractere com 600 posições pode ser editado pelo memoedit e nao apenas os campos do tipo memo ou arquivos texto, e ele você ja tem controle de linha e coluna. Acho que está quebrando cabeça atoa.
Re: Exibir coluna atual dentro do GET
Prezado Colega
Você pode pegar como exemplo o utilitário PE.PRG que vem com o Clipper, ele edita usando o MEMOEDIT() e controla corretamente/mostra a posição do cursor (linha e coluna).
Até logo.
Marcelo
Você pode pegar como exemplo o utilitário PE.PRG que vem com o Clipper, ele edita usando o MEMOEDIT() e controla corretamente/mostra a posição do cursor (linha e coluna).
Até logo.
Marcelo
Programador que é programador, quando tá de folga vai inventar função nova, fazer testes, ou seja... se divertir
Cobra 210 - Drive de 8" 1.024 KB - 64 KB RAM - Impressora de Linha Cobra - Visicalc - Fortran - Dialog - Sistema Operacional SP/M (é sp/m mesmo - era o cp/m da cobra)
Cobra 210 - Drive de 8" 1.024 KB - 64 KB RAM - Impressora de Linha Cobra - Visicalc - Fortran - Dialog - Sistema Operacional SP/M (é sp/m mesmo - era o cp/m da cobra)
Re: Exibir coluna atual dentro do GET
Vagner
Quando disse que o limite do MEMOEDIT era 255 me referia a largura por linha e nao do tamanho da variavel/arquivo, realmente ele aceita ate o tamanho de 64k.
O meu problema é que cada linha do meu arquivo tem 600 caracteres, porem so precisava da 1a. linha:
Este codigo me retornava uma string vazia se o comprimento fosse maior que 254 caracteres, ok
Marcelo,
Não tenho mais o PE.PRG depois que deu pane no meu micro perdi muitas coisas legais e o meu backup era somente do básico.
Já consegui obter o resultado que eu queria com a função que postei acima, obrigado a todos vcs.
Ate+,
Quando disse que o limite do MEMOEDIT era 255 me referia a largura por linha e nao do tamanho da variavel/arquivo, realmente ele aceita ate o tamanho de 64k.
O meu problema é que cada linha do meu arquivo tem 600 caracteres, porem so precisava da 1a. linha:
Código: Selecionar todos
string=memoedit("ARQUIVO.TXT")
string=memoline(string,600,1)
memoedit(string,01,01,01,79)
Marcelo,
Não tenho mais o PE.PRG depois que deu pane no meu micro perdi muitas coisas legais e o meu backup era somente do básico.
Já consegui obter o resultado que eu queria com a função que postei acima, obrigado a todos vcs.
Ate+,
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á
Exibir coluna atual dentro do GET
Se precisarem ver o arquivo PE.PRG que o colega menciona, vai aqui em anexo.Não tenho mais o PE.PRG depois que deu pane no meu micro perdi muitas coisas legais
Claro, o importante é isso e que os colegas dispuseram-se para lhe ajudar.ANDRIL escreveu:Já consegui obter o resultado que eu queria com a função que postei acima, obrigado a todos vcs.
- Anexos
-
pe.prg- Editor do Clipper 5.3 (..\Source\Pe)
- (11.99 KiB) Baixado 103 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.
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.
- vagucs
- Membro Master

- Mensagens: 1480
- Registrado em: 10 Jul 2004 10:45
- Localização: Ipanema - MG
- Contato:
Re: Exibir coluna atual dentro do GET
Andril, o tamanho da linha é customizável é um parametro do Memoedit que você pode definir como 600. Se não me engano é o oitavo parâmetro.
Código: Selecionar todos
string=memoedit("ARQUIVO.TXT",,,,,,,600)
string=memoline(string,600,1)
memoedit(string,01,01,01,79)

