如何在edit中在光标的停留位置插入字符(倾我所有,请求帮助)(15分)

  • 主题发起人 主题发起人 xululee
  • 开始时间 开始时间
X

xululee

Unregistered / Unconfirmed
GUEST, unregistred user!
请问:
如何在edit中在光标的停留位置插入字符,例如,edit中有字符abcd,此时光标停留在c前,我插入一个字符f后,则edit中的内容变为abfcd,如果光标停留在d前,我插入一个字符f后,则edit中的内容变为abcfd.
 
procedure InsertStr(AEdit: TEdit; S: String);
var
S1, S2: String;
Id: Integer;
begin
with AEdit do
begin
Id := SelStart;
S1 := Copy(Text, 1, Id);
Id := SelStart + SelLength;
S2 := Copy(Text, Id + 1, Length(Text) - Id);
Text := S1 + S + S2;
SetFocus;
SelStart := SelStart + Length(S);
end;
end;
 
本来就是那样呀,你想干什么?
 
不要任何过程就可以可以的……
 
我的意思不是指直接在edit中输入数据,而是edit中已经有一些数据,这些数据不固定,而我需要每次往这些不固定的数据中插入固定的某些字符,插入位置不定,比如利用右健popmenu来输入一些特定字符,如果按普通的办法,就如:edit.text:=edit.text+'某些字符',这样字符只能加在原有字符的最后边,而我现在想让字符加在任意位置,即光标停留的位置.
 
var s: string
begin
s := Edit1.Text;
Insert(yourstring, s, yourposition);
Edit1.Text :=s ;
end;
 
...........//不知道该说什么
edit1.seltext:='f';
 
SuperMMX:
我就是不知道insert函数中的yourposition如何确定,也就是光标所在位置的值如何确定?
 
你的意思是在当前 caret 的位置插入?
Edit1.SelStart

 
另一种特别的方法
Edit1.Perform(WM_IME_CHAR, Word('c', 0);
则把c插入到光标所在位置
 
少了一个")"

Edit1.Perform(WM_IME_CHAR, Word('c'), 0);
 
多人接受答案了。
 
后退
顶部