Ver Mensaje Individual
  #10  
Antiguo 09-02-2006
Avatar de roman
roman roman is offline
Moderador
 
Registrado: may 2003
Ubicación: Ciudad de México
Posts: 20.269
Reputación: 10
roman Es un diamante en brutoroman Es un diamante en brutoroman Es un diamante en bruto
Sigo sin entender cabalmente porqué no te gusta SelText. Por ejemplo, si hacemos

Código Delphi [-]
Memo1.Text := RichEdit1.SelText;

el memo tendrá el texto seleccionado en el richedit. ¿No basta eso? De hecho tendrá tantas líneas como tengas en la selección del richedit y puedes procesar las líneas del memo una a una con Memo.Lines.

Bueno, hay un punto a considerar. Si el richedit tiene su propiedad WordWrap en false, lo que dije arriba parece ser cierto, pero si WordWrap es true el concepto mismo de línea es relativo ya que depende del ajuste del texto según el tamaño del control. En este caso te peude servir el siguiente código:

Código Delphi [-]
var
  First, Last, I: Integer;

begin
  with RichEdit1 do
  begin
    First := Perform(EM_LINEFROMCHAR, SelStart, 0);
    Last := Perform(EM_LINEFROMCHAR, SelStart + SelLength, 0);

    for I := First to Last do
      Memo1.Lines.Add(Lines[i]);
  end;
end;

EM_LINEFROMCHAR es un mensaje que se manda al control de edición para determinar el número de línea (basada en cero) que ocupa el caracter con índice especificado (segundo parámetro de Perform). En este caso, no importa el tamaño en que pongas el control, en Memo.Lines obtendrás las líneas que ves en el richedit.

// Saludos
Responder Con Cita