memo.text:='abcdefghijklm';
以下是测试结果:
1。鼠标单击f和g中间,selstart值为6,length(self.MemoReceive.SelText)值为0;
2。鼠标从d选到f,光标落到f和g中间,selstart值为3,length(self.MemoReceive.SelText)值为3;
3。鼠标从f选到d,光标落到c和d中间,selstart值为3,length(self.MemoReceive.SelText)值为3;
好像selstart只显示光标前的字符长度,但当光标前有被选取字符时,并没有算在内。
我想得到光标前字符的长度(包括里面的被选取的字符),请教如何判断第2和3两种情况?
以下是测试结果:
1。鼠标单击f和g中间,selstart值为6,length(self.MemoReceive.SelText)值为0;
2。鼠标从d选到f,光标落到f和g中间,selstart值为3,length(self.MemoReceive.SelText)值为3;
3。鼠标从f选到d,光标落到c和d中间,selstart值为3,length(self.MemoReceive.SelText)值为3;
好像selstart只显示光标前的字符长度,但当光标前有被选取字符时,并没有算在内。
我想得到光标前字符的长度(包括里面的被选取的字符),请教如何判断第2和3两种情况?
解决方案 »
- 怎么样向DLL中的MDI子窗体 传递ADO连接?
- 会些ADO,有几个月经验,d7+sql,在上海试用期能提二千或二千五吗?
- 深圳的朋友,你们的MSN能上么?
- ltBatchOptimistic 模式下, 更新時我怎么知道TAdoDataSet的每一條記錄的狀態, 是新增的還是修改的? UP有分!
- 论“抵制日货”应该缓行。
- table database datasource 怎么设置才正确
- 给出相关参数怎么画圆锥,圆台?100分求救!!!
- 各位兄弟 又来问问题了!
- 如何在dbgrid或者dbgrideh中显示两次以上的查询内容???
- 巨难!!!!!!!!!!!!!!!!(千山老龟真诚求教)
- 请问如何在程序中用代码打开ADOconnection的数据连接属性?
- 请教高手,DBGrid1中取得的字符为何不同?
procedure TForm1.Button1Click(Sender: TObject);
var
pt: TPoint;
begin
pt:= memo1.CaretPos;
showmessage(format('光标位置:第%d行第%d个字符',[pt.y,pt.x]));
end;
var SelEnd:integer;
begin
Memo1.SetFocus;
if i=j then j:=j-Memo1.SelLength;
SelEnd:=Memo1.SelStart+Memo1.SelLength-(Memo1.CaretPos.X)+j;
Label1.Caption:=IntToStr(Memo1.SelStart);
Label2.Caption:=IntToStr(SelEnd);
end;procedure TForm1.Memo1MouseDown(Sender: TObject; Button: TMouseButton;
Shift: TShiftState; X, Y: Integer);
begin
i:=Memo1.CaretPos.X;
end;procedure TForm1.Memo1MouseUp(Sender: TObject; Button: TMouseButton;
Shift: TShiftState; X, Y: Integer);
begin
j:=Memo1.CaretPos.X;
end;
---------------------------
Memo.SelStart+Memo.SelLength
判断光标到开始的长度:
Memo.SelStart+Memo.SelLength 只能解决从前往后选的情况,因为光标会落在SelLength的右边,此时光标到开始的长度包括SelStart和SelLength,但如果是从后往前选,光标在selstart和SelLength的中间,此时光标到开始的长度只包括SelStart,主要是后一种情况如何判断。zhourongbiao(Edward) 说的方法也存在这样的问题。请大家多帮帮忙,还是没有解决