如题啦,有若干个edit然后想用上下键来代替tab键完成焦点的切换,能上能下的,大家有什么好主意?
解决方案 »
- 通过TSocketConnection 连接老是报个错....
- delphi窗体的激活事件代码问题
- 各位高手,请给我一个用ClientDataSet动态创建lookup字段的示例代码。
- 莫名其妙,快崩溃了
- 各位大哥,如何安全地动态的建立和删除象TImage这样的可视化的控件!
- 多个数据表格中同一字段的累加求和问题,请高手帮忙!!!
- 关于统计中SQL的写法!!!!!!
- 如何设计一种有格子线的报表出来?
- 急!急!急!远程文件传送问题:两台计算机通过modem拨号连接成功后,如何得到本地计算机和远程计算机的动态ip地址? (高分)
- 如何在Delphi的ServerSocket控件中使用自己定义的阻塞线程?
- 怎么从两个不同的数据库中查询数据
- 图片水印
with Self do
begin for i := 0 to ControlCount - 1 do
begin
if TWinControl(Controls[i]).TabOrder = a+ 1 then
begin
TWinControl(Controls[i]).SetFocus;
end;
end;
end;
上面是查找下一个控件并设置坐标 查找上一个控件同理你可以判断是否按下
上或下
然后通过上面的代码设置坐标
选中所有你需要的屏蔽的控件 然后在keypress中判断是否按下的shitab
然后这只key:=#0就屏蔽掉了
见他们的tabstop属性设置成false
然后将它们的keydown时间都指向edt1KeyDownprocedure TForm1.edt1KeyDown(Sender: TObject; var Key: Word;
Shift: TShiftState);
var i:Integer;
begin
if Key=vk_up then
begin
with Self do
begin
for i := 0 to ControlCount - 1 do
begin
if TWinControl(Controls[i]).TabOrder = ActiveControl.TabOrder- 1 then
begin
TWinControl(Controls[i]).SetFocus;
end;
end;
end;
end else if key= VK_DOWN then
begin
with Self do
begin
for i := 0 to ControlCount - 1 do
begin
if TWinControl(Controls[i]).TabOrder = ActiveControl.TabOrder+ 1 then
begin
TWinControl(Controls[i]).SetFocus;
end;
end;
end;
end;
end;
keyup
keydown
这里写比较好,但是也比较麻烦,每个都要确认
可以写个数组定义好顺序,然后写个公共方法确定上一个和下一个,
最后只要在key事件里调用这个方法即可