五维网络域名:
  5dweb.yeah.net
  5dweb.126.com
  5dweb.iscool.net

电子信箱地址:
  [email protected]

编程维
编程技巧
上界
编程维
信息维
软件维
硬件维
另类维
下界
返回主页

五维网络2,值得您稍稍等待。

如何在程序中打开一个“独占”的窗口?
 
所谓“独占”,即为打开该窗口后,用户只能对该窗口进行操作,而不能对程序的其他部分进行操作,但其他程序不受影响。比如,在您的程序中打开“About”对话框时,就需要使用这种方式来打开窗口。在“About”对话框打开时,您不能对程序进行任何操作,直到关闭了该对话框。

有两种情况,一是打开Form窗体,二是打开Dialog窗口。

//打开Form窗体:
//如果用“Show”方法,则达不到效果。
Form2.ShowModal;

//打开Dialog窗口:
//Key为Integer变量,MessageBox为Win32的API函数,此
//处的关键是参数“Application.Handle”。
Key:=MessageBox(Application.Handle,
PChar('Dialog具体内容'),PChar('Dialog标题'),
MB_YESNO+MB_ICONQUESTION);

[上一页]      

 
如何在Form关闭时再去执行其他程序?
 
建议您可以直接在 Form 的 OnClose 事件中写您要做的这件事, 例如:

procedure TForm1.FormClose(Sender:TObject;var Action:TCloseAction);
begin
 WinExec('Notepad.exe',sw_Normal);
end;

[上一页]      

 
如何用鼠标移动没有标题栏的窗体?
 
最简单的方法就是欺骗系统,截取wm_NCHitTest消息,然后让系统认为鼠标点击的是标题栏。

//先在程序的private部分添加如下过程声明:
procedure WMNCHitTest(var M:TWMNCHitTest);message wm_NCHitTest;

//然后在implementation后,写下如下过程体:

procedure TForm1.WMNCHitTest(var M:TWMNCHitTest);
begin
 inherited;
 if M.Result=htClient then M.Result:=htCaption;
end;

[上一页]      

 
如何在程序中将BMP图形转换成JPEG图形?
 
以下方法用在Delphi3及以后版本中。
var
 MyJpeg:TJpegImage;
 Image1:TImage;
begin
 Image1:=TImage.Create;
 MyJpeg:=TJpegImage.Create;
 Image1.LoadFromFile('TestImage.BMP');  
 MyJpeg.Assign(Image1.Picture.Bitmap);  
 MyJpeg.SaveToFile('MyJPEGImage.JPG'); 
 Image1.Free;
 MyJpeg.Free;
end;

[上一页]      

 
如何在运算时兼顾界面的刷新?
 
在程序中经常会处理大量的数据,占用大量的时间,在此期间,界面刷新会不再继续,即按钮不会被相应,如果没有进度条,还以为此任务死机:

解决办法:
在循环中加入:Application.ProcessMessages;

[上一页]      

 
如何在程序中调用HLP文件?
 
procedure TForm1.SearchHelp;
var
 P:PChar;
begin
 Application.HelpFile:='readme.hlp';
 P:=StrNew('');
 Application.HelpCommand(Help_PartialKey,longint(P));
 StrDispose(P);
end;

[上一页]      

 
怎样读取硬盘的序列号?
 
程序举例如下:

procedure TForm1.Button1Click(Sender: TObject);
var
 SerialNum:pdword;
 a,b:dword;
 Buffer:array [0..255] of char;
begin
 if GetVolumeInformation
 ('c:\',Buffer,SizeOf(Buffer),SerialNum,a,b,nil,0)
 then Label1.Caption:=IntToStr(SerialNum^);
end;

[上一页]      

 
如何制作全透明的窗口?
 
我们有时在程序中需要一个全透明的窗口,下面演示了一个捕获屏幕的例子。显然,这里用到的就是全透明的窗口。

unit homepage_coolform;

interface

 uses
   Windows,Messages,SysUtils,Classes,Graphics,Controls,
   Forms,Dialogs,ExtCtrls,StdCtrls,Buttons;

type
 TForm1=class(TForm)
   procedure FormPaint(Sender: TObject);
   procedure FormShow(Sender: TObject);
   procedure FormDestroy(Sender: TObject);
 private
   { Private declarations }
 public
   { Public declarations }
   hbmp:integer;
 end;

var
 Form1:TForm1;

implementation

{$R *.DFM}

function CopyScreenToBitmap(Rect:TREct):integer;
var
 hScrDC,hMemDC,hBitmap,hOldBitmap:integer;     
 nX,nY,nX2,nY2:integer;
 nWidth,nHeight:integer;      
 xScrn,yScrn:integer;
begin
 if (IsRectEmpty(Rect)) then
 begin
  result:=0;
  exit;
 end;
 hScrDC:=CreateDC('DISPLAY',pchar(0),pchar(0),PDeviceModeA(0));
 hMemDC:=CreateCompatibleDC(hScrDC);
 nX:=rect.left;
 nY:=rect.top;
 nX2:=rect.right;
 nY2:=rect.bottom;
 xScrn:=GetDeviceCaps(hScrDC,HORZRES);
 yScrn:=GetDeviceCaps(hScrDC,VERTRES);
 if nX<0 then nX:=0;
 if nY<0 then nY:=0; 
 if nX2>xScrn then nX2:=xScrn;
 if nY2>yScrn then nY2:=yScrn;
 nWidth:=nX2-nX;
 nHeight:=nY2-nY;
 hBitmap:=CreateCompatibleBitmap(hScrDC,nWidth,nHeight);
 hOldBitmap:=SelectObject(hMemDC,hBitmap);
 BitBlt(hMemDC,0,0,nWidth,nHeight,hScrDC,nX,nY,SRCCOPY);
 hBitmap:=SelectObject(hMemDC,hOldBitmap);
 DeleteDC(hScrDC);
 DeleteDC(hMemDC);
 result:=hBitmap;
end;

procedure TForm1.FormShow(Sender: TObject);
Var
 rect:TRect;
 p:TPoint;
begin
 rect:=ClientRect;
 p:=ClientOrigin;
 rect.left:=p.x;
 rect.top:=p.y;
 rect.bottom:=rect.bottom+p.y;
 rect.right:=rect.right+p.x;
 hbmp:=copyScreenToBitmap(rect);
 inherited;
end;

procedure TForm1.FormPaint(Sender: TObject);
var
 bitmap:TBitmap;
 rect:TRect;
begin
 bitmap:=TBitmap.create;
 bitmap.handle:=hbmp;
 rect:=ClientRect;
 canvas.draw(rect.left,rect.top,bitmap);
 bitmap.handle:=0;
 bitmap.free;
end;

procedure TForm1.FormDestroy(Sender: TObject);
begin
 DeleteObject(hbmp);
end;

end.

[上一页]      


版权所有 1997-1999 “五维网络2”由新天赋软件工作室制作
建议在 800*600 分辨率下,使用 Internet Explorer 浏览。