if Edit1.Focused then //do something else //do something
if Edit1.Focused then showmessage('Edit1');
问题是这样的,我的文本框是随机的,不一定是edit1。 是不是可以判断:control is TEdit 之类的?? 我要判断在任何一个窗体内,用户的鼠标是否定位在任何一个文本框内,如果不是: 我要弹出另外一个窗口,如果是:我要在文本框里面输入值
if (Self.ActiveControl is TEdit) then begin //.... end;
if Edit1.Focused then showmessage('焦点');
“我想这样应该可以,我遍历当前窗口的所有控件,如果是文本框,则判断他是否聚焦, 如果聚焦则执行相应的动作,否则执行另外的动作。”var i:integer; for i:=0 to self.ComponentCount-1 do //遍历当前窗口的所有控件 begin if Self.Components[i].ClassType=TEdit then //如果是文本框 begin if (TEdit(Self.Components[i]).Focused then //则判断他是否聚焦 begin 聚焦则执行相应的动作 end else begin 否则执行另外的动作 end; end; end;
var i:integer; for i:=0 to self.ComponentCount-1 do //遍历当前窗口的所有控件 begin if Self.Components[i].ClassType=TEdit then //如果是文本框 begin if (TEdit(Self.Components[i]).Focused then //则判断他是否聚焦 begin 聚焦则执行相应的动作 end else begin 否则执行另外的动作 end; end; end;
拜托,楼上的楼上有没有搞错,直接ctrl+c ctrl+v我的代码啊? 楼上的,我知道效率不高,我只是根据你的需求写出代码而已,呵呵 不过话说回来,效率不会低很多的 如果你的edit命名是有规律的,比如edit1 edit2 ...edit10,下面的代码可以检索的少一些: for i := 1 to 10 do begin if TEdit(FindComponent('Edit' + IntToStr(i))).Focused then begin 聚焦则执行相应的动作 end else begin 否则执行另外的动作 end; end;
//do something
else
//do something
是不是可以判断:control is TEdit 之类的??
我要判断在任何一个窗体内,用户的鼠标是否定位在任何一个文本框内,如果不是:
我要弹出另外一个窗口,如果是:我要在文本框里面输入值
begin
//....
end;
如果聚焦则执行相应的动作,否则执行另外的动作。”var i:integer; for i:=0 to self.ComponentCount-1 do //遍历当前窗口的所有控件
begin
if Self.Components[i].ClassType=TEdit then //如果是文本框
begin
if (TEdit(Self.Components[i]).Focused then //则判断他是否聚焦
begin
聚焦则执行相应的动作
end
else
begin
否则执行另外的动作
end;
end;
end;
begin
if Self.Components[i].ClassType=TEdit then //如果是文本框
begin
if (TEdit(Self.Components[i]).Focused then //则判断他是否聚焦
begin
聚焦则执行相应的动作
end
else
begin
否则执行另外的动作
end;
end;
end;
因为我的系统有很多窗体,那样我不是要在每个窗体都加上楼上里面几位那段代码。
self.ComponentCout 遍历的是当前窗口的控件,但好象并不是当前聚焦的控件哦?
楼上的,我知道效率不高,我只是根据你的需求写出代码而已,呵呵
不过话说回来,效率不会低很多的
如果你的edit命名是有规律的,比如edit1 edit2 ...edit10,下面的代码可以检索的少一些:
for i := 1 to 10 do
begin
if TEdit(FindComponent('Edit' + IntToStr(i))).Focused then
begin
聚焦则执行相应的动作
end
else
begin
否则执行另外的动作
end;
end;
然后
with 引用的窗体 do
begin
再调用上面的循环
end;