请经过的大虾出手帮帮忙!!!(50分)

  • 主题发起人 主题发起人 子弹
  • 开始时间 开始时间

子弹

Unregistered / Unconfirmed
GUEST, unregistred user!
我的界面上有很多的Edit,怎样才能让他们对上、下、左、右键有反应?
 
以前听别人介绍过
把 Form 的 KeyPreview 属性设成 true 后,可以处理 Enter 键到下一控件,
至于 上、下、左、右,没有试过,,可能不行,
这样应该可以实现 ,
你把 TEdit 扩展一下,就是在定做一个基于 TEdit 的 Component ,
在扩展的组件中做手脚。。 :-)
我觉得好笨,还是听高手们怎么说。。。
 
没有错,就是在Form 的 KeyDown中改一下:判断虚拟键,再用SetFocus就可以了,不复杂。
要例程留下E-mail吧[:)]
 
在 KeyPress(Sender: TObject; var Key: Char); 事件中判断并处理.

if key=#13 then SpeedButton1Click(Sender);
if key=#6 then xxxx;

 
晶晶: 我的Email: jocjf01@163.net
 
还有人知道吗?焦急的等待中!!!
 
FORM的KeyPreview = True;
在form的onkeydown事件中写
if Key = VK_LEFT then //左
begin
//
end
else if Key = VK_RIGHT then
begin
//
end
vk_up, vk_down
 
动态创建成控件数组很容易处理,可以给它们赋相同的事件过程。
假设是edit[0] 到 edit[n-1]
并且设置每个 edit.tag:=i;

在OnKeyUp中可以这样处理:
i:=Tedit(sender).tag;
if Key = VK_Up then
if i>0 then edit[i-1].setfocus
else //第一个编辑框可能转到其它地方,想到哪儿都行;
if Key = VK_Down then
if i<n-1 then edit[i+1].setfocus
else //最后一个编辑框可能转到其它地方,想到哪儿都行;

VK_left和Vk_right 也同样可以进行处理,但可以不处理,
要处理还要考虑在编辑框中的位置,否则编辑内部无法移动。
 
To jsxjd:
为什么我的edit[i-1],系统提示"Undeclared identfier : edit";
 
在单元中声明:
var edit:array[0..10] of TEdit;

在 Form 的 OnCreate 中:

for i:=0 to 10 do
begin
edit:=TEdit.create(self);
edit.parent:=self;
edit.visible:=true;
edit.left:=10;
edit.top:=10+i*30;
edit.width:=50;
edit.height:=24;
edit.OnKeyUp:=MyKeyUp; ///释放按键时的事件处理
................
end;
 
这样是动态创建,而我的程序都快写完了,改动太大了。
难道真的就没有其它的方法吗?
 
原理一样的,关键在于设置:
edit.OnKeyUp:=MyKeyUp; //////这个改一下。
 
后退
顶部