发信人: liudq()
整理人: windfire(2000-12-05 20:06:27), 站内信件
|
发信人: icefh (冰原)
信 区: RAD
标 题: Delphi的一些Tips(一)
发信站: '紫金飞鸿' (Fri May 1 11:28:07 1998) , 转信
近日逛了一些Delphi的站点,看到了一些好东东,好东西与大家共享,请大家慢慢 看!
中国的一些较好的Delphi站点
Delphi圣殿: 202.103.10.49/~delphi 相当好的一个中国大陆站点,不可 不看!
中国大陆Borland程序员站点: www.nease.net/~borland
一个较好的Borland程序员站点,主要是讨论WEB程序.
Delphi深度历险 上海Mirror,可从上面站点的相关站点中得到.
Delphi's Tips
---------------------------------------------------------------------- --------
运行极小化问题(DELPHI 1.0)
DELPHI程序存在一个不被人注意的问题,就是运行极小化的
问题,为了演示这个问题,可以做一个最简单的FORM, 生成EXE
文件后,在程序管理器为它创建一个图标,并点中‘极小化运行’,
然后运行程序,你会发现窗口并没有极小化
解决这个问题的通用的办法是在FormCreate事件中检查CmdShow
变量,就像下面这样
procedure TForm1.FormCreate(Sender: TObject);
begin
case CmdShow of
SW_SHOWMINNOACTIVE, SW_MINIMIZE, SW_SHOWMINIMIZED:
WindowState := wsMinimized;
SW_SHOWMAXIMIZED:
WindowState := wsMaximized;
else
WindowState := wsNormal;
end;
{其他代码}
end;
现在有一个更为简单的解决办法,使用ShowWindow这个API函数,
可以这么调用:
procedure TForm1.FormCreate(Sender: TObject);
begin
ShowWindow(Handle, CmdShow);
{其他代码}
end;
---------------------------------------------------------------------- --
限制FORM的大小
使用过DELPHI的朋友都会注意到DELPHI本身最上面的窗口,
当它极大时只占屏幕的一小部分,它是如何实现的呢,请看下面的说明:
1)在FORM私有声明部分加上如下一行:
procedureMessage :TWMGetMinMaxInfo ); message WM_GETMINMAXINFO; WMGetM inMaxInfo( var
2)在声明部分加上如下几行:
procedure TForm1.WMGetMinMaxInfo( var Message :TWMGetMinMaxInfo );
begin
with Message.MinMaxInfo^ do
begin
ptMaxSize.X := 200; {最大化时宽度}
ptMaxSize.Y := 200; {最大化时高度}
ptMaxPosition.X := 99; {最大化时左上角横坐标}
ptMaxPosition.Y := 99; {最大化时左上角纵坐标}
end;
Message.Result := 0; {告诉Windows你改变了 minmaxinfo}
inherited;
end;
---------------------------------------------------------------------- --
动态修改显示器分辨率
Windows提供给我们两个API函数,可以动态调整显示器的分辨率, 他们是EnumD isplaySettings()
和 ChangeDisplaySettings(), 下面这个例子就是了
function DynamicResolution(X, Y: word): BOOL;
var
lpDevMode: TDeviceMode;
begin
Result := EnumDisplaySettings(nil, 0, lpDevMode);
if Result then
begin
lpDevMode.dmFields := DM_PELSWIDTH Or DM_PELSHEIGHT;
lpDevMode.dmPelsWidth := X;
lpDevMode.dmPelsHeight := Y;
Result := ChangeDisplaySettings(lpDevMode, 0) = DISP_CHANGE_SUCCES SFUL;
end;
end;
procedure TForm1.Button1Click(Sender: TObject);
begin
if DynamicResolution(640, 480) then
ShowMessage('Now is 640*480');
end;
procedure TForm1.Button2Click(Sender: TObject);
begin
if DynamicResolution(800, 600) then
ShowMessage('Now is 800*600');
end;
--
/\
我在冰雪原中 // /\ \\
跋涉 / / / | \ \ \
远方的路啊 /^^^^--冰原--^^^^\
在哪里? /__________________\
※ 来源:·紫金飞鸿 bbs.njupt.edu.cn·[FROM: 202.119.236.104]
---------------------------------------------------------------------- ----------
[返回首页] [分类讨论区] [全部讨论区]
-- ※ 来源:.月光软件站 http://www.moon-soft.com.[FROM: 202.96.167.200]
|
|