如何解决呢?

解决方案 »

  1.   

    你在memo的onkeypress中写代码,光标还没移动到下一行
      

  2.   

    你在onkeypress中写的代码吧,应该不行,那时关标还没有下移,在执行完代码后,光标才下移
      

  3.   

    我专门弄了个button都不行,光标已经移动到下一行了,但执行button后,显示的还是原来的行数。showMessage(intToStr(memo1.lines.count))
      

  4.   

    我试了一下,可以。
    窗体上放一个memo1,一个label,一个button;
    button按键事件中:
    label1.Caption:=intToStr(memo1.lines.count);
      

  5.   

    你再试一下,就是连续回车几次,看光标在第几行,而button按下后显示的是多少?有时候相符,有时候不相符。
      

  6.   

    我用的是delphi7.
    另外在memo1的lines属性,双击后弹出StringList Editor,效果也是一样,按了两下回车,光标停留在第三行,而显示的是2 lines.在光标出随便按一下任何键,就显示3 lines了。
      

  7.   

    但是outLook创建新邮件,发件人那一栏却实现的很好。是否有什么办法可以实现到那样?
      

  8.   

    这是因为是这样的,在你回车的时候,你实质上给当前行增加了一个回车符,
    光标移动到了下一行,但没有插入任何值,所以这一行不是一line,
    可以这样解决procedure TForm1.Memo1KeyUp(Sender: TObject; var Key: Word;
      Shift: TShiftState);
    var
      CurrentLine,i: Integer;
    begin
      //获取当前行号 注意,第一行为0,第二行为1
      CurrentLine :=memo1.Perform(em_LineFromChar,CurrentLine,0);
      //CurrentLine+1为实际行号,以下判断
      if  (CurrentLine+1)>Memo1.Lines.Count then
        i:=CurrentLine+1
      else
        i:=Memo1.Lines.Count;
      Label1.Caption:=IntToStr(i);
    end;这段代码就解决了你的问题