⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 128.htm

📁 水木清华的BBS文章
💻 HTM
字号:
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=gb2312">
<title>CTerm非常精华下载</title>
</head>
<body bgcolor="#FFFFFF">
<table border="0" width="100%" cellspacing="0" cellpadding="0" height="577">
<tr><td width="32%" rowspan="3" height="123"><img src="DDl_back.jpg" width="300" height="129" alt="DDl_back.jpg"></td><td width="30%" background="DDl_back2.jpg" height="35"><p align="center"><a href="http://bbs.tsinghua.edu.cn"><font face="黑体"><big><big>水木清华★</big></big></font></a></td></tr>
<tr>
<td width="68%" background="DDl_back2.jpg" height="44"><big><big><font face="黑体"><p align="center">         Delphi编程                            (BM: strayli FlyingBoy)          </font></big></big></td></tr>
<tr>
<td width="68%" height="44" bgcolor="#000000"><font face="黑体"><big><big><p   align="center"></big></big><a href="http://cterm.163.net"><img src="banner.gif" width="400" height="60" alt="banner.gif"border="0"></a></font></td>
</tr>
<tr><td width="100%" colspan="2" height="454"> <p align="center">[<a href="index.htm">回到开始</a>][<a href="100.htm">上一层</a>][<a href="129.htm">下一篇</a>]
<hr><p align="left"><small>控制窗体 <br>

  <br>

  如何在 Delphi 中把 Form 控制成不能放大/缩小/移动/关闭?1、把 Form 的 <br>

BorderIcons 下的几个子属性值全改为 False;2、修改 Form 的 BorderStyle 的值为 <br>

bsSingle ;3、为了让窗口不能移动,可以自已拦下 WM_NCHITTEST 消息, 对该消息的 <br>

处理为:一概回应鼠标点在窗口的 Client 区域, 相信这个视窗就呆呆的不会动了。 <br>

详情可以查一下 Win32API Help 的 CreateWindow() 与 WM_NCHITTEST 的说明。 <br>

下面是一个例子, 请参考看看: <br>

unit Unit1; <br>

interface <br>

uses <br>

Windows, Messages, SysUtils, Classes, Graphics, Controls,Forms, Dialogs, <br>

StdCtrls; <br>

type <br>

TForm1 = class(TForm) <br>

Button1: TButton; <br>

procedure Button1Click(Sender: TObject); <br>

private <br>

{ Private declarations } <br>

procedure WMNCHitTest(var Msg: TMessage); message WM_NCHITTEST; <br>

public <br>

{ Public declarations } <br>

end; <br>

end; <br>

var <br>

Form1: TForm1; <br>

implementation <br>

{$R *.DFM} <br>

procedure TForm1.Button1Click(Sender: TObject); <br>

begin <br>

Close; // 不可少, 因为已经没有其他方法能关闭此窗口了 <br>

end; <br>

  <br>

procedure TForm1.WMNCHitTest(var Msg: TMessage); <br>

begin <br>

inherited; // 这样,移动就不可能了... <br>

Msg.Result := HTCLIENT; <br>

end; <br>

end. <br>

  <br>

                            限制FORM的大小 <br>

  <br>

使用过DELPHI的朋友都会注意到DELPHI本身最上面的窗口, <br>

当它极大时只占屏幕的一小部分,它是如何实现的呢,请看下面的说明: <br>

1)在FORM私有声明部分加上如下一行: <br>

procedure WMGetMinMaxInfo( var Message:TWMGetMinMaxInfo ); message <br>



WM_GETMINMAXINFO; <br>

2)在声明部分加上如下几行: <br>

procedure TForm1.WMGetMinMaxInfo( var Message :TWMGetMinMaxInfo ); <br>

begin <br>

with Message.MinMaxInfo^ do <br>

begin <br>

ptMaxSize.X := 200; {最大化时宽度} <br>

ptMaxSize.Y := 200; {最大化时高度} <br>

ptMaxPosition.X := 99; {最大化时左上角横坐标} <br>

ptMaxPosition.Y := 99; {最大化时左上角纵坐标} <br>

end; <br>

Message.Result := 0; {告诉Windows你改变了 minmaxinfo} <br>

inherited; <br>

end; <br>

  <br>

                       动态修改显示器分辨率 <br>

  <br>

Windows提供给我们两个API函数,可以动态调整显示器的分辨率,他们是 <br>

EnumDisplaySettings() 和ChangeDisplaySettings(),下面这个例子就是了 <br>

  <br>

function DynamicResolution(X, Y: word): BOOL; <br>

var <br>

var <br>

lpDevMode: TDeviceMode; <br>

begin <br>

Result := EnumDisplaySettings(nil, 0, lpDevMode); <br>

if Result then <br>

begin <br>

lpDevMode.dmFields := DM_PELSWIDTH Or DM_PELSHEIGHT; <br>

lpDevMode.dmPelsWidth := X; <br>

lpDevMode.dmPelsHeight := Y; <br>

Result := ChangeDisplaySettings(lpDevMode, 0) = DISP_CHANGE_SUCCESSFUL; <br>

end <br>

end; <br>

  <br>

procedure TForm1.Button1Click(Sender: TObject); <br>

begin <br>

if DynamicResolution(640, 480) then <br>

ShowMessage('Now is 640*480'); <br>

end; <br>

  <br>

procedure TForm1.Button2Click(Sender: TObject); <br>

begin <br>

if DynamicResolution(800, 600) then <br>

ShowMessage('Now is 800*600'); <br>



end; <br>

  <br>

                         回车替Tab下移控件 <br>

  <br>

需要用回车键代替TAB键下移一个控件时,把KeyPress设为True,加入下列代码拦截击 <br>

键: <br>

Procedure TForm1.FormKeyPress(Sender:Tobject;Var Key:Char); <br>

Begin <br>

 if key=#13 then { 判断是按执行键} <br>

 if not (ActiveControl is TDbgrid) Then <br>

 Begin { 不是在TDbgrid控件内} <br>

  key:=#0; <br>

  perform(WM_NEXTDLGCTL,0,0);{移动到下一个控件} <br>

 end else <br>

 if (ActiveControl is TDbgrid) Then{是在 TDbgrid 控件内} <br>

 begin <br>

  With TDbgrid(ActiveControl) Do <br>

  if Selectedindex<(FieldCount-1) then <br>

  Selectedindex:=Selectedindex+1{ 移动到下一字段} <br>

  else Selectedindex:=0; <br>

 end; <br>

End; <br>

ex:=0; <br>

 end; <br>

End; <br>

  <br>

                                 模拟按键 <br>

  <br>

让 WIN95 模拟按了一个按键,例如按下 ENTER或者 TAB 键? <br>

PostMessage(Object.Handle, WM_KEYDOWN, VK_TAB, 0); <br>

  <br>

                          隐藏桌面上的图标 <br>

  <br>

var <br>

hDesktop : THandle; <br>

begin <br>

hDesktop := FindWindow('Progman', nil); <br>

ShowWindow(hDesktop, SW_HIDE); <br>

end; <br>

</small><hr>
<p align="center">[<a href="index.htm">回到开始</a>][<a href="100.htm">上一层</a>][<a href="129.htm">下一篇</a>]
<p align="center"><a href="http://cterm.163.net">欢迎访问Cterm主页</a></p>
</body>
</html>

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -