Articles

Use EM_LINEFROMCHAR message for Memo:

procedure TForm1.Memo1KeyUp(Sender: TObject; var Key: Word;
  Shift: TShiftState);
var
  LineNum: LongInt;
begin
  if (Key=VK_UP)or(Key=VK_DOWN) then
  begin
    LineNum:=Memo1.Perform(EM_LINEFROMCHAR, Memo1.SelStart, 0);
    Label1.Caption:='Line - '+IntToStr(LineNum+1);
  end;
end;