回 帖 发 新 帖 刷新版面

主题:如何得到richedit中光标所在的行号

  各位高手,在下有一紧急问题请教
   delphi中想获得richedit中光标所在的位置用什么方法?

   使用下面一个函数怎么报错?说 EM_EXLINEFROMCHAR没有定义?怎么回事?

  y:=sendmessage(richedit1.Handle,EM_EXLINEFROMCHAR ,0,richedit1.SelStart );
(y是整形值,保存所在行)

回复列表 (共3个回复)

沙发

将y:=sendmessage(richedit1.Handle,EM_EXLINEFROMCHAR ,0,richedit1.SelStart );
改为 y:=sendmessage(richedit1.Handle,EM_LINEFROMCHAR ,richedit1.SelStart,0);

第一行是0,第二行是1

还有一种方法:
y:=RichEdit1.Perform(em_LineFromChar,$FFFF,0);

下面是一个例程,需一个RichEdit和一个Panel,Panel会自动显示RichEdit的当前光标位置X:Y。
Procedure TForm1.GetPosition(Sender: TRichEdit);
var
  iX,iY:Integer;
begin
iX := 0;
iY := 0;
iY :=SendMessage(RichEdit.Handle,EM_LINEFROMCHAR,RichEdit.SelStart,0);
iX :=RichEdit.SelStart-SendMessage(RichEdit.Handle,EM_LINEINDEX,iY,0);
Panel1.Caption := IntToStr(iY + 1) + ':' + IntToStr(iX + 1) ;
end;

procedure TForm1.RichEditMouseDown(Sender: TObject; Button: TMouseButton; Shift: TShiftState; X, Y: Integer);
begin
  GetPosition(RichEdit);
end;

procedure TForm1.RichEditKeyUp(Sender: TObject; var Key: Word; Shift: TShiftState);
begin
  GetPosition(RichEdit);
end;

板凳

我用了ychzh2000说的,也在EM_EXLINEFROMCHAR处报未定义,是不是要加个uses单元

3 楼

什么都不用就可以了~~~~!

我来回复

您尚未登录,请登录后再回复。点此登录或注册