如何使一个窗体不能移动?

fxywkj 2004-07-20 10:48:33
用其他的程序打开delphi的exe程序,如何才能使delphi的exe文件中的窗体固定不动
...全文
409 26 打赏 收藏 转发到动态 举报
写回复
用AI写文章
26 条回复
切换为时间正序
请发表友善的回复…
发表回复
fxywkj 2004-07-21
  • 打赏
  • 举报
回复
我知道是哪里的问题了,主要问题就在于------inherited;
如果没有继承,则会锁定一些按钮;如果采用了继承,则可以正常使用,可是如果得不到焦点也是不行的,比如我要让一个窗体一直在另一个程序的上面,直到我的窗体退出之后才让那个程序得到焦点
fxywkj 2004-07-21
  • 打赏
  • 举报
回复
我没有发现问题在哪,昨天我用的时候确实是锁定了我的关闭按钮和窗体上的一个按钮,可是我刚才用友没有了!!!
jinjazz 2004-07-21
  • 打赏
  • 举报
回复
procedure tform1.wmnchittest(var msg:twmnchittest);
begin
inherited;
if msg.Result=htcaption then
msg.Result :=htclient;
end;

这段代码会把你的标题栏按钮屏蔽掉???不会把,他只是把客户区的消息拦截下来发送一个标题栏消息来欺骗windows而已,和你本身的标题栏功能不冲突阿
beyondtkl 2004-07-21
  • 打赏
  • 举报
回复
比如说 你要限制 xForm 就传入

ForbidNormalFormMove(xForm, Msg, xForm.Top, xForm.Left, xForm.Width,xForm.Height)
上面这个函数 禁止了移动&&放大 缩小...

不过你还需要在xForm中: 定义及实现该函数
procedure WMMove(var Msg: TWMWindowPosChanging); message WM_WindowposChanging;
// 然后在此函数内部 调用上述函数即可
fxywkj 2004-07-21
  • 打赏
  • 举报
回复
我想如果另外的一个程序调用我的时候,把它自己锁定,不接受任何的相应,也不能得到焦点,然后我的程序退出的时候它激活,一切就ok了,我用enablewindow可以锁定它的点击,但是仍然能得到焦点,不知道各位有没有好的办法
fxywkj 2004-07-21
  • 打赏
  • 举报
回复
To: beyondtkl(大龙驹宣言:抵制日货,从我做起)
ForbidNormalFormMove(AForm: TForm; Msg: TWMWindowPosChanging; Top, Left, Width, Height: Integer);中的各个参数应该去什么样的值

To: jinjazz(我是jin)
form1.FormStyle:=fsStayOnTop ,这种方法是不可行的,你的那个方法基本可以实现我要的效果,可是就是锁定了很多按钮,标题栏的关闭也锁定了

我现在想可能因为我所有的窗体都是用class procedure 产生的问题,
jinjazz 2004-07-21
  • 打赏
  • 举报
回复
form1.FormStyle:=fsStayOnTop
beyondtkl 2004-07-21
  • 打赏
  • 举报
回复
楼上的..

BOOL SetForegroundWindow(
HWND hWnd // handle to window to bring to foreground
);
The SetForegroundWindow function puts the thread that created the specified window into the foreground and activates the window. Keyboard input is directed to the window, and various visual cues are changed for the user. The system assigns a slightly higher priority to the thread that created the foreground window than it does to other threads.



BOOL BringWindowToTop(
HWND hWnd // handle to window
);
The BringWindowToTop function brings the specified window to the top of the Z order. If the window is a top-level window, it is activated. If the window is a child window, the top-level parent window associated with the child window is activated
beyondtkl 2004-07-21
  • 打赏
  • 举报
回复
procedure ForbidNormalFormMove(AForm: TForm; Msg: TWMWindowPosChanging; Top, Left, Width, Height: Integer);
// 这个就是公有函数 传入你需要限制移动的Form 在这里是AForm就可以了
fxywkj 2004-07-21
  • 打赏
  • 举报
回复
有什么方法可以直接让一个程序永远处于另一个程序的上方,我用了enablewindow,setfocus,bringtotop等一些方法,好像都达不到我的要求,我的窗体显示是用的class procedure 方法,不知道还有没有其他的方法

enablewindow方法只能锁定窗体的点击,可是他还是能得到焦点,有什么方法可以让他的不到焦点
fxywkj 2004-07-21
  • 打赏
  • 举报
回复
jinjazz(我是jin)的方法是可行的,但是它同时也把标题栏的关闭按钮锁定了,而且好像还锁定了窗体上的一些按钮
firefox2000 2004-07-20
  • 打赏
  • 举报
回复
栏截标题栏消息就可以了,也可以把标题栏去掉(borderstyle:none)也可以
jinjazz 2004-07-20
  • 打赏
  • 举报
回复
消息拦截不能封装的,他要定义在拦截的form中,本来一个baseform就可以了,你既然其他的意境做好了那就一个一个慢慢加吧
fxywkj 2004-07-20
  • 打赏
  • 举报
回复
我现在已经完成了其他的窗体,是不是需要在每个里面都加上?那样的工作量太大了 ,
jinjazz 2004-07-20
  • 打赏
  • 举报
回复
那你做一个公用form,,所有的form都用file-new-other-你的工程名-该窗体名来生成
fxywkj 2004-07-20
  • 打赏
  • 举报
回复
我需要做成一个公用的函数,该怎么操作
beyondtkl 2004-07-20
  • 打赏
  • 举报
回复
DEPHI 中左.

procedure ForbidNormalFormMove(AForm: TForm; Msg: TWMWindowPosChanging; Top, Left, Width, Height: Integer);
begin
if (AForm.Top = Top) and (AForm.Left = Left) then
PWindowPos(TMessage(Msg).LParam).flags :=
PWindowPos(TMessage(Msg).LParam).flags or SWP_NOMOVE; //
if ((AForm.Width = Width) or (AForm.Width = 2 * Width)) and (AForm.Height = Height) then
PWindowPos(TMessage(Msg).LParam).flags :=
PWindowPos(TMessage(Msg).LParam).flags or SWP_NOSIZE;
end;
ghchen 2004-07-20
  • 打赏
  • 举报
回复
两者都可以,只是上面的是delphi语法。所以...
fxywkj 2004-07-20
  • 打赏
  • 举报
回复
在vb里做还是在delphi中作
jinjazz 2004-07-20
  • 打赏
  • 举报
回复
public:
procedure wmnchittest(var msg:twmnchittest);message wm_nchittest;
//客户区拖动窗体
procedure tform1.wmnchittest(var msg:twmnchittest);
begin
 inherited;
 if msg.Result=htclient then
  msg.Result :=htcaption;
end;
呵呵,要符合你的要求这样就可以了吧?:
public:
procedure wmnchittest(var msg:twmnchittest);message wm_nchittest;
//客户区拖动窗体
procedure tform1.wmnchittest(var msg:twmnchittest);
begin
 inherited;
 if msg.Result=htcaption then
  msg.Result :=htclient;
end;

