标题:如何用命令或模拟点击这个最大化按钮?
只看楼主
zhken
Rank: 7Rank: 7Rank: 7
等 级:贵宾
威 望:11
帖 子:273
专家分:594
注 册:2012-9-21
结帖率:96.67%
已结贴  问题点数:10 回复次数:10 
如何用命令或模拟点击这个最大化按钮?


用 thisform.windowstate=2
或用API 的
nHdl=THISFORM.HWnd  &&取得窗口ID号
ShowWindowAsync(nHdl,9)
也不行

thisform.setall('Anchor',240)   如果表单事先 WINDOWSTATE=2的话,这条话句会失效

keyboard '{ctrl+f10}' 窗口最大化 也不行,不能满窗运行

运行后上面总是不能最大化

唯有点击图片上这个按钮才能得到最佳郊果
搜索更多相关主题的帖子: 命令 点击 最大化 按钮 thisform 
2019-07-12 20:14
sdta
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
来 自:江苏省连云港市
等 级:版主
威 望:323
帖 子:9621
专家分:26174
注 册:2012-2-5
得分:0 
form1.init
keyboard '{CTRL+F10}'
关键是你的代码放在了什么事件中

[此贴子已经被作者于2019-7-12 20:35编辑过]


坚守VFP最后的阵地
2019-07-12 20:31
吹水佬
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
等 级:版主
威 望:432
帖 子:10064
专家分:41463
注 册:2014-5-20
得分:0 
thisform.WindowState = 2 不行吗?

[此贴子已经被作者于2019-7-12 21:00编辑过]

2019-07-12 20:59
zhken
Rank: 7Rank: 7Rank: 7
等 级:贵宾
威 望:11
帖 子:273
专家分:594
注 册:2012-9-21
得分:0 
不行。不管怎么弄,都不理想,要不挡任务栏,要不不能到达最顶,如果表单先设windowstate=2的话,自适应控件大小就会失效。top=0也失效。唯有点击一下右上角最大化接钮就有用。我的config里面的screen=off
2019-07-12 21:44
zhken
Rank: 7Rank: 7Rank: 7
等 级:贵宾
威 望:11
帖 子:273
专家分:594
注 册:2012-9-21
得分:0 
回复 2楼 sdta
在按钮放keyboard也不行
2019-07-12 21:46
zhken
Rank: 7Rank: 7Rank: 7
等 级:贵宾
威 望:11
帖 子:273
专家分:594
注 册:2012-9-21
得分:0 
回复 3楼 吹水佬
不行。THISFORM.WINDOWSTATE=2 只能显示设计时的尺寸,比如10247*768 ,在表单的INI 事件中 THISFORM.WINDOWSTATE=2 只能显示为10247*768 ,如要我换了一台机器,分辩率大于这个的话,只能点击右上角的最大化,显示才理想。  如果表单事先设好 WINDOWSTATE=2的话。自适应命令行就失效。
给人看很不专业 很不专业啊。弄了2天了。没法解决。  CONFIG文件 设的 SCREEN=OFF


This.Caption='数据库管理系统'
thisform.WindowState= 2
FOR I=1 TO THIS.CONTROLCOUNT
WITH THIS.CONTROLS(I)
IF TYPE(".ANCHOR")#"U"
.ANCHOR=240
ENDIF
IF TYPE(".FontSize")#"U"
.FONTSIZE=.FONTSIZE*(SYSMETRIC(1)/THIS.WIDTH)
ENDIF
ENDWITH
ENDFOR
 


*KEYBOARD '{CTRL+f10}'


*Declare Long FindWindow In USER32.DLL String, String
*Declare Long ShowWindowAsync In USER32.DLL Long, Long
*nHdl=thisform.hwnd
*ShowWindowAsync(nHdl,9)


*Declare Long FindWindow In USER32.DLL String, String
*Declare Long ShowWindowAsync In USER32.DLL Long, Long

*nHdl=THISFORM.HWnd
*ShowWindowAsync(nHdl,9)
*ShowWindowAsync(_vfp.hWnd)
 *   SetForegroundWindow(nHdl ) &&激活

这些都试过了。都不行。
2019-07-12 22:03
sdta
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
来 自:江苏省连云港市
等 级:版主
威 望:323
帖 子:9621
专家分:26174
注 册:2012-2-5
得分:0 
sysmetric( ) 函数 研究这个函数吧,应该能满足楼主的需求
为什么开始不直接说出原因,大家的时间都是有限的。

坚守VFP最后的阵地
2019-07-12 22:06
sdta
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
来 自:江苏省连云港市
等 级:版主
威 望:323
帖 子:9621
专家分:26174
注 册:2012-2-5
得分:0 
表单最大设计区设置为 无

坚守VFP最后的阵地
2019-07-12 22:13
吹水佬
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
等 级:版主
威 望:432
帖 子:10064
专家分:41463
注 册:2014-5-20
得分:10 
试试这样可否:
****** test.prg ******
DECLARE LONG SystemParametersInfo IN User32 LONG, LONG, STRING@, LONG
of = CREATEOBJECT('Form1')
of.show(1)
RETURN

DEFINE CLASS form1 as form
    ADD OBJECT cmd1 as commandbutton WITH top=10,left=10,caption="最大化"
    PROCEDURE cmd1.Click
        st = REPLICATE(0h00, 16)
        SystemParametersInfo(0x0030, 0, @st, 0)
        thisform.Left = CTOBIN(SUBSTR(st,1,4), "4RS")
        thisform.Top = CTOBIN(SUBSTR(st,5,4), "4RS")
        thisform.Width = CTOBIN(SUBSTR(st,9,4), "4RS")
        thisform.Height = CTOBIN(SUBSTR(st,13,4), "4RS")
    ENDPROC
ENDDEFINE
2019-07-12 22:15
gs2536785678
Rank: 10Rank: 10Rank: 10
等 级:贵宾
威 望:45
帖 子:565
专家分:1668
注 册:2017-7-16
得分:0 
看得出,朋友是在使用顶层!很多年前我也经常使用顶层。
顶层的烦恼就是如何来自动适应不同窗口主屏的大小
*
如今我一直使用VFP主窗口+工具栏方式,也就没有了表单
适应不同屏幕的烦恼。
#
可以腾出更多的时间花费在窗口设计,代码书写上。
2019-07-15 15:03



参与讨论请移步原网站贴子:https://bbs.bccn.net/thread-495817-1-1.html




关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.020634 second(s), 8 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved