Quebra de linha em campo Memo...

Delphi

17/12/2004

Boa tarde,

estou queimando neuronios p/ efetuar uma quebra de linha manual, pois com a opcao do campo Memo WordWrap:=True a quebra de linha ocorre de forma automatica, mas esse tipo de quebra esta interferindo no label de um relatorio(QReport) pois se o usuario nao usa CTRL+ENTER p/ quebrar o texto, no label nao apresenta quebra, caso contrario aparece...portanto estou com o seguinte codigo no envento OnChange do Componente:

[b:aca43af34e]procedure TFGRIndividual.ETextoChange(Sender: TObject);
var linha,coluna:integer;
begin
ActiveControl:=ETexto;
With ETexto do
begin
linha:= Perform(EM_LINEFROMCHAR,SelStart, 0);
coluna:= SelStart - Perform(EM_LINEINDEX, linha, 0);
if coluna=70 then
begin
// aqui esta minha duvida:qual comando utilizaria p/ posicionar o cursor na linha abaixo
end;
end;
end;[/b:aca43af34e]

Att, Maiki Perin.


Maikiperin

Maikiperin

Curtidas 0

Respostas

Dopi

Dopi

17/12/2004

Nesse caso acho que é mais fácil tratar o Memo.Text....

Quais são os caracteres que são inseridos no Memo.Text quando o usuário dá um ENTER ou CTRL-ENTER ?

Analisando isso... vc pode usar o StringReplace e trocar todos os ENTER por CTRL-ENTER antes de gravar o memo, ou antes de apresenta-lo no Relatorio

Geralmente a quebra de linha é: #13+10


GOSTEI 0
Maikiperin

Maikiperin

17/12/2004

Nesse caso acho que é mais fácil tratar o Memo.Text.... Quais são os caracteres que são inseridos no Memo.Text quando o usuário dá um ENTER ou CTRL-ENTER ? Analisando isso... vc pode usar o StringReplace e trocar todos os ENTER por CTRL-ENTER antes de gravar o memo, ou antes de apresenta-lo no Relatorio Geralmente a quebra de linha é: #13+10


nao sao inseridos nenhum caractere, o CTRL+ENTER e somente uma tecla q quando solicitada da uma quebra de linha....


GOSTEI 0
Dopi

Dopi

17/12/2004

Mas para o Delphi saber que há uma quebra de linha ele tem que sinalizar com um caracter NAO visivel como #10 , 13 ou 13+10

Um Enter consume 1 byte do memo, portanto é um caracter...

Veja:
Insira no seu programa ShowMessage( Memo1.Text )
Faça um breakpoint nessa mesma linha.
Pare com o mouse sobre a palavra TEXT
Vece verá a String Resultante do Memo... os caracteres que iniciam com $ como $D10 (ou algo parcido) são os caracteres NAO visiveis..

Deve haver distinçao no caracter inserido quando há CTR-ENTER ou ENTER.... O que estou sugerindo é vc usar o StringReplace e transformar todos os SoftLineBreak por HardLineBreak


GOSTEI 0
POSTAR