精华区 [关闭][返回]

当前位置:网易精华区>>讨论区精华>>编程开发>>● Delphi>>其他>>Delphi的一些Tips(一)(转载)

主题:Delphi的一些Tips(一)(转载)
发信人: 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]

[关闭][返回]