极简单的字符输入问题,稍有基础即可得分(100分)

  • 主题发起人 主题发起人 李辰
  • 开始时间 开始时间

李辰

Unregistered / Unconfirmed
GUEST, unregistred user!
我正做一个软键盘,键按下后在一个EDIT里显示,
怎么实现?
如果直接赋值会覆盖前面的,有没有什么函数或方法?
 
现将Edit里面的string取出来,将你的字符附加到末尾,再将字符串返回Edit里面。
 
edit1.text:=edit1.text+'yourcode';不会覆盖
 
procedure InsertStr(AEdit: TEdit;
S: String);
var
S1, S2: String;
Id: Integer;
begin
with AEditdo
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;
 
同意wjiachun
 
糟糕,晚了一步...:(
 
edit1.text:=edit1.text+'yourcode';
可以,但是光标不动
 
这个光标问题有趣
 
加上
Edit1.SetFocus;
Edit1.SelStart := Edit1.SelStart + Length(yourcode);
如何?我没有Delphi测试……
 
wjiachun,Croco都试过了光标还是停在第一个字母后面。
 
Edit1.SelStart := Length (Edit1.Text) ^-^
 
改一句:
SelStart := Id + Length(S);
end;
^^
end;
 
Croco大哥:
还是不幸。
OpuBF兄:
倒是好一点,只是不能插入。
 
var ckey:char;
ckey := yourcode;
SendMessage(edit1.Handle,WM_CHAR,Ord(cKey),0);
一切搞定
 
看来要学会用handle
:)
 
killgates大哥:
你真行,分全给你!!!
 
后退
顶部