文档库 最新最全的文档下载
当前位置:文档库 › 巧妙控制Delphi的窗体

巧妙控制Delphi的窗体

巧妙控制Delphi的窗体
巧妙控制Delphi的窗体

巧妙控制Delphi 的窗体

2008年02月27日星期三 16:46

不用标题栏也移动窗体

一般情况下,移动一个窗体需要将鼠标放置在该窗体的标题栏上才能拖动窗体,为什么非要使用标题栏呢?其实我们可以使用一个巧妙的方法来实现将鼠标放置在窗体上按下就可拖动窗体。

看一下实现的过程:

新建一个工程,在Form1的“Private”部分中申明过程,加入以下的代码,如图1所示:

procedure wmnchittest( var msg:twmnchittest) ;

message wm_nchittest ;

在程序部分加入以下代码:

procedure TForm1.wmnchittest(var msg:twmnchittest) ;

begin

inherited ;

if (htclient=msg.result) then msg.result:=htcaption;

end ;

如图2所示

程序经编译运行,结果如图3所示。

整个程序的源代码清单如下:

unit Unit1;

interface

uses

Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,

Dialogs;

type

TForm1 = class(TForm)

private

{ Private declarations }

procedure wmnchittest(var msg:twmnchittest);

message wm_nchittest;

public

{ Public declarations }

end;

var

Form1: TForm1;

implementation

{$R *.dfm}

procedure TForm1.wmnchittest(var msg:twmnchittest);

begin

inherited;

if(htclient=msg.Result)then

msg.Result:=htcaption;

end;

end.

窗体的基本控制技巧

在Delphi 中有的时候为了程序的需要,必须要把程序的窗体设置为不能放大、缩小、移动和关闭,以下就是实现的过程。

新建一个工程,在“Object Inspector”中首先把 Form 的 BorderIcons 下的几个子属性值全改为 False,如图4所示。

然后,修改 Form 的 BorderStyle 的值为bsSingle ,如图5所示;最后,为了让窗口不能移动,可以自已拦下WM_NCHIT-TEST消息,对该消息的处理为:一概回应鼠标点在窗口的 Client区域,相信这个视窗就呆呆的不会动了。详情可以查一下 Win32API Help 的 CreateWindow() 与 WM_NCHITTEST 的说明。具体的代码添加:

在Form1的“Private”部分中申明过程,加入以下的代码:

procedure WMNCHitTest(var Msg: TMessage) ;

message WM_NCHITTEST ;

如图6所示:

在程序部分加入以下代码:

procedure TForm1.Button1Click(Sender: TObject);

Close;//按钮的代码一定要加,不然就不能正常退出程序了。

end;

procedure TForm1.WMNCHitTest(var Msg: TMessage);

begin

inherited;

Msg.Result := HTCLIENT;

end;

如图7所示。

程序经编译运行。

窗口变色背景设置技巧

我们看到有些安装程序的背景色自上由下由蓝变黑,我们也可以使我们自己的程序的背景自上由下由蓝变黑。具体的实现过程如下:

新建一个工程。双击窗体的OnPaint事件,如图9所示。

然后编写如下的代码:

procedure TForm1.FormPaint(Sender: TObject);

var i:word;

dc,c:real;

begin

dc:=clientheight/256;

c:=0;

for i:=255 downto 0 do

begin

Form1.canvas.brush.color:=$00000000+i*$10000;

Form1.canvas.fillrect(rect(0,round(c),clientwidth,round(c+dc)));

c:=c+dc;

end;

如图10所示。

程序经编译运行就可看到结果。

限制窗体最大化时的大小的技巧

使用过Delphi 的人都会注意到Delphi 集成开发环境本身最上面的窗口,当它最大化的时候只占屏幕的一小部分。下面我们就来看一看这是怎样实现的。

新建一个工程。在Form1的“Private”部分做以下的声明:

procedure WMGetMinMaxInfo( var Message:TWMGetMin MaxInfo ); message WM_GETMINMAXINFO;

如图11所示:

在程序部分加入以下代码:

procedure TForm1.WMGetMinMaxinfo(var Message:TWMGet MinMaxInfo); begin

Message.MinMaxInfo.ptMaxSize.X:=400; //最大化时的宽度

Message.MinMaxInfo.ptMaxSize.Y:=100; //最大化时的高度

Message.MinMaxInfo.ptMaxPosition.X:=0; //最大化时左上角的横坐标Message.MinMaxInfo.ptMaxPosition.Y:=0; //最大化时左上角的纵坐标Message.Result:=0; //告诉系统最大最小化的信息已经改变

Inherited;

end;

程序经编译运行,结果如图12所示。

让Form在不同分辨率下显示出同样大小

有的时候Delphi 设计的程序在开发者的计算机上运行的时候字体和色彩都很

漂亮,但是有时在别的计算机上运行的时候却发现字体和颜色都发生了变化。这是由于别的计算机的显示器的分辨率的设置与开发者的计算机的分辨率不一样,而导致了字体和颜色的变化。当然,我们可以要求程序的使用者保持与我们一致的分辨率,但有没有其它的一些方法使程序来“自适应”分辨率的变化,使我们的程序看上去更专业一些。利用Delphi 提供的Scaleby可以达到这个目的,下面就是使程序“自适应”分辨率变化的过程:

先新建一个工程。双击窗体的OnCreate事件,如图13所示。

然后输入以下的代码:

先定义两个常数变量:

const

ScreenWidth:LongInt=800 ; //当前显示器的值

ScreenHeight:LongInt=600 ; //当前显示器的值

在FromCreate事件中填写代码:

procedure TMainForm.FormCreate(Sender:TObject);

var

OldFormWidth : integer ;

begin

Form1.Scaled:=TRUE ;

if(Screen.width<> ScreenWidth)then

