Delphi - Memo

 
Vista:

Memo

Publicado por Rodolfo (3 intervenciones) el 22/09/2004 00:15:00
Una consulta.

estoy registrando en un memo una cadena de texto, esta cadena cada vez que presione Enter debe agregar al final de la linea donde me encuentro <br> y luego ir a la siguiente linea.

Cuando lo pruebo con el evento onkeypressed y agrego la cadena al detectar la tecla #13 me sale una cosa que en verdad no deseo.
Eh tratado tambien de esta forma:
memo1.Lines.Text:=memo1.Lines.Text+'<br>'
desde un boton, pero salgo del foco del objeto y cuando ingreso el cursor esta al principio (primera linea).

Hay una forma de hacer de que se agregue esa cadena en la linea donde me encuetro y que el cursor quede al final de la linea?.-

Muchas Gracias.

Saludos.
Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder

RE:Memo

Publicado por Marcos (192 intervenciones) el 22/09/2004 12:33:11
Idea ... pues si trabajas con una cadena temporal y cambias ahi las cosas q quieres cambiar, luego borras el texto del memo y luego asignas la cadena ya tratada, lo unico q tendrías q aberiguar es como hacer q el memo este activo al final del texto.

Espero q te sirva.

Suerte
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

RE:Memo

Publicado por Elena (330 intervenciones) el 22/09/2004 16:29:13
Ok.. Acá te envío la solución

procedure TForm1.Memo1KeyPress(Sender: TObject; var Key: Char);
var
x, Linea : Integer;
L : String;
begin
if Key=#13 then
begin
Key:=#0;
Linea := SendMessage(memo1.Handle,EM_LINEFROMCHAR,Memo1.SelStart,0);
X := SendMessage(Memo1.Handle, EM_LINELENGTH, SB_HORZ,Linea);
Memo1.SelStart := X +1;
L := Memo1.Lines[Linea];
Memo1.Lines[Linea] := L + '<br>'
end;
end;

Espero que te sirva.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

RE:Memo

Publicado por Ing. Francisco H. Arena (140 intervenciones) el 24/09/2004 14:42:39
El método Insert inserta una cadena en la posición especificada.

Memo1.Lines.Insert(1,micadena);

Un error que veo en lo que decis es que cuando insertes el ASCII #13, te está faltando el ASCII de fin de línea. Tendrías que así:

cadena := cadena + #13#10;

Con respecto a que el cursor se va a la primera línea, recuerdo que a mi me pasaba lo mismo con un Messenger arcaico que armé hace un tiempo atras. El problema es que no me acuerdo ahora cómo lo solucioné y no tengo el código a mano. SI queres mandame un mail y para el lunes te digo cómo se hace.
Otra alternativa: en la pagina de About Delphi creo que vi un trruco relacionado a hacer scroll en un Memo por código.

http://delphi.about.com/

Saludos...
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar