发信人: 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]
  | 
 
 
 |