begin

OldFormWidth:=Width

Height:=longint(Height)*longint(Screen.Height) DIV ScreenHeight ; Width:=longint(Width)*longint(Screen.Width) DIV ScreenWidth ; Form1.ScaleBy(Screen.Width , ScreenWidth);

Form 1.Font.Size:=(Width DIV OldForm Width)* Font. Size;

end;

end;

程序经编译后运行,在不同分辨率下的运行结果如图14、15所示。

程序在1024×768分辨率下的运行结果

程序在800×600的分辨率下的运行结果

系统浏览器设置

国家公派出国留学管理信息平台 浏览器设置 国家留学基金管理委员会制 2017年4月

为保证数据准确性,请使用Internet Explorer(以下简称“IE”)浏览器进行评审。开始评审前请对IE浏览器进行以下设置。 一、启用“兼容性视图” 1)打开IE浏览器,点击菜单栏“工具”-->“兼容性视图设置”。 2)打开“兼容性视图设置”窗口,点击“添加”按钮,将https://www.wendangku.net/doc/7017917921.html,添 加至兼容性视图网站。 3)确认https://www.wendangku.net/doc/7017917921.html,已添加至兼容性视图网站,点击“关闭”按钮,完成

兼容性设置。 二、关闭“弹出窗口阻止程序” 1)打开IE浏览器,点击菜单栏“工具”-->“Internet选项”。 2)点击“隐私”按钮,进入IE浏览器安全性设置选项卡中。

3)去除“启用弹出窗口阻止程序”前面的勾,点击“确定”按钮,完成 设置。 三、安装“PDF文件阅读器” 建议安装AdobeReader10.0或以上版本PDF阅读器,安装完成后确认IE浏

览器“管理加载项”已启用。 1)打开IE浏览器,点击菜单栏“工具”-->“管理加载项”。 2)切换显示“未经许可运行”,确认加载项列表中有Adobe PDF Reader。 按照如上设置,如果申报人材料无法在IE浏览器中预览,可使用以下几种办法进行解决。 (1)关闭迅雷--浏览器下载响应 如果您安装了“迅雷”,请从设置中心中关闭“IE浏览器下载响应”。

(2)使用系统自带软件解决 如果您是“Windows10”操作系统,卸载Adobe Reader,使用系统自 带Microsoft Edge浏览器预览材料。 (3)安装其他PDF阅读器解决 安装“福昕PDF阅读器”,使用福昕阅读器预览材料。 (4)如果您是“Windows 64位”操作系统,请使用“C:\Program Files (x86)\Internet Explorer\iexplore.exe”32位版本IE浏览器进行 评审。 (5)以上方法都不能问题,请重置“IE浏览器” a)关掉ie浏览器(必须关闭)。 b)运行inetcpl.cpl命令,打开ie浏览器首选项。 c)切换至“高级”选项卡,删除个人设置,还原ie浏览器初始值。

带有标题边框的窗体

