如何控制输入法中“选择文字”的提示框的位置。

努力偷懒 2009-05-24 12:47:37
如题所说的,我的意思就是,在输入法状态下点击a时,所提示选择“啊、阿、呵、吖.....”的这个提示框,是如何控制其出现的位置的?
就像edit、memo控件等,它会自动出现在光标的右边。
我现在出现的问题是,我整个窗体都不使用edit这些控件,就比如只有TForm控件,我直接在form里面控制其可以输入。输入的文字直接用form打印出来。现在的问题是,激活了输入法,其输入法的位置和我所显示的光标位置相差好远,我想随便控制这个输入法提示框所在的位置。看了好多API,都没找到我想实现的东西。下面是我如何直接在form中控制光标和控制form作类似编辑器的代码:
var
Form1: TForm1;
str: string;
x1,y1: Integer;

implementation

{$R *.dfm}

procedure TForm1.FormMouseDown(Sender: TObject; Button: TMouseButton;
Shift: TShiftState; X, Y: Integer);
begin
str := '';
DestroyCaret;
CreateCaret(Handle, 0, 0, Canvas.TextHeight('A'));
SetCaretPos(X,Y);
ShowCaret(Handle);
x1 := X;
y1 := Y;
end;
procedure TForm1.FormKeyPress(Sender: TObject; var Key: Char);
var
x2: Integer;
begin
HideCaret(Handle);
Repaint;
if Key = #8 then
begin
if Length(str) > 0 then
SetLength(str, Length(str) - 1);
end else str := str + Key;
Text := str;
Canvas.TextOut(x1, y1, str);
x2 := x1 + Canvas.TextWidth(str);
SetCaretPos(x2, y1);
ShowCaret(Handle);
end;
...全文
433 6 打赏 收藏 举报
写回复
6 条回复
切换为时间正序
当前发帖距今超过3年,不再开放新的回复
发表回复
努力偷懒 2010-09-17
这个问题我好像自己解决了,我找下代码再粘贴上来!
  • 打赏
  • 举报
回复
kobaer 2009-11-03
晕 没看全问题
  • 打赏
  • 举报
回复
kobaer 2009-11-03
你输入的时候肯定有一个输入框

然后下边有一个选择框

应该是先确定输入框的位置
然后得到输入框的top 和高度

在确定选择框的位置吧
  • 打赏
  • 举报
回复
wuhenghuan 2009-11-03
路过,进来灌水
  • 打赏
  • 举报
回复
雄牛 2009-08-06

~~~路过~~~

~~~友情UP~~~
  • 打赏
  • 举报
回复
hiboys 2009-06-09
用工具确定那个输入法窗口的注册类名或窗体名。
再用findwindow找其句柄。
然后,。。。。
  • 打赏
  • 举报
回复
相关推荐
发帖
语言基础/算法/系统设计
加入

1.6w+

社区成员

Delphi 语言基础/算法/系统设计
申请成为版主
帖子事件
创建了帖子
2009-05-24 12:47
社区公告
暂无公告