Ver Mensaje Individual
  #2  
Antiguo 08-07-2004
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
Prueba esta rutina:

Código Delphi [-]
procedure MoveCaret(Memo: TMemo; Row, Col: Integer);
var
  LineIndex: Integer;
  LineLength: Integer;

begin
  LineIndex := Memo.Perform(EM_LINEINDEX, Row, 0);

  if LineIndex = -1 then
    Memo.SelStart := Length(Memo.Text)
  else
  begin
    LineLength := Memo.Perform(EM_LINELENGTH, LineIndex, 0);
    if Col > LineLength then Col := LineLength;

    Memo.Perform(EM_SETSEL, LineIndex + Col, LineIndex + Col)
  end;

  Memo.Perform(EM_SCROLLCARET, 0, 0);
end;

Al procedimiento le pasas el Memo donde quieres mover el cursor (caret). Si Row es mayor que el número de líneas del memo el cursor se va hasta el final del memo y si Col es mayor que el número de caracteres en el renglón especificado entonces el cursor se mueve al final de dicha línea.

Tanto Row como Col están basados en cero, esto es, el primer renglón es el 0 y la primera colmna es la 0.

// Saludos
Responder Con Cita