package windoweffect; import java.awt.BorderLayout; import java.awt.Color; import javax.swing.BorderFactory; import javax.swing.JFrame; import javax.swing.JPanel; import javax.swing.border.Border; import javax.swing.border.EtchedBorder; import javax.swing.border.TitledBorder; public class WindowWithTitleBorder { /** * @param args */ public static void main(String[] args) { // TODO Auto-generated method stub DemoWindow6 dw = new DemoWindow6("带有标题边框的窗体"); dw.setBounds(dw.getToolkit().getScreenSize().width / 3, dw.getToolkit() .getScreenSize().height / 3, dw.getToolkit().getScreenSize().width / 3, dw.getToolkit() .getScreenSize().height / 3); dw.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); dw.setVisible(true); } }

低压电器远程智能控制系统设计与实现

低压电器远程智能控制系统设计与实现 发表时间:2018-03-13T14:56:43.310Z 来源:《防护工程》2017年第31期作者:王秀丽周永涛尹环环 [导读] 当前,信息化、智能化为低压电器产品升级提供了技术支撑。 山东省产品质量检验研究院山东济南 250000 摘要:当前,信息化、智能化为低压电器产品升级提供了技术支撑。以数字化、网络化、智能化为标志的智能化低压电器制造,被认为是两化深度融合的切入点和主攻方向。 关键词:低压电器;智能化控制;设计 1.前言 在电器行业的未来发展中,低压电器的智能化技术发展是其必经之路,故而必须在低压电器的智能化技术发展的基础上,进行深入的探讨分析,进一步指出低压电器的智能化技术的发展趋势是在于同智能电网系统的匹配与建造上。 2.低压电器智能化概述 一直到现在为止,国内外的低压电器标准上都没有对低压电器智能化进行过具体的定义。可是,低压电器智能化的说法早已被低压电器的研发人员、设计人员、使用部门、工程设计人员以及制造商接受了。智能化的低压电器一般具有以下四个功能上的基本特征:(1)齐全的保护功能;(2)能够测量现实的电流参数;(3)能够记录并显示故障;(4)能够自行诊断内部的故障。 由于建筑电器的不断发展以及智能电网的不断建设,住宅配电系统的供应商越来越看重具有智能化技术功能的低压电器。曾被展出的FTB1带选择性保护的小型断路器,就是智能化低压电器的较为典型的代表,它是完全自主的知识产权的产物,又隶属于第四代的低压电器,使得我国的低压终端配电系统在选择性保护上面不再存在空白,而且它的分断能力比较高,体积又特别小,同时又具备了选择性保护以及通信功能智能化的特色,故而能够使智能楼宇与智能终端的配电回路系统的需求达到满足。除此之外,还有被研制出的VW60这一新的智能化低压框架的断路器。VW60万能式的低压断路器这一产品不仅仅体积小、断路的性能更为强大,而且具备了新颖的操作机构和现场的总线技术水平十分高的特点。由于该产品被成功地开发出来,使得智能化的低压配电同电控的成套开关设备有更好的发展,促进了配网的智能化进程。 3.低压电器与中央控制服务器之间通信协议 系统中,各系列产品通过RS-485总线连接为小型局域网,在局域网中使用Modbus通信协议是确保数据交换正确无误的条件与保证。Modbus协议是应用于电子控制器上的一种通用语言。通过此协议,各系列产品与工控机及其他设备之间得以通信。服务器与采集控制器及各系列产品之间需要频繁地交换数据,因此本系统选择标准的Modbus网络通信的RTU(远程终端单元)模式通信。在RTU模式中,采用典型的消息,消息帧的地址域包含8bit。单个设备的地址范围是1~247。地址域对每一个设备来说是唯一的,以此来标识不同的设备,如第一个FAR6L3设备的地址域为10,第二个FAR6L3设备的地址域为11;第一个FAR6U3设备的地址域为20,第二个FAR6U3设备的地址域为21;以此类推。 消息帧中的功能代码域包含了8bit。保证每一代码的唯一性。当消息从主设备发往从设备时,功能代码域将告诉从设备需要执行哪些行为,例如读取设备的开关状态,读取从设备的状态等。当从设备回应时,使用功能代码域来指示是正常回应(无误),还是有某种错误发生(异议回应)。数据域是由两个十六进制数集合构成的,范围00~FF。对于不同的产品,数据域包含信息有所不同,比如MOT电操有电压值、欠费值、剩余电流值等工作参数,而FDQ5则不同,有常用电源A相、B相、C相电压值,备用电源也有A相、B相、C相电压值等参数。因此,为使数据域能够表示所有产品的功能参数,本系统定义的数据域集合较大,为11。 综上所述,在上述各系列产品组成的以太网中采用RS-485通信协议完成与局域网中设备之间的通信是一种适用的选择,试验证明这种通信协议在本系统中是安全、可靠的。 4.服务器数据管理与数据存储 因工控机具有高可靠性与多接口性,系统选用工控机作为服务器。工控机在本系统中具有两大作用,一为各系列产品的上位机;二为服务器。工控机端开发两套软件系统完成上述功能。 其中远程控制系统为基于B/S结构的软件系统,向本地或远程用户提供人机交互界面,用户可以通过移动终端、电脑终端、互联网终端等设备远程登录该系统。在该界面中,用户可以监控到各个低压电器的状态、实时参数等信息;同时用户可以通过界面更改其运行参数或运行状态,从而达到远程监测与遥控的目的。I/O(输入/输出)管理系统作为上位机软件管理各类数据,接收从低压电器发来的数据,并将其传递给人机交互界面,显示其运行状态等信息;同时将人机交互界面接收的远程命令通过RS-485接口发送至相应的低压电器。在服务器端软件开发中,数据管理是关键问题。在系统开发中,远程控制系统中的数据存取与I/O管理系统的数据存取均采用数据库(DB)实现。独立的数据管理机制保证了系统的可靠性和安全性。 5.试验系统的实现 以某公司的低压电器产品为从设备,以工控机(服务器)为主设备,采用了RS-485通信组建以太网,实现了远程智能控制系统。试验系统包含FAR6L3(三相自动重合闸保护器),FAR6U3(三相自复式过欠压保护器),FAR6W3(三相预付费电表断路器),FDQ5(双电源自动转换开关)及MT3(三相微型断路器电操)等上述5个系列产品系统。服务器端软件采用VisualC#2010开发环境,数据存储采用SQLServer数据库。在服务器中人机交互界面中,显示了上述5个系列产品的操作界面,其中产品FAR6W3具有两种操作模式。通过每个系列产品的操作按钮,即可进入该电器的操作界面,进入低压电器FAR6W3的操作界面,在界面中可以控制FAR6U3的A相、B相与C相电压。当电压过低时,FAR6W3便会分闸;当电压恢复时,FAR6W3便会合闸。经测试,远程智能控制系统可以监测上述5个系列产品的电压、电流信号及运行状态;远程修改其参数或运行方式。各系列产品与服务器之间信号传输实时,通过互联网远程控制上述5个系列产品的效果良好。 6.低压电器智能化存在的发展机遇 由于整个电力系统之中,低压电器被用作电网能量链之中的最底层使用范围是相当广阔的,它不仅仅对用户起着控制与保护的作用,

的窗体上添加1个名称为Image为Form1标题为“图片练习”的窗体上添加1个名称为Image1

基本题(1) 【解题思路】按照题目要求,通过图像框的Name、Width、Height题Picture属性设置图像框,Stretch属性用于设置图像框中的图形能自动放大或缩小以与图像框的大小相适应。 【操作步骤】 步骤1:建立界面,并设置控件的属性。程序中涉及的控件及属性见表3.127。 表3.127 步骤2:调试并运行程序,关闭程序后按题目要求存盘。 基本题(2) 【解题思路】在Command1_Click事件过程中,通过列表框的AddItem和RemoveItem方法将选中的列表项内容复制到已有列表项的尾部;在Command2_Click事件过程中,通过列表框的RemoveItem方法将选中的列表项内容删除。 【操作步骤】 步骤1:建立界面,并设置控件的属性。程序中用到的控件及属性见表3.128。 表3.128 步骤2:编写程序代码。 参考答案 Private Sub Command1_Click() List1.AddItem List1.Text List1.RemoveItem List1.ListIndex End Sub Private Sub Command2_Click() List1.RemoveItem List1.ListIndex End Sub步骤3:调试并运行程序,关闭程序后按题目要求存盘。 简单题(1) 【解题思路】在计时器的Timer事件过程中,通过设置标签的Left属性值使其在原有基础上

加100来实现自左向右移动的功能。在"开始"按钮的单击事件过程中应启动计时器,禁用"移动"按钮,并改变其标题为"暂停"。在"退出"按钮的单击事件过程中要通过End语句停止程序。 【操作步骤】 步骤1:打开本题工程文件,并设置控件的属性。程序中涉及的控件及属性见表3.129。 步骤2:分析并编写程序代码。 程序提供代码 Dim flag As Integer Private Sub Form_Load() flag = 0 End Sub Private Sub Command1_Click() If Command1.Caption = "移动" Then 'Timer1.Enabled = ? Command1.Caption = "暂停" Else Timer1.Enabled = False Command1.Caption = "移动" End If End Sub Private Sub Command2_Click() End End Sub Private Sub Timer1_Timer() Select Case flag Case Is = 0 ''Label1.Left = Label1.Left ? 100 If Label1.Left + Label1.Width = Form1.Width Then flag = 1 Case Is = 1 'Label1.Left = Label1.Left ? 100 If Label1.Left = 0 Then flag = 0 End Select End Sub

解析三种Windows操作系统远程控制的实现

解析三种Windows操作系统远程控制的实现 你遇到过这样的情况吗?遇到一位“菜鸟”MM向你请教一个计算机设置或软件安装等方面的问题时,因为距离远,你又不能赶到现场,用即时通讯软件甚至动用电话给她里讲 了半天,她仍是一头雾水,怎么办?她不会只有自己动手了,于是你使用软件远程连接到她的机器上,远程操作她的电脑,问题很快就解决了,顺便还看了一眼MM机器里面的内容。下面笔者就此过程中所需的相关知识为大家一一进行解答! 远程控制因为进一步克服了由于地域性差异而带来的不便性,所以在网络管理、远程技术支持、远程交流、远程办公等领域有着非常广泛的应用。如何实现这种技术呢?其实非常简单,我们可以利用系统本身自带的功能或者利用一些工具软件来实现,但在本文中笔者将就如何使用Windows系统本身自带的功能来实现远程控制进行讲解,下面就让我们大家一起来看下文中远程控制的原理分析以及应用技巧。 远程控制软件的原理 远程控制软件一般分两个部分:一部分是客户端程序Client,另一部分是服务器端程序Server(或Systry),在使用前需要将客户端程序安装到主控端电脑上,将服务器端程序安装到被控端电脑上。它的控制的过程一般是先在主控端电脑上执行客户端程序,像一个普通的客户一样向被控端电脑中的服务器端程序发出信号,建立一个特殊的远程服务,然后通过这个远程服务,使用各种远程控制功能发送远程控制命令,控制被控端电脑中的各种应用程序运行,我们称这种远程控制方式为基于远程服务的远程控制。通过远程控制软件,我们可以进行很多方面的远程控制,包括获取目标电脑屏幕图像、窗口及进程列表;记录并提取远端键盘事件(击键序列,即监视远端键盘输入的内容);可以打开、关闭目标电脑的任意目录并实现资源共享;提取拨号网络及普通程序的密码;激活、中止远端程序进程;管理远端电脑的文件和文件夹;关闭或者重新启动远端电脑中的操作系统;修改Windows注册表;通过远端电脑上、下载文件和捕获音频、视频信号等。 前面我们所说的是一台电脑对一台电脑的情况,其实,基于远程服务的远程控制最适合的模式是一对多,即利用远程控制软件,我们可以使用一台电脑控制多台电脑,这就使得我们不必为办公室的每一台电脑都安装一个调制解调器,而只需要利用办公室局域网的优势就可以轻松实现远程多点控制了。在进行一台电脑对多台远端电脑进行控制

为Form1、标题为“文本框练习”的窗体上添加1个名称为Text1的文本框

基本题(1) 【解题思路】MaxLength属性设置文本框中输入的字符串长度是否有限制。默认值为0,表示该单行文本框中字符串的长度只受操作系统内存的限制;若设置为大于0的数,则表示能够输入的最大字符数目。 【操作步骤】 步骤1:建立界面,并设置控件的属性。程序中用到的控件及属性见表3.162。 表3.162 步骤2:调试并运行程序,关闭程序后按题目要求存盘。 基本题(2) 【解题思路】按照题目要求设置标签和命令按钮的属性,在命令按钮的Click事件过程中,通过设置标签的FontSize属性值实现标签内容字体的放大和还原。 【操作步骤】 步骤1:建立界面,并设置控件的属性。程序中用到的控件及属性见表3.163和表3.164。 表3.163 表3.164 步骤2:编写程序代码。 参考答案 Private Sub Command1_Click() Label1.FontSize = Label1.FontSize + 2 End Sub Private Sub Command2_Click() Label1.FontSize = 12

End Sub 步骤3:调试并运行程序,关闭程序后按题目要求存盘。 简单题(1) 【解题思路】在Cmd Click 事件过程中,通过Select Case语句判断选择命令按钮数组的Index属性值,Case 0表示单击"开始"按钮,计时器Timer1和"暂停"按钮的Enabled属性为True,状态变为可用,且如果Cmd(0)的Caption属性是"开始"按钮,那么Cmd(0)的Caption属性变为"继续",且Cmd(0)为不可用,单击"继续"按钮,则Timer1接着开始工作,"继续"按钮变为不可用,"暂停"按钮变为可用。同理Case 1表示单击"暂停"按钮,则Timer1停止工作,"暂停"按钮变为不可用,"继续"按钮变为可用;Case 2表示单击"结果"按钮,则结束程序运行。 Timer1 Timer 事件过程通过If判断语句,实现秒向分钟,分钟向小时的转换,并在三个文本框中显示出来。 【操作步骤】 步骤1:打开本题工程文件,画1个计时器timer1,设置计时器Interval属性为1000,Enabled属性设置为False。 步骤2:分析并编写程序代码。 程序提供代码 Dim t(3) As Integer Private Sub Cmd_Click(Index As Integer) ' Select Case ? Case 0 'Timer1.Enabled = ? Cmd(1).Enabled = True If Cmd(0).Caption = "开始" Then Cmd(0).Caption = "继续" End If 'Cmd(0).Enabled =? Case 1 Timer1.Enabled = False Cmd(0).Enabled = True Cmd(1).Enabled = False Case 2 End End Select End Sub Private Sub Timer1_Timer() t(3) = t(3) + 1 ' If t(3) = ? Then t(3) = 0 t(2) = t(2) + 1 If t(2) = 60 Then t(2) = 0

一种远程控制系统的设计与实现

一种远程控制系统的设计与实现 刘旭东 (长安大学信息工程学院陕西西安710064) 摘要:目前,随着计算机网络的广泛应用,无纸办公和远程办公是人们经常谈及的话题,为了实现计算机网络的这 种应用,方便人们工作,本文提出了一种远程控制系统。为了实现这个系统,首先从系统所要实现的功能着手,设计出该 系统的体系结构,并详细说明体系结构中各模块的主要功能;接着从通信效率和网络环境方面考虑,设计出适合于该系统 的通信协议;最后以流程图的方式详细说明系统软件的实现过程。 关键词:远程控制;软件;系统结构;通信协议 中图分类号: TP393.09 文献标识码: B 文章编号: 1004 373X (2005) 02 053 03 1 引言 随着计算机网络的飞速发展,人们可以很方便地从Internet上获取和自己工作生活密切相关的信息,世界也真正变成一个地球村,我们可以和世界上其他任何一个人通过计算机网络进行沟通,信息资源达到了高度的共享。从这一点得到启发,希望能够设计一个远程控制系统,通过他可以在家里控制办公室里的计算机。如果你是软件开发商,你的员工可以通过他在办公室里远程为客户配置系统、对产品进行维护,如果客户向你报告软件产品出现问题你可以远程对产品进行调试,最终解决问题。这样员工就不会因长期的劳苦奔波而抱怨,用户也不会因为你不能及时解决产品的问题而和你讨价还价,当然也为公司节约了人力和财力。下面详述该远程控制系统是如何实现的。 2 远程控制系统的体系结构设计 该远程控制系统由服务器端和客户端2个部分组成,客户端可以通过鼠标和键盘控制服务器端的计算机,同时还可以相互传输文件。其体系结构如图1所示,主要由安全性校验、屏幕控制、鼠标控制、键盘控制、命令控制、文件传输、端口设置等6个模块组成。下面具体说明各个模块的功能。 (1)安全性校验模块 从系统安全性方面考虑,目的是让客户端和服务器端建立可信联接,客户端要想完全控制服务器端的计算机,必须先通过服务器的验证取得服务器的信任。这样可以避免一些不怀好意的人通过客户端窃取服务器端计算机中有用的资料。

窗体练习

以教师表为窗体记录源: 1.将窗体的边框改为“对话框边框”,取消水平和垂直滚动条、记录选择器、 导航按钮和分隔线,窗体标题设置为“教师信息系统” 2.在窗体页眉节添加名称为bTitle,显示文本为“教师信息”的标签,要求 文字颜色为“棕色”(颜色代码:128),字体粗细为“加粗”,字号为30,左边距2cm,上边距1.5cm 3.在主体节添加名为TxtName的文本框,将其与教师姓名绑定,并以密码 的形式(“*”)显示 4.添加文本框:TxtGl,并让其显示教师的工龄,TxtBg,让其显示“学历” 5.添加组合框:CbZm,设置下拉列表中为“团员”、“党员”、“群众”、“其他” 6.按如下控件顺序设置Tab键次序: TxtName、TxtGl、TxtBg 、CbZm 以学生表为窗体记录源: 1.将窗体的边框样式改为“细边框”,窗体标题设置为“学生信息查询体统” 2.在窗体的页眉节区添加一个名为”bTitle”的标签,让其显示“学生信 息”,字号35,字体名称为“黑体”, 3.在主体节区添加一个选项组控件,命名为“opt”,选项组标签显示内容 为“团员否”,在选项组内放入两个选项按钮,分别命名为”opt1”、”opt2”,选项按钮标签显示内容为“团员”和“非团员”,值分别设置为-1和0,让其与“团员否”字段绑定,选项按钮标签名称分别为”bopt1”和”bopt2” 4.添加“选课成绩”子窗体,将子窗体的边框样式改为“细边框”,取消子 窗体的记录选择器、导航按钮 5.添加一个名为“CmdQuit”的退出命令按钮,按钮标题为“退出”,功能 是关闭窗体

6.在子窗体中添加“TxtAvg”的文本框,使其显示每个学生各门课程的平 均分,要求保留两位小数

远程控制系统的设计与实现

收稿日期:2003-04-28 作者简介:吴志攀(1975-),男,广东五华人,惠州学院电子系教师,中南大学信息科学与工程学院在读研究生. 第24卷第3期 2004年6月惠州学院学报(自然科学版)Journal of Huizhou University (Nat.Sci.)Vol 1241No 13J un 12004 远程控制系统的设计与实现 吴志攀,赵跃龙,杜华英(中南大学信息科学与工程学院,湖南 长沙  410083) 摘 要 本文用VB 对远程控制系统进行了设计与实现,并对其中每个部分的功能进行了较为详细的说明 关键词 远程控制;Winsock ;VB. 中图分类号:TP393.5 文献标识码:A 文章编号:1671-5934(2004)03-0038-06 1 引言 远程控制系统用处很大,实用性很强,应用范围很广。可以应用在教学方面:教师机控制着学生机,实现远程广播、远程控制、文件共享传送等功能;也可以应用在网吧的计算机管理,对计算机进行监控,用于上机收费等。 2 简易远程控制系统实现思想 2.1本系统所具有的基本功能: ①实现主机远程控制客户机重新注销、重新启动、强行关机。 ②实现主机远程撤消客户机的桌面背景等,锁定客户机的键盘、鼠标。 ③实现主机与客户机的互发短信、文字聊天。 ④实现主机与客户机的文件传输。 ⑤实现主机信息广播到各个客户机,远程监视客户机,远程控制客户机。 2.2本系统的实现思想 本系统使用Winsock 进行网络通信。客户/服务器模式兴起于90年代,到了90年代的中期开始成为流行的使用模式,它的出现从总体上讲有以下两个原因: 第一个原因,在客户/服务器模式出现以前,占主导地位的是60年代的集中式大型机模式和80年代的PC/文件服务器模式。它们有很多的缺点:大型机模式实现了高度的集中控制,但是操作不便;而PC/文件服务器模式虽然提供了较好的用户界面,但是却大大提高了体系的整体开销和维护成本。而客户/服务器模式在继承了PC 模式的友好用户界面的基础

无标题栏和边框的窗体

技巧1 无标题栏和边框的窗体 如果希望制作无标题栏和边框的窗体,那么可以使用API函数。 在VBE窗口中单击菜单“插入”→“用户窗体”,双击窗体,在其代码窗口中输入下面的代码: #001 Private Declare Function DrawMenuBar Lib "user32" (ByVal Hwnd As Long) As Long #002 Private Declare Function GetWindowLong Lib "user32" Alias "GetWindowLongA" (ByVal Hwnd As Long, ByVal nIndex As Long) As Long #003 Private Declare Function SetWindowLong Lib "user32" Alias "SetWindowLongA" (ByVal Hwnd As Long, ByVal nIndex As Long, ByVal dwNewLong As Long) As Long #004 Private Declare Function FindWindow Lib "user32" Alias "FindWindowA" (ByVal lpClassName As String, ByVal lpWindowName As String) As Long #005 Private Const GWL_STYLE As Long = (-16) #006 Private Const GWL_EXSTYLE = (-20) #007 Private Const WS_CAPTION As Long = &HC00000 #008 Private Const WS_EX_DLGMODALFRAME = &H1& #009 Private Sub UserForm_Initialize() #010 Dim IStyle As Long #011 Dim Hwnd As Long #012 If Val(Application.Version) < 9 Then #013 Hwnd = FindWindow("ThunderXFrame", Me.Caption) #014 Else #015 Hwnd = FindWindow("ThunderDFrame", Me.Caption) #016 End If #017 IStyle = GetWindowLong(Hwnd, GWL_STYLE) #018 IStyle = IStyle And Not WS_CAPTION

最新48取消窗体标题栏与边框汇总

48取消窗体标题栏与 边框

精品资料 取消窗体标题栏与边框 package com.swing05; import java.awt.EventQueue; import javax.swing.ImageIcon; import javax.swing.JFrame; import javax.swing.JLabel; import javax.swing.JPanel; import javax.swing.JTextArea; import javax.swing.JButton; import java.awt.event.ActionListener; import java.awt.event.ActionEvent; import java.awt.Color; public class CancelFrameTitleBorder extends JFrame { private JPanel contentPane; private JTextArea textArea; /** * Launch the application. */ public static void main(String[] args) { EventQueue.invokeLater(new Runnable() { public void run() { try { CancelFrameTitleBorder frame = new CancelFrameTitleBorder(); frame.setVisible(true); } catch (Exception e) { e.printStackTrace(); } } }); } /** * Create the frame. */ public CancelFrameTitleBorder() { // 设置背景色 getContentPane().setBackground(new Color(240, 255, 仅供学习与交流,如有侵权请联系网站删除谢谢2

弹出窗口阻止的解决办法

弹出窗口FAQ 什么是弹出窗口: 弹出窗口是由页面打开的一种小型 Web 浏览器窗口。它们通常会在您访问网站或页面时打开,也可能会在您单击网站上的链接或按钮时打开,远程课堂的一些课堂内通知、课件和平时作业需要弹出窗口进行控制。 为什么会有弹出窗口拦截: 由于一些不良站点或网站弹出广告需要,在用户范围网站的时候会经常弹出一些窗口,显示一些不希望看到或者比较讨厌的内容,弹出窗口控制软件/插件应运而生,保护用户避免过多的骚扰。 通常是哪些软件或程序会限制弹出窗口: ?如果你的系统是xp sp2以上或者IE版本是6.0 sp2或者IE7,IE本身会提供弹出窗口拦截; ?一些第三方的IE插件也会提供弹出窗口的拦截功能; ?一些使用IE内核的外套浏览器(如:腾讯浏览器,万能浏览器等)和一些些非Internet Explorer 的浏览器,如Maxthon傲游(原名:MyIE2),sleipnir浏览器,也提供弹出窗口拦截功能,鉴于网 络学习的性质,不建议使用这类浏览器进行平时作业; ?某些杀毒软件:如瑞星、诺顿网络安全特警等软件中关于弹出窗口的设置也可提供此功能。 ?一些常见具备弹出窗口控制的IE第三方插件 Google工具条 百度超级搜霸 MSN Toolbar Yahoo! Toolbar 瑞星卡卡助手 如何避免弹出被拦截 ?通用的避免弹出被拦截办法:在点击链接时,按住“CTRL”键盘,直到希望看到的窗口出现再松开, 如果未奏效,继续以下的尝试 ?将站点加入你的浏览器信任列表:

?如果你正在使用IE6.0 sp2或者IE7,使用如下方面操作: ?方法一:取消弹出窗口阻止程序 ?方法二:配置弹出窗口阻止程序: ?方法三:在浏览器窗口操作: 如果你在打开过程中看到IE显示窗口上方有一个小的黄条提示,如果没有看到,查看一

为Form1、标题为“列表框练习”的窗体上添加1个名称为List的列表框

基础题(1) 【解题思路】Sorted属性用于设置列表框中的项目是否按字母表顺序排序。可能的取值如下: True:列表框中的项目按字母表顺序排序。 False:列表框中的项目不按字母表顺序排序。 注意:Sorted属性必须在设计时设置,在运行时为只读属性。 【操作步骤】 步骤1:按照题目要求建立窗体和控件,并设置控件的属性。程序中用到的控件及属性见表3.167。 表3.167 步骤2:调试并运行程序,关闭程序后按题目要求存盘。 基础题(2)【解题思路】按照题目要求设置标签和命令按钮的属性,在命令按钮的Click事件过程中,通过标签的FontSize 属性值的动态设置实现标签内容字体的缩小和还原。 【操作步骤】 步骤1:建立界面,并设置控件的属性。程序中用到的控件及属性见表3.168和表3.169。 表3.168 表3.169 步骤2:编写程序代码。 参考答案 Private Sub Command1_Click() Label1.FontSize = Label1.FontSize - 2 End Sub Private Sub Command2_Click() Label1.FontSize = 12

End Sub 步骤3:调试并运行程序,关闭程序后按题目要求存盘。 简单题(1)【解题思路】根据题意,将考生文件夹下in3.dat文件中已按升序排列的30个整数读入一个维数组a中,同时运用Space函数和Str函数把这30个数值显示在Text1文本框内。在Cmd2 Click事件过程中,通过InputBox函数弹出输入对话框,接收用户输入的任意一个数,若接收的数为奇数,弹出"输入数为奇数,请重输!"提示重新输入。如果接收的偶数超出一维数组a的数值范围,Text2显示"已超出所给数值范围";否则,通过For循环语句和If判断语句在一维数组a中查找该数,若查找失败,则在Text2文本框内显示该数"不存在于数组中";否则显示该数在数组中的位置。 【操作步骤】 步骤1:打开本题工程文件,添加一个标签为"查找结果"的标签和一个初始内容为空的文本框。 步骤2:分析并编写程序代码。 程序提供代码 Option Base 1 Dim a(30) As Integer Private Sub Cmd1_Click() Open App.Path & "\in3.dat" For Input As #1 For m = 1 To 30 Input #1, a(m) Text1 = Text1 + Str(a(m)) + Space(2) Next m Close #1 End Sub Private Sub Cmd2_Click() Dim num As Integer, n As Integer num = InputBox("请输入待查找的数") ' If num / 2 ? Fix(num / 2) Then MsgBox "输入数为奇数,请重输!",, "检查" Exit Sub End If ' If num < a(1) ? num > a(30) Then Text2.Text = Str(num) + "已超出所给数值范围" Exit Sub End If For n = 1 To 30 ' If a(n)= ? Then Text2.Text = Str(num) + "是数组中的第" + Str(n) + "个值" Exit For End If Next n 'If n ? 30 Then Text2.Text = Str(num) + "不存在于数组中" End If End Sub 程序结束 参考答案 第1个?处填入:<> 第2个?处填入:Or 第3个?处填入:num

Photoshop的窗口由标题栏

Photoshop的窗口由标题栏、菜单栏、工具箱、工作窗口、控制面板、状态栏等六部分组成,如图2.1所示。 图2.1Photoshop5.5的窗口 工具箱中存放着各种编辑工具,使用方便。控制面板的主要作用是辅助工具栏,更改工具的设置。一些对图层、通道、历史纪录的操作也要在此完成。在菜单栏里的窗口选项中可以设置此栏中各项的显示与否,也可用鼠标拖动控制面板中的选项,按自己的习惯组合控制面板。状态栏则是用来显示当前图像的有关状态及一些简要说明和提示。 2.工具箱的使用 Photoshop的基本工具存放在工具箱中,一般置于Photoshop界面的左侧。当工具的图标右下角有一个小三角时,表示此工具图标中还隐藏了其他工具。用鼠标点中此图标不放,便可以打开隐藏的工具栏。点中隐藏的工具后,所选工具便会代替原先工具出现在工具栏里。当把鼠标停在某个工具上时,Photoshop会提示此工具的名称及快捷键。而在选定工具后可在右边的控制面板中的选项栏里修改工具的参数及设置(若屏幕上没有选项栏执行菜单【Window】\【Show Options】命令即可)。 工具的使用方法很灵活。这里先简单介绍几种重要工具的基本用法。 1)【选框】工具 【选框】工具是重要的选图工具,单击【选框】工具不放,会弹出如图所示的隐藏工具面板。选择工具共有上图所示五种工具,分别是【Rectangular Marquee Tool(M)】(矩形选框)工具,【Elliptical Marquee Tool(M)】(椭圆选框)工具,【Single Row Marquee Tool(M)】(单行选框)工具,【Single Column Marquee Tool(M)】(单列选框)工具,【Crop Tool(C)】(裁切)工具。【选框】工具用于在被编辑图像中选取一个工作区域。其中【Rectangular Marquee Tool(M)】(矩形选框)工具是用于选取一个任意矩形区域,【Elliptical Marquee Tool(M)】(椭圆选框)工具用于选取一个任意圆形或椭圆形区域,【Single Row Marquee Tool(M)】(单行选框)工具是用于选取图像中任一横行象素,【Single Column Marquee Tool(M)】(单列选框)工具用于选取图像中任一竖行象素,【Crop Tool(C)】(裁切)工具较特殊,用于裁切选框以外的部分,以重新设置图像大小。 2)【套索】工具

在Form1,标题为“显示记录”的窗体上画1个名称为Text1的文本框,其初始内容为空

基础题(1) 【操作步骤】 步骤1:新建一个窗体,在窗体上创建一个文本框控件。 步骤2:在属性窗口中,设置其Text属性为空。 步骤3:在文本框下方绘制一个命令按钮Command1。 步骤4:在属性窗口中,将Caption设置为"上一条记录"。 步骤5:复制命令按钮"上一条记录",在窗体的空白位置处粘贴对话框,单击"是"按钮,创建一个控件数组。 步骤6:再创建3个命令按钮. 步骤7:按照题目要求将复制的3个命令按钮的Caption分别设置为"下一条记录"、"第一条记录"和"最后一条记录",并将窗体的Caption设置为"显示记录"。 步骤8:选择"上一条记录"命令按钮,通过属性窗口设置Enable为False,选择"下一条记录"命令按钮,通过属性窗口设置Default为True.。 步骤9:将文件保存至考生文件夹下,且设置窗体文件名为sjt1.frm,工程文件名为sjt1.vbp。基础题(2) 【操作步骤】 步骤1:打开VB开发环境,新建一个窗体。 步骤2:在窗体中添加一个标签控件Lable1,在属性窗口中设置标签的Caption属性为"等级考试",然后设置其AutoSize属性为True,设置其BorderStyle属性为1。 步骤3:然后在窗体中添加一个计时器Timer1,设置其Interval属性为0,Enabled属性为True。步骤4:打开代码窗口,编写代码如下。 Private Sub Form_Load() Timer1.Interval = 1000 End Sub Private Sub Timer1_Timer() Label1.Visible = Not Label1.Visible End Sub 步骤5:运行程序,然后将文件保存至考生文件夹下,窗体文件名为sjt2.frm,工程文件名为sjt2.vbp。 简单题(1) 【操作步骤】 步骤1:打开本题工程文件。

窗口移动无边框各种方式

第一步: //先定义一个坐标点对象 mypoint private Point mypoint; 第二步:在窗体的点击事件中写 private void Form1_MouseDown(object sender, MouseEventArgs e) { //鼠标在窗体内按下时,自动记录鼠标的 x y 值,并将它们改为负数 mypoint = new Point(-e.X,-e.Y); } 第三步:在窗体的鼠标移动事件中写 private void Form1_MouseMove(object sender, MouseEventArgs e) { /* 鼠标在窗体内移动时,首先判断e.Button按下的是哪个鼠标按钮再判断 * 是否等于左键按下,MouseButtons.Left这句的意思是鼠标左 键按下状态 */ if (e.Button == MouseButtons.Left) { /*新建一个坐标点对象,它的坐标等于 (Control.MousePosition;) * 桌面上坐标的位置 */ Point myposition = Control.MousePosition; /* myposition.offset中的Offset是坐标平移的意思,现在将在窗体 * 内点击左键时产生的负数加进来,也就等于现在鼠标在桌面上的坐标 * 减去鼠标在窗体内的坐标位置,就等于现在窗体的位置 */ myposition.Offset(mypoint.X, mypoint.Y); /* this.DesktopLocation这句的意思是获取或设置窗体在桌

面上的位置 * 它的位置来自myposition */ this.DesktopLocation = myposition; } 其实这是个让人说过无数次的内容,但是最近在写一个测试小程序的时候发现了一个问题,今天没什么事做,就做个小的总结。 通过拖动窗体的客户区来移动一个窗体并不是很新鲜的内容,很多的程序都用到了这一点,尤其是一些可以换肤的程序。 这篇文章并不打算详细论述如何在C#下实现这一功能,因为它的代码实在是简单得不能再简单。这里简单说一下实现的原理: 首先说一个概念——窗体的客户区,窗体的客户区指的是一个窗体除了标题栏和边框以外的部分。 当我们的鼠标在窗体中移动的时候,会触发WM_NCHITTEST系统消息,MSDN中对这个消息的说明为:The WM_NCHITTEST message is sent to a window when the cursor moves, or when a mouse button is pressed or released. If the mouse is not captured, the message is sent to the window beneath the cursor. Otherwise, the message is posted to the window that has captured the mouse. (当光标移动或一个鼠标键被按下或释放时,WM_NCHITTEST消息会被发送到一个窗口中,如果光标没有被捕获,这个消息被送到光标下的窗口。否则这个消息被送到捕获了光标的窗口。) 这个消息被默认的(请注意是“默认的”)窗口过程(窗口过程这个概念后面再说)处理后,会根据触发这个消息时鼠标的位置返回一个值,例如当鼠标在窗口的标题栏上时,返回HTCAPTION;当鼠标在一个窗口的客户区中时,返回HTCLIENT;如果鼠标指向某个窗口的字窗口的“关闭”按钮或系统菜单(就是点击窗口图标后出现的那个菜单),就返回HTSYSMENU。 所以我们要做的就是骗!我们要欺骗Windows,当我们的鼠标在窗体的客户区中移动时,默认的窗口过程处理后会返回 HTCLIENT,Windows系统根据这个值进行相应的操作,把适当的消息插入到应用程序的消息队列(这个概念同样在后面讨论)中。这时如果我们做一些改变,人为地修改窗口过程的返回值,把HTCLIENT修改为HTCAPTION并返回给系统,系统就会认为鼠标这时在窗体的标题栏中,而拖动标题栏可以移动一个窗体,所以当我们在一个被这样修改后的应用程序的客户区按下鼠标并拖动时,Windows会认我们在拖动一个窗体的标题栏,于是它把一个移动窗体的消息插入到程序的消息队列中,再经过窗口过程的处理,就实现了我们需要的功能——拖动窗体的客户区移动窗体。

相关文档