焦点悬赏200-解决问题另给分,UP者也赏!

setfocus 2003-06-23 01:41:51
这是一个简单的窗体结构:有窗体若干,其中frmMain窗体一个,在frmMain中有panel控件align:=alclient;通过点选菜单打开相应的form,窗体创建的语句如下:
if not assigned(form1) then
begin
form1:=Tform1.Create(nil);
form1.Parent:=frmMain.panel1;
form1.Show;

end;
在form1中有panel一个,edit多个!
×××××××××××描述结束×××××××××××××××××××××
我的问题是:创建后打开的form1上的edit控件不能获得焦点了,鼠标点击都获得不了,那么怎么让它获得?
×××××××××××问题结束×××××××××××××××××××××
我已经知道的解决方式:1、可以通过把窗体的borderstyle:=blnone来解决
2、建立的语句更改为: form1:=Tform1.Create(nil);
form1.Dock(panel1,panel1.ClientRect);
form1.Show;
但这两种方法都会去掉窗体的标题栏,如果不去掉能不能解决?因为去掉后给我带来很多麻烦!
3、问题的关键是窗体的焦点怎么移动到form1上!
××××××××××××××××××××××××××××××××××××
请高手在不失去标题的前提下解决这个问题!感谢!
...全文
25 47 打赏 收藏 转发到动态 举报
写回复
用AI写文章
47 条回复
切换为时间正序
请发表友善的回复…
发表回复
hkbarton 2003-06-23
  • 打赏
  • 举报
回复
呵呵,我又来了,看来问题已经有了进展,不过“如果能把光标设置在鼠标点击的位置就更理想了也就大功告成了!因为结贴时间,我暂时还没想起怎么搞!”这个问题,很困难吧,不过如果能有函数取得光标离edit左上角的坐标就好办了。
fengyvn 2003-06-23
  • 打赏
  • 举报
回复
我顶.
daniel2008 2003-06-23
  • 打赏
  • 举报
回复
up
setfocus 2003-06-23
  • 打赏
  • 举报
回复
先感谢大家的支持和帮助!
setfocus 2003-06-23
  • 打赏
  • 举报
回复
希望大家有时间的话还是考虑一下这个问题如何解决!
**现在的问题是光标的定位***
暂时我把它解决成以下方式,大家可以借鉴:

在创建的时候:
if not assigned(form1) then
begin
form1:=Tform1.Create(nil);
form1.Parent:=frmMain.panel1;
form1.Show;
form1.edit1.setfocus;
end;
在edit1.onclick事件里写:
with TEdit(Sender) do
begin
setfocus;//这句不是重复,而是为了给其他edit的该事件公用;
SelStart:=Length(Text);//把光标直接设置在最后,如果能把光标设置在鼠标点击的位置就更理想了也就大功告成了!因为结贴时间,我暂时还没想起怎么搞!希望大家更加支持!
end;
goldencity 2003-06-23
  • 打赏
  • 举报
回复
up
李_军 2003-06-23
  • 打赏
  • 举报
回复
用MDI好了
chen6073 2003-06-23
  • 打赏
  • 举报
回复
我也不知道!不过我也想知道!
setfocus 2003-06-23
  • 打赏
  • 举报
回复
感谢firetoucher(风焱) :如果是一个edit的话足够用了!也就是,如果edit1虽然获得了焦点,但是别的edit还是不行!不过,我想可以通过你的方法和onclick 事件里写 TEdit(Sender).SetFocus 两个结合一起解决!
*********************************************************************************
如果有更好的解决方法请继续发贴!我六点下班!下班前结贴!
xah_JD 2003-06-23
  • 打赏
  • 举报
回复

form1:=Tform1.Create(nil);
form1.Parent:=frmMain.panel1;
改成Form1:=Tform1.create(application)
Form1.parent:=FrmMain
firetoucher 2003-06-23
  • 打赏
  • 举报
回复
1 form1.edit1.SetFocus;可以实现你的功能
2 在panel得onclick中postmessage(WM_LBUTTONDBLCLK等)到form1可以使form1响应鼠标的操作

(代理服务器有问题,不能发长的留言,请原谅)
--------------------------------------
看!
那支正飞向太阳的蛾子.....
就是我!
--------------------------------------
mrdige 2003-06-23
  • 打赏
  • 举报
回复
重新做一form,把原来form上的控件拷贝过去就行,试试吧!只是个建议!
jpyc 2003-06-23
  • 打赏
  • 举报
回复
up
Means_pan 2003-06-23
  • 打赏
  • 举报
回复
帮你up
youhongwei78 2003-06-23
  • 打赏
  • 举报
回复
关注学习!
noil0125 2003-06-23
  • 打赏
  • 举报
回复
up
setfocus 2003-06-23
  • 打赏
  • 举报
回复
如果这个问题可以解决,不知道斑竹认不认成经典贴!~继续关注!
xmcheng 2003-06-23
  • 打赏
  • 举报
回复
up
setfocus 2003-06-23
  • 打赏
  • 举报
回复
form1.Parent:=frmMain.panel1;是把创建的子窗体在panel控件里,我的基本结构其实跟MDI一样只是没有用MDI窗体,而是普通窗体
setfocus 2003-06-23
  • 打赏
  • 举报
回复
从大富翁那得到一个方法,但也是一个变通的方法:
来自:foxyxyan, 时间:2003-6-23 14:59:00, ID:1974349
我试了下,可以在Edit 的onclick 事件里写 TEdit(Sender).SetFocus
可以得到焦点的。
********帖子如下:http://www.delphibbs.com/delphibbs/DispQ.asp?LID=1974104*****
但是还是不能在创建的时候获得焦点!
加载更多回复(27)

5,388

社区成员

发帖
与我相关
我的任务
社区描述
Delphi 开发及应用
社区管理员
  • VCL组件开发及应用社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