SUBSTRING NA EDIÇÃO MEMOEDIT (ALINHAR TEXTO P/JUSTIFICADO)
Enviado: 20 Mar 2007 17:08
Pessoal eu estou con dificuldades em atribuir a uma variável cujo conteúdo faz parte de um texto (isto é: SUBSTRING), estou intentando dentro da função_do_usuário do MEMOEDIT(), mas nada !
Parece ser fácil mas não descobrí até agora. Conseguir uma substring da variavel em edição até que consigo, mas só consigo quando ela já estava originalmente. Quando é digitado algo na 2ª linha e quero pegar uma substring dessa mesma linha me vem em branco.
Vou colocar um exemplo:
Alguém conhece algum jeito de conseguir essa SUBSTRING dentro do EDITOR de texto (MEMOEDIT)?

Parece ser fácil mas não descobrí até agora. Conseguir uma substring da variavel em edição até que consigo, mas só consigo quando ela já estava originalmente. Quando é digitado algo na 2ª linha e quero pegar uma substring dessa mesma linha me vem em branco.
Vou colocar um exemplo:
Código: Selecionar todos
#include "memoedit.ch"
VWRAP:=.T.
TEXTO:="1ª LINHA"+CHR(13)+CHR(10)+"2ª LINHA"
TEXTO:=MEMOEDIT(TEXTO,00,00,20,78,.T.,"CONTROL",120)
FUNCTION CONTROL(MODO,LINHA,COLUNA)
PUBLIC INS_MUDA,MODET
IF MODO=ME_INIT
INS_MUDA=.F.
MODET=.F.
SETCURSOR(1)
IF VWRAP=.T.
// VWRAP:= .F.
// RETURN (ME_TOGGLEWRAP)
ENDIF
ENDIF
IF MODO=0
@ 21,50 SAY " Linha: "+STRZERO(LINHA,3,0)+" " COLOR "W+/B"
@ 21,63 SAY " Coluna: "+STRZERO(COLUNA,3,0)+" " COLOR "W+/B"
QTECLA:=LASTKEY()
IF !(QTECLA=27)
IF QTECLA=7 .OR. QTECLA=8 .OR. QTECLA=9 .OR. QTECLA=13 .OR. QTECLA=127 .OR. (QTECLA>32 .AND. QTECLA<255)
MODET=.T.
ENDIF
ENDIF
ENDIF
IF INS_MUDA=.T. // Acerta o Ins
READINSERT(.T.)
INS_MUDA=.F.
ENDIF
DO CASE
CASE LASTKEY()=-2 // F3
MEMOWRIT("TEXTO.TMP",TEXTO)
TMP:=MEMOREAD("TEXTO.TMP")
NPOS:=MLCTOPOS(TMP,148,LINHA,0,,.T.)
// ALERT(STR(NPOS))
// VLIN:=MEMOLINE(TEXTO,148,NPOS,,.T.)
VLIN:=SUBSTR(TEXTO,NPOS,148)
IF CHR(13) $ VLIN
VLIN:=SUBSTR(VLIN,1,(AT(CHR(13),VLIN))-1)
ENDIF
ALERT(VLIN)
ENDCASE
RETURN 0