vfp,prg文件调用第一个窗体(登录)不为当前窗体的问题

bdhseaside 2012-03-11 04:42:57
CLEAR
CLEAR ALL
SET ESCAPE OFF
SET TALK OFF
SET CENTURY on
SET DATE ANSI
SET DELETED ON
IF DATE()>CTOD("2020-01-01") then
MESSAGEBOX('Software Expired...')
RETURN
ENDIF
_screen.Visible= .F.
PUBLIC Nowpath
Nowpath=SYS(5)+SYS(2003)+"\"
set default to (Nowpath)&&设置默认工作目录
&&set default to "&Nowpath"&&设置默认工作目录
DO FORM fmaa
READ events
&&QUIT

以上是我的主文件main.prg
其调用fmaa.scx表单(顶层表单,模式)
编译成exe后,运行exe则fmaa.scx表单标题栏是灰的,也就是不是当前窗体,总是这样,如何解决?哪出的问题?你们如何做?谢谢
...全文
256 12 打赏 收藏 转发到动态 举报
AI 作业
写回复
用AI写文章
12 条回复
切换为时间正序
请发表友善的回复…
发表回复
chenshanzhong 2012-03-20
  • 打赏
  • 举报
回复
以上是我的主文件main.prg
其调用fmaa.scx表单(顶层表单,模式)
编译成exe后,运行exe则fmaa.scx表单标题栏是灰的,也就是不是当前窗体

注意上面的第二行,既然fmaa.scx表单是顶层表单,为什么还要设置成模式表单呢?改成无模式就可以了。
bdhseaside 2012-03-12
  • 打赏
  • 举报
回复
此方法也可以,谢谢.非常感谢.VF9做东西效率高,出活快.这是我喜欢它的根本原因,而且这里面有很多技术高超的热心人.再次感谢大家.
十豆三 2012-03-12
  • 打赏
  • 举报
回复
新建一个文件"config.fpw",里面写上“screen=off”(双引号内)
然后把此文件添加到工程中的other中other files中,然后重新编译。

如果不想重新编译也可以:把此文件放到程序所在目录下。

新建“config.fpw”的方法:先建一个文本文件,然后再把扩展名改为.fpw
bdhseaside 2012-03-11
  • 打赏
  • 举报
回复
还有没有其它的解决办法呢?我想这可能是VF开的者都遇到的一个问题,尽管它不影响使用,但作为一个开发人员,不解决此问题,总觉得像少点什么,大家遇到此问题都是如何解决的呢?还有吗?
lc_apple 2012-03-11
  • 打赏
  • 举报
回复
百度里是这么说的:
SetActiveWindow
函数功能:该函数激活一个窗口。
该窗口必须与调用线程的消息队列相关联。
函数原型:HWND SetActiveWindow(HWND hWnd);
参数hWnd:将被激活的最顶层窗口。
返回值:若函数调用成功,则返回原先活动窗口的句柄。若函数调用失败,则返回值为NULL。若要获得更多错误信息,可以调用GetLastError函数。
备注:SetActiveWindow函数激活一个窗口,但当应用程序处于后台时,将不激活指定窗口。当应用程序激活窗口时处于前台,则窗口将被放到前台。若hWnd参数指定的窗口是被调用线程创建的,调用线程的活动窗口的状态将被设置到hWnd中。否则,调用线程的活动窗口的状态被设为NULL。 从另一方面讲,SetForegroundWindow窗口函数激活一个窗口并将其强制为前台的。当应用程序要显示关键错误或需要用户立即注意的信息时,应只能调用SetForegroundWindow函数。使用AttachThreadInput函数可将一个线程的输入处理连接到其他线程。这使得调用SetActiveWindow函数的线程可以激活与其他线程的消息队列相关的窗口。
bdhseaside 2012-03-11
  • 打赏
  • 举报
回复
楼上方法解决了我的问题,非常感谢,能解释一下其含义,让我们更加灵活地使用就更好了.都市夜猫的方法也没问题,一起谢谢了.在给朋友做一个进销存.本想用其它方式,比如.Net,但比较起来,VF我更熟悉,而且觉得开发速度快.非常感谢你们的帮助.
lc_apple 2012-03-11
  • 打赏
  • 举报
回复
这个问题我刚学会不久,偷偷告诉你答案吧!

在fmaa.scx的Activate事件中写入如下两行代码:

DECLARE Long SetActiveWindow IN WIN32API Long hWnd
SetActiveWindow(thisform.HWnd)

你的烦恼就会无影踪了!
都市夜猫 2012-03-11
  • 打赏
  • 举报
回复
如果是同时需要兼顾开发/调试环境,可以先判断一下嘛
If _vfp.StartMode != 0
_Screen.Move(-10000,-10000,100,0)
Endif
都市夜猫 2012-03-11
  • 打赏
  • 举报
回复
你不是编译成 exe 了吗,要 vfp9 界面干什么?
bdhseaside 2012-03-11
  • 打赏
  • 举报
回复
最简单的方法是将
_Screen.Visible = .t.
改成
_Screen.Move(-10000,-10000,100,0)
用了,但VF9操作界面不行了,只剩命令窗口了,有没有更好的办法呢?或者你们是怎么处理这件事的呢?
needanothercoder 2012-03-11
  • 打赏
  • 举报
回复
不错
流放了
有没有更和平些的措施?和谐社会嘛,呵呵
都市夜猫 2012-03-11
  • 打赏
  • 举报
回复
最简单的方法是将
_Screen.Visible = .t.
改成
_Screen.Move(-10000,-10000,100,0)

2,747

社区成员

发帖
与我相关
我的任务
社区描述
VFP,是Microsoft公司推出的数据库开发软件,用它来开发数据库,既简单又方便。
社区管理员
  • VFP社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

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