加载更多回复(6)
项目名称:高仿QQ2013通讯DEMO-10.30更新 版本号:10.30 最新版本 下载内容: (C#)CC2013局域网通讯源码一份, 可引用至工具箱最新版CSkin.dll-10.30版本界面库一份。 界面库更新说明: CC2013-10.30 1.由于SkinForm名字太多人使用,界面库命名正式改为CSkin.dll,官网www.cskin.net。 2.SkinTabControl标签中添加菜单箭头,可点击展开菜单。 3.SkinTabControl添加标签关闭按钮。 4.修复部分中文乱码问题。 5.优化好友列表右键菜单。 6.将窗体自定义系统按钮改为集合模式,可添加无数个自定义系统按钮。自定义系统按钮事件中可以 e.参数 来判断。 7.增加360安全卫士-DEMO案例。 8.增加SkinAnimatorImg控件,用于支持位图动画的播放。如360的动态logo。 9.各种细节BUG优化。 CC2013-10.11 1.添加SkinTabControlEx,加入更加自定义的美化属性和动画效果。 2.添加SkinAnimator,通用动画控件。 3.添加Html编辑器控件 4.修复SkinButton图标和文本相对位置的BUG CC2013-9.26 1.优化好友列表CPU占用 2.好友列表加入好友登录平台属性:安卓 苹果 WEBQQ PC 3.优化标题绘制模式,新添标题绘制模式属性。 4.新添标题偏移度属性。 5.加入圆形进度条控件:ProgressIndicator。 CC2013-9.5.2 1.优化截图控件,截图工具栏加入新功能。 2.解决个人信息卡和天气窗体显示后不会消失的问题。 3.各种细节BUG优化。 CC2013-9.5.1 1.解决贴边左右隐藏的BUG。 2.解决窗体点击事件不能触发的问题。 3.优化SkinButton继承父容器背景色的代码。 4.解决SkinButton异常错误。 CC2013-9.3 1.好友列表右键菜单没反应问题。 2.新增美化控件SkinDatagridview。 3.密码软件盘回删不了文字问题。 4.双击窗体最大化,最大化后再双击恢复原大小,(win7)。 5.部分细节调优。 实现功能: 1.界面库中多达25个自定义换肤控件,让每个控件设设属性就能达到你想要的效果,支持图片换肤和色调绘制。 2.四边阴影,毛边效果,可以设置阴影宽度和阴影颜色,支持所有系统。 3.拥有密码键盘输入,防护更贴心。 4.8种圆角窗体模式供你选择,淋漓尽致,润滑如圆。 5.登录主界面后,有登陆提示窗,提示上次登录的城市和时间。 6.皮肤随心变:拖动任意一张图片至主界面,就可以改变皮肤。 7.皮肤色调获取:改变皮肤的同时,将计算图片色调,再将其运用到窗体背景色。 8.皮肤尾部渐变:上下左右方均可实现,渐变皮肤。 9.皮肤拖拉方向:可以选择皮肤在拉伸的时候,粘着哪一边拖拉。 10.GDI+界面重绘,处理消息机制,3种移动模式和拉伸是否启用只需要设置一个属性的事就可以解决。 11.界面渐变闪现和闪退:不再像平凡的突然出现,采用API渐变机制,渐渐出现和消失,win7系统下还有动态缩小至任务的效果。 12.完美好友列表,可添加上千好友,不卡不掉线,还可以拖动好友到其他分组。 13.好友悬浮至头像可以查看详细资料卡。 14.窗口可调渐变后透明度:让窗体看起来更像是Vista玻璃窗体风格。 15.聊天窗口可发送图片,大文件,表情,还有震动。 16.按钮控件背景色拥有继承窗体背景主色调的功能,让整体色调保持一致。 17.更是有和如出一辙的扣扣截图。仿真度也达到100%,完美修复所有已知BUG。 18.聊天窗口,可以调字体颜色和字体样式等多项功能。 20.SkinLabel与SkinButton控件字体与窗体标题可以根据背景色暗亮度自动调节字体为黑还是白。 21.MessageBox提示框的美化,并继承调用窗口的色调与背景,MessageBox可所谓已达到帅气的不能再帅气的境界了。 22.天气皮肤自动变,所有窗体根据当地天气自动决定皮肤背景,CC最帅气功能之一。 23.个人资料卡及聊天窗体拥有动态CC秀展示。 24.主界面拖动换肤的同时,所关联的子窗体皮肤也会跟着变。 25.多线程大文件传输功能,支持无上限大文件传输,有进度条显示进程度。 26.界面库已封装了大图取主色调,颜色判断暗亮等多项功能。 27.如果你觉得获取天气让你的登录太慢不想要的话,注释相关调用方法即可快速登录。 界面库交流群:306485590 本人QQ:345015918 注意: Demo版不包括更新,为方便用户查看和使用属性等方法,dll只轻微加密。想反编译的就不要尝试了,里面有上百个类,改错改到你哭。 介意购买正版,永久更新配源码。 看截图或者想购买商业版的用户请访问以下地址: http://www.51aspx.com/code/TotalLikeQQ2013 特权:购买商业版的用户,有权利享有最快的更新服务,第一时间将最新版本的dll源码送到你手上。 使本项目源码或本项目生成的DLL前请仔细阅读以下协议内容,如果你同意以下协议才能使用本项目所有的功能,否则如果你违反了以下协议,有可能陷入法律纠纷和赔偿,作者保留追究法律责任的权利。 1、你可以在开发的软件产品中使用和修改本项目的源码和DLL,但是请保留所有相关的版权信息。 2、不能将本项目源码与作者的其他项目整合作为一个单独的软件售卖给他人使用。 3、不能传播本项目的源码和DLL,包括上传到网上、拷贝给他人等方式。 4、以上协议暂时定制,由于还不完善,作者保留以后修改协议的权利。 时间:2013-7-5 作者: 乔克斯 请保留以上版权信息,否则作者将保留追究法律责任。
目 录 第一章 开发环境 1.1 Qt 简介5 1.2 下载安装 Qt Creator 6 1.3 第一个程序 Hello World 7 第二章 窗体应用 1.1 窗体基类说明 12 1.2 控制窗体大小 13 1.3 窗体初始位置及背景色 13 1.4 修改标题栏图标 14 1.5 移动无边框窗体 16 1.6 去掉标题栏中最大化、最小化按钮 17 1.7 多窗体调用 18 1.8 字体形状窗体 20 第三章 控件应用 1.1 QPushButton按钮 23 1.2 QLabel标签 23 1.3 QLineEdit单行文本 24 1.4 QTextEdit多行文本 25 1.5 QPlainTextEdit多行文本 26 1.6 QComboBox下拉列表框 26 1.7 QFontComboBox字体下拉列表框 27 1.8 QSpinBox控件 28 1.9 QTimeEdit时间控件 29 1.10 QDateEdit日期控件 30 1.11 QScrollBar控件 30 1.12 QRadioButton单选按钮 31 1.13 QCheckBox复选框 32 1.14 QListView 列表控件 34 1.15 QTreeView树控件 34 1.16 QTableView表格控件 35 1.17 QHBoxLayout横向布局 36 1.18 QGridLayout网格布局 37 1.19 QGroupBox控件 38 1.20 QTabWidget控件 39 1.21 QMenu、QToolBar控件 41 1.22 任务栏托盘菜单 43 第四章 组件应用 1.1日历组件 47 1.2登录窗口 48 1.3文件浏览对话框 50 1.4颜色选择对话框 51 1.5进度条实例53 1.6Timer实时更新时间 54 第五章 文件操作 1.1创建文件夹 57 1.2写入文件 58 1.3修改文件内容 60 1.4删除文件 62 1.5修改文件名 63 1.6 INI文件写入操作 65 1.7 INI文件读取操作 68 1.8创建XML文件 71 1.9读取XML文件 72 第六章 图形图像操作 1.1绘制文字 75 1.2绘制线条 75 1.3绘制椭圆 77 1.4显示静态图像 78 1.5显示动态图像 78 1.6图片水平移动 79 1.7图片翻转 80 1.8图片缩放 82 1.9图片中加文字 84 1.10图像扭曲 85 1.11模糊效果 85 1.12着色效果 86 1.13阴影效果 87 1.14透明效果 87 第七章 多媒体应用 1.1音频、视频播放器 90 1.2播放Flash动画 94 1.3播放图片动画 95 第八章 系统操作 1.1获取屏幕分辨率 98 1.2获取本机名、IP地址 98 1.3根据网址获取IP地址 99 1.4判断键盘按下键值 100 1.5获取系统环境变量 101 1.6执行系统命令 102 第九章 注册表 1.0简要说明注册表 105 1.1写入注册表 105 1.2查找注册表 106 1.3修改IE浏览器的默认主页 107 第十章 数据库基础 1.1查询数据库驱动 109 1.2Qodbc连接Access数据库 109 1.3插入数据 111 1.4数据列表 112 1.5操作SQLite数据库 113 1.6SQLite数据库视图管理器 115 第十一章 网络开发 1.1点对点聊天服务端 119 1.2点对点聊天客户端 123 1.3局域网广播聊天 128 1.4SMTP协议发送邮件 148 1.5调用系统DLL判断网络连接状态 152 第十二章 进程与线程 1.1进程管理器 155 1.2线程QThread应用 158 1.3线程QRunnable应用 159 第十三章 数据安全 1.1 QByteArray加密数据 163 1.2 AES加密数据 164 1.3 MD5 加密数据 165 1.4 生成随机数 166 第十四章 打包部署 1.1 FilePacker 打包 169 1.2 Inno Setup 打包 174
最近比较忙,抽空做了最新版的API,本次的主要精力就是放在了pdf版的文档上面,看了上一版好多人反应说希望保留chm格式的,所以这一版继续提供chm格式的文档给大家了,现在的版本中包含了PDF、EXE和CHM 3种格式的文档,相信应该可以满足大家的需要了。此外我个人推荐大家使用PDF格式的文档,因为PDF是全新制作的,内容进行了完整校对,所以错漏的地方比EXE和CHM格式要少很多。其它废话就不多说了。更新内容自己看更新说明吧! jQuery EasyUI 1.5.1版本更新内容: Bug(修复) datagrid:修复在调用“updateRow”方法之后选中和复选行标志丢失的问题; tabs:修复在调用“update”方法的时候导致标签栏工具错位的问题; window:修复在窗体高度设置为“auto”时,当移动窗体窗体会丢失的问题; messager:修复在现实进度消息窗口后立即关闭该窗口会导致程序发生异常的问题; form:修复“clear”方法无法清除combobox组件选择的下拉项的问题。 Improvement(改进) textbox:可以用“cls”属性添加自定义样式; numberbox:允许用户使用意大利货币格式; combo:添加“multivalue”属性,允许用户决定如何提交多个值; combobox:添加“reversed”属性; combobox:添加“onClick”事件; combogrid:添加“reversed”属性; treegrid:使用Shift键启用多值选择。 New Plugin(新组件) tagbox:允许用户在表单字段上添加标签。

5,379

社区成员

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

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