Delphi中PageControl切换时form滚动条的问题

七羽Y 2018-01-11 03:10:05
具体情况:我使用的是Delphi7,在这个里面,使用WIN32下面的PageControl控件,
当使用鼠标点击PageControl控件的其他页切换时,Form的滚动条自动居中了,我不想让From滚动条居中,怎么办?有什么地方可以设置吗??求解。
我试过
Form1.VertScrollBar.Position:=0;//垂直滚动条
Form1.HorzScrollBar.Position:=0;//水平滚动条
这两种方法来把滚动条设置回去,但是闪屏,还有其他什么方法吗?求解
...全文
2472 25 打赏 收藏 转发到动态 举报
写回复
用AI写文章
25 条回复
切换为时间正序
请发表友善的回复…
发表回复
七羽Y 2018-04-16
  • 打赏
  • 举报
回复
本人经过尝试,觉得可能是控件本身的问题,点击PageControl控件的其他页切换时,或者隔一秒再次点击当前页时,还偶尔会出现居中的情况,上面的一些方法确实能辅助减少居中的次数,包括修改闪屏现象,都非常好,不过却也不能完全解决,也不是什么太大的问题,在此也就不作追究了,感谢以上各位大神,在此结帖!
DelphixpeFan 2018-02-10
  • 打赏
  • 举报
回复
呵呵,你把Scrollbox设置成alclient,所有原来Form上的东西都放进去,跟你原来就是一样的,只不过滚动条是Scrollbox的,不是Form的而已
七羽Y 2018-02-09
  • 打赏
  • 举报
回复
引用 22 楼 yqbaby 的回复:
在Form上放一个Scrollbox控件,可以把它的align属性设置成alclient,altop等等,只要不超过Form的宽度即可,把pagecontrol放进这个控件里,Scrollbox控件的doublebuffered属性设置为true,剩下就运行即可,不需要另外改动,简单说,超过Form宽度的放到Scrollbox里,其他的放到Scrollbox外面,大家互不干涉。
奥奥,明白你的意思了,也算是个方法吧,我试一下吧,不过感觉界面就没有原来好看了
七羽Y 2018-02-06
  • 打赏
  • 举报
回复
引用 20 楼 yqbaby 的回复:
应该是两个问题,第一个问题是,切换sheet会自动聚焦到中间的控件上;第二个问题是,设置回去会出现闪屏;不管是聚焦到中间的控件,还是前面或者后面的控件,都有可能会出现闪屏,因为前一个sheet不能确定form的滚动条会在前面或者是在后面;建议:1,用scollbox来代替Form滚动;2.闪屏的解决:将doublebuffered属性设置为true即可
用scollbox来代替Form滚动,具体怎么做,能说一下吗
DelphixpeFan 2018-02-06
  • 打赏
  • 举报
回复
在Form上放一个Scrollbox控件,可以把它的align属性设置成alclient,altop等等,只要不超过Form的宽度即可,把pagecontrol放进这个控件里,Scrollbox控件的doublebuffered属性设置为true,剩下就运行即可,不需要另外改动,简单说,超过Form宽度的放到Scrollbox里,其他的放到Scrollbox外面,大家互不干涉。
DelphixpeFan 2018-02-05
  • 打赏
  • 举报
回复
应该是两个问题,第一个问题是,切换sheet会自动聚焦到中间的控件上;第二个问题是,设置回去会出现闪屏;不管是聚焦到中间的控件,还是前面或者后面的控件,都有可能会出现闪屏,因为前一个sheet不能确定form的滚动条会在前面或者是在后面;建议:1,用scollbox来代替Form滚动;2.闪屏的解决:将doublebuffered属性设置为true即可
秋天之落叶 2018-02-02
  • 打赏
  • 举报
