Utilizamos cookies propias y de terceros. [Más información sobre las cookies].
Política de cookies
Proyecto AjpdSoft

· Inicio
· Buscar
· Contactar
· Cookies
· Descargas
· Foros
· Historia
· Nosotros
· Temas
· Top 10
· Trucos
· Tutoriales
· Wiki
Obtener la posición del cursor - fila y columna - en un TMemo - Delphi
Lenguaje de programación Borland Delphi


Para calcular la posición del cursor (fila y columna) y la longitud de la fila actual en un TMemo, necesitaremos un control de tipo TMemo y 3 controles de tipo TLabel (para indicar los cálculos).
Listado del programa completo:

unit Unit1;

interface

uses
  Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
  Dialogs, StdCtrls;

type
  TForm1 = class(TForm)
    Memo1: TMemo;
    lbLinea: TLabel;
    lbColumna: TLabel;
    lbLongitud: TLabel;
    procedure calcularPosicion ();
    procedure Memo1Change(Sender: TObject);
    procedure Memo1KeyPress(Sender: TObject; var Key: Char);
    procedure Memo1KeyUp(Sender: TObject; var Key: Word;
      Shift: TShiftState);
    procedure Memo1Click(Sender: TObject);
  private
    { Private declarations }
  public
    { Public declarations }
  end;

var
  Form1: TForm1;

implementation

{$R *.dfm}

procedure TForm1.calcularPosicion ();
var
  Lpos, Cpos, LineLength : integer;
begin
  Lpos := SendMessage(memo1.Handle, EM_LINEFROMCHAR, Memo1.SelStart, 0);
  Cpos := SendMessage(memo1.Handle, EM_LINEINDEX, Lpos, 0);
  LineLength := SendMessage(memo1.handle, EM_LINELENGTH, Cpos, 0);
  CPos := Memo1.SelStart - CPos;
  lbLinea.Caption := 'Posición - Fila: ' + IntToStr(Lpos);  {Linea}
  lbColumna.Caption := 'Posición - Columna: ' + IntToStr(Cpos);  {Columna}
  lbLongitud.Caption := 'Longitud de la línea: ' + IntToStr(LineLength);  {Longitud de la linea}
end;

procedure TForm1.Memo1Change(Sender: TObject);
begin
  calcularPosicion;
end;

procedure TForm1.Memo1KeyPress(Sender: TObject; var Key: Char);
begin
  calcularPosicion;
end;

procedure TForm1.Memo1KeyUp(Sender: TObject; var Key: Word;
  Shift: TShiftState);
begin
  calcularPosicion;
end;

procedure TForm1.Memo1Click(Sender: TObject);
begin
  calcularPosicion;
end;

end.
Nota: hemos utilizado los eventos Click, KeyUp, KeyPress y Change del TMemo para actualizar los valores en cualquier circunstancia.




Publicado el: 2003-09-29

Visita nuestro nuevo sitio web con programas y contenidos actualizados: Proyecto A