主题:如何得到richedit中光标所在的行号
newhand
[专家分:0] 发布于 2002-03-30 13:37:00
各位高手,在下有一紧急问题请教
delphi中想获得richedit中光标所在的位置用什么方法?
使用下面一个函数怎么报错?说 EM_EXLINEFROMCHAR没有定义?怎么回事?
y:=sendmessage(richedit1.Handle,EM_EXLINEFROMCHAR ,0,richedit1.SelStart );
(y是整形值,保存所在行)
回复列表 (共3个回复)
沙发
ychzh2000 [专家分:1750] 发布于 2002-08-10 16:16:00
将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;
板凳
chougoushi [专家分:0] 发布于 2002-11-08 14:57:00
我用了ychzh2000说的,也在EM_EXLINEFROMCHAR处报未定义,是不是要加个uses单元
3 楼
noelse520 [专家分:110] 发布于 2005-03-30 13:05:00
什么都不用就可以了~~~~!
我来回复