五维网络域名:
5dweb.yeah.net
5dweb.126.com
5dweb.iscool.net
电子信箱地址:
[email protected]
|
如何在程序中打开一个“独占”的窗口?
|
|
所谓“独占”,即为打开该窗口后,用户只能对该窗口进行操作,而不能对程序的其他部分进行操作,但其他程序不受影响。比如,在您的程序中打开“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 浏览。
|