回复
引用 17 楼 qq_16379365 的回复:
[quote=引用 14 楼 leavesguth 的回复:] 我用这个控件没有这个问题,屏幕超宽,控件超出显示范围造成的?或者没有使用Tpanel使得控件不能自己调整造成的。 瞎猜,没测试过
对,是PageControl控件超出了form的显示范围,然后form自动加的滚动条,然后在切换sheet的时候焦点就自动到了PageControl上面,但是有没有什么方法能够不让焦点自动调整呢?[/quote] 提供一个笨办法,你在sheet的最左面,添加一个可以获得光标焦点的无关紧要的控件,并使其缩得很小,然后打开sheet时,焦点默认落在这个控件上,应该可以的,哈哈
  • 打赏
  • 举报
回复
要么你把Form放大一点,要么把PageControl缩小一点,要么启动时根据屏幕分辨率调整一下,你非要PageControl比Form大,还嫌滚动条自动居中,怎么感觉你是个事妈呢。 ms的UI设计原则:https://msdn.microsoft.com/en-us/library/windows/desktop/ff728831(v=vs.85).aspx
七羽Y 2018-02-01
  • 打赏
  • 举报
回复
引用 14 楼 leavesguth 的回复:
我用这个控件没有这个问题,屏幕超宽,控件超出显示范围造成的?或者没有使用Tpanel使得控件不能自己调整造成的。 瞎猜,没测试过
对,是PageControl控件超出了form的显示范围,然后form自动加的滚动条,然后在切换sheet的时候焦点就自动到了PageControl上面,但是有没有什么方法能够不让焦点自动调整呢?
  • 打赏
  • 举报
回复
form要滚动条真的不好看。。。
秋天之落叶 2018-01-31
  • 打赏
  • 举报
回复
还有就是打开sheet后,上面的控件焦点应该在合适的位置,比如最左面的一个小控件上,如果落在表格上且表格超宽应该会自动调整的。
秋天之落叶 2018-01-31
  • 打赏
  • 举报
回复
我用这个控件没有这个问题,屏幕超宽,控件超出显示范围造成的?或者没有使用Tpanel使得控件不能自己调整造成的。 瞎猜,没测试过
七羽Y 2018-01-31
  • 打赏
  • 举报
回复
有大神吗???
七羽Y 2018-01-30
  • 打赏
  • 举报
回复
引用 10 楼 shadowpj 的回复:
程序初始运行时fform的SHOW或ACTION事件里你肯定对PageControl第一个激活的PAGE里的控件做了SetFocus操作。然后在点击其它PAGE就会有这个现象。怎么去屏蔽没找到办法。。你看能不能取消哪个对第一个激活PAGE里的控件SetFocus设置。
我发现原因了,应该是以下过程: //PageControl4改变时的事件 procedure TForm1.PageControl4Change(Sender: TObject); 在进入这个过程之前就自动把焦点给转移到PageControl控件上面了,怎么能设置屏蔽设置焦点呢??真是个纠结的问题
七羽Y 2018-01-30
  • 打赏
  • 举报
回复
引用 9 楼 doloopcn 的回复:
Form的AutoScroll设置为False
这样的话不就没有滚动条了??
shadowpj 2018-01-18
  • 打赏
  • 举报
回复
程序初始运行时fform的SHOW或ACTION事件里你肯定对PageControl第一个激活的PAGE里的控件做了SetFocus操作。然后在点击其它PAGE就会有这个现象。怎么去屏蔽没找到办法。。你看能不能取消哪个对第一个激活PAGE里的控件SetFocus设置。
doloopcn 2018-01-17
  • 打赏
  • 举报
回复
Form的AutoScroll设置为False
七羽Y 2018-01-17
  • 打赏
  • 举报
回复
给自己顶一下
七羽Y 2018-01-16
  • 打赏
  • 举报
回复
给自己顶一下
xiaocongzhi 2018-01-15
  • 打赏
  • 举报
回复
你pagecontrol的tabsheet里有别的控件吧,在tabsheet里的控件上想想办法
加载更多回复(5)

16,748

社区成员

发帖
与我相关
我的任务
社区描述
Delphi 语言基础/算法/系统设计
社区管理员
  • 语言基础/算法/系统设计社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

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