摘要载入中… 请稍等…
内容载入中… 请稍等…
| ◎→ | 本类最新 |
|
在DELPHI中用线程排序 在Delphi中使用Queued Component 作非常规程序菜单掌握delphi 执行一个外部程序并等待它的完成 在应用程序中跟踪MOUSE的坐标 五子棋源代码 显示密码的原理 |
|
| ◎→相关资源 | |
| C语言入门视频教程 C#编程WinForm入门视频 Asp.net入门视频教程下载 VC++编程视频教程下载 VB窗体文章 HTML入门教程 Deiphi实例教程 Deiphi窗体文章 Deiphi数据库编程 Deiphi网络编程 Deiphi图形图象文章 Deiphi系统文件 | |
| ◎→ | 热门资源 |
| 图解Delphi 8 Eco 开发实战 用Delphi编写后台监控软件 用Delphi获取Windows及系统路径 用Delphi实现24位真彩色图标 用Delphi实现24位真彩色图标(2) 用Delphi实现24位真彩色图标(1) 用Delphi7.0实现漂亮的汉字窗口 |
|
Delphi是Borland公司推出的一个可视化、面向对象的快速应用程序开发工具,继16位的1.0版本后,又推出了32位的2.0、3.0版本,很受开发人员的欢迎。下面就将我在学习Delphi过程中的一些心得奉献给大家,希望能给您带来帮助和启示。
一、如何使Form在不同的聊环直率下显示出同样大小?
我喜欢把我的15英寸显示器置于800×600的模式下,因为这时的色彩和字体都比较好看,但是在这种模式下用Delphi设计的程序运行于别的机器上时往往由于分辨率不同、字体大小不同显得很难看,相信不少朋友和我一样遇到同样的情况,当然我们可以“强迫”别人也使用800×600的分辨率。那么有没有办法使自己的程序“专业化”一些,能够自适应屏幕的分辨率呢,答案是肯定的,因为Delphi 提供了ScaleBy这个过程,利用这个过程我们可以在FormCreate时轻易地控制form 的外观。实现的代码如下:
implementation
const
ScreenWidth:LongInt=800;
ScreenHeight:LongInt=600;
{I designed my form in 800×600 mode.}
{$ R*.DFM}
procedure TMainForm.FormCreate(Sender:TObject);
var
OldFormWidth:integer;
begin
Scaled:=TRUE;
if(Screen.width $#@60;$#@62; ScreenWidth)then
begin
OldFormWidth:=Width
Height:=longint(Height)*longint(Screen.Height)DIV ScreenHeight;
Width:=longint(Width)*longint(Screen.Width)DIV ScreenWidth;
ScaleBy(Screen.Width,ScreenWidth);
Font.Size:=(Width DIV OldFormWidth)*FontSize;
end;
end;
二、如何判断一个程序是否已在运行?
在某些时候我们通常需要自己编制的程序只可以有一份拷贝在运行,如何作到这一点呢?通常我们可以用GetWindowsWord获得窗口句柄,再用GetClassName获得并比较ClassName来达到目的。
...
Result:=true;
if GetWindowWord (Wnd, Gww_HINSTANCE)
=hPrevInst then
begin
GetClassName(Wnd,ClassName,30);
if StrIComp(ClassName,TApplication)=0 then
begin
TargetWindow^:=Wnd;
Result:=false;
end;
end;
...
后来我曾在网上看过一段关于此方面 得鳎樯芰肆硪恢址椒ǎ峭ü谀诖嬷薪⑵煊锉曛臼迪执斯δ艿模粤艘幌滦Ч芎茫咛宓墓碳旅娴某绦蛴胱⑹停?/p>
unit prevcode;
interface
uses
Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs
type
TForml=class(TForm)
procedure FormCreate(Sender:TObject);
private
{Private declarations}
public
{Public declarations}
end;
function DoIExist(WndTitle:String):Boolean;
var
Form1:TForm1;
implementation
{$R*.DFM
function DoIExist(WndTitle:String):Boolean;
var
hSem:THandle;
hWndMe,hWnPrev:HWnd;
semNm,wTtl:Array[0..256]of Char;
beigin
Result:=False;
StrPCopy(semNm,SermaphoreName);
StrPCopy(wTtl,WndTitle);
hSem:=CreateSemaphore(nil,0,1,semNm);//如果第一次运行则建立一个标志
//检查这个标志是否存在
if(hSem $#@60;$#@62; 0)AND(GetLastError()=ERROR_ALREADY_EXISTS))then
begin
CloseHandle(hSem);
hWndMe:=FindWindow(nil,wTtl);//获得当前运行的窗口句柄,改变标题
SetWindowText(hWndMe,zzzzzzz);//这样才可以寻找其他instance
//寻找这个视窗的instance,然后将它置于Z-order顶层
hWndMe:=FindWindow(nil,wTtl);
if(hWndMe $#@60;$#@62; 0)then
begin
if IsIconic(hWndMe) then ShowWindow (hWndMe, SW_SHOWNORMAL)
else
SetForegroundWindow(hWndMe);
end;
Result:=True;
end;
end;
procedure TForm.FormCreate(Sender:TObject);
begin
if DOIExist(Self.Caption)then
Halt;
end;
[1]| 芯友网版权所有 1999-2006 | 著作权与商标声明 | 法律声明 | 服务条款 | 隐私声明 | 联系我们 |