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