PDA

Ver la Versión Completa : Saber en qué línea de un TRichEdit estoy


cozina
30-09-2016, 21:13:00
Hola, debe ser fácil pero me he liado con esto y no doy con la forma de conseguirlo.
Tengo un TRichEdit con varias líneas de texto.
Si hago 'click' con el ratón en cualquier línea, ¿cómo sé el número de línea en que acabo de posicionar el cursor?
Gracias.

ecfisa
01-10-2016, 05:51:53
Hola cozina.


procedure TForm1.RichEdit1MouseDown(Sender: TObject; Button: TMouseButton;
Shift: TShiftState; X, Y: Integer);
var
RE: TRichEdit;
Col, Row: Integer;
begin
RE := TRichEdit(Sender);

Row := RE.Perform(EM_LINEFROMCHAR, RE.SelStart, 0);
Col := RE.SelStart - RE.Perform(EM_LINEINDEX, Row, 0);
// (Valor de línea y columna(Row/Col) en base cero)

ShowMessage(Format('Linea: %d, Columna: %d',[Row, Col]));
end;


Saludos :)

cozina
01-10-2016, 13:42:13
Muchas gracias, funciona perfecto :)
Yo estaba mirando el evento click del ratón, no se me ocurrió probar el down.
Y si quiero hacer justo al contrario, darle un número de línea y que se posicione en pantalla esa línea, ¿es posible?
Gracias.

ecfisa
01-10-2016, 16:08:46
Hola cozina.
...
Y si quiero hacer justo al contrario, darle un número de línea y que se posicione en pantalla esa línea, ¿es posible?

Si, claro que es posible. Pero al ser una consulta distinta a la inicial, te agradecemos que la hagas en un nuevo hilo para facilitar las búsquedas.

Saludos y gracias por tu colaboración :)

cozina
01-10-2016, 17:14:23
Ok, gracias :)
Aquí está la nueva pregunta: Posicionar en una fila de un richedit (http://www.clubdelphi.com/foros/showthread.php?t=90900)

*