返回列表 回复 发帖

[转帖]Delphi使用技巧6则

【 原文由 liao 所发表 】

  1、 如何快速选择一个组件的父亲

  在Delphi中编程设计Form时,通常需要放置一些容器组件,如Panel,在其中放置别的组件。当一个组件被’Align To
Client’时,组件的父亲不容易用被选定以便修改属性。有一种特别简单的方法来选定组件的父亲。确保Form被激活,然后选择要找其父亲的组件,按[ESC]键,系统将自动选择组件的父亲,这个过程可以被重复,直至找到组件最终的父亲即Form,出现在对象浏览器中.

  2、Delphi 4中的快捷组合键

  2.1、在进行代码编辑时,按Ctrl-Shift-UpArrow/DownArrow可在过程接口申明与具体实现部分之间来回切换。

  2.2、选择要移动的程序代码行,按Ctrl_Shift_I及Ctrl_Shift_U可使程序代码块整体左右移动。

  2.3、让鼠标在变量或函数、过程名上停顿一会,可浮现其最初的原始定义。此刻按Control键,可以导航打开最初定义的文件。这种方法使得程序代码导航特别容易。

  3、如何确保你的.exe文件仅运行一次!

  利用Windows 的全局原子表信息来实现此功能, Windows 的全局原子表可以被当前所有应用程序访问。它一共可包含37 项内容。

  下面是实现代码:

procedure TForm1.FormCreate(Sender: TObject);
begin
{搜寻表看是否程序已运行}
if GlobalFindAtom('PROGRAM_RUNNING') = 0 then
{ 如果没运行,则在表中增加信息 }
atom := GlobalAddAtom('PROGRAM_RUNNING')
else begin
{ 如果程序已运行,则显示信息然后退出 }
MessageDlg('You have the program running
all ready!!', mtWarning,[mbOK], 0);
Halt;
end;
end;

procedure TForm1.FormDestroy(Sender: TObject);
begin
{从表中移走信息以便程序能再运行}
GlobalDeleteAtom(atom);
end;
  4、如何使你的窗口Stay on Top

  在Delphi中让窗体"StayOnTop"最简单的办法是设置Form的"FormStyle"属性为”fsStayOnTop”,但采用这种方法,如果再设置"FormStyle"属性为其他模式时,会出现窗口跳动闪烁。为了避免这个问题,这里可以利用API的威力来实现同样的功能。

  4.1、设置窗体为"StayOnTop"风格.

SetWindowPos(Form1.handle, HWND_TOPMOST,
Form1.Left, Form1.Top, Form1.Width, Form1.Height,0);
这里的Form1为你的窗体的名字
4.2、设置窗体为正常的、非Topmost风格
SetWindowPos(Form1.handle, HWND_NOTOPMOST,
Form1.Left, Form1.Top, Form1.Width, Form1.Height,0);
  5、如何转换数据库表为CSV文件格式

  当数据库表数据转换为CSV文件格式时,容易和别的程序如电子表格交换数据。下面是实现该功能的通用程序:

procedure BackupTableToCSV(tableName:TTable);
var
i,j: integer; (*i-field, j-record*)
s: string; (*Record string*)
theStringList: Tstringlist; (*temp storage*)

begin
s:='';
theStringList:=TStringList.Create;
with tableName do
begin
try
  Active:=True;
except
  showmessage('Could not activate '+ Name);
end;
for j:=0 to (RecordCount-1) do
begin
s:='';
for i:=1 to (FieldCount-1) do
begin
(*add next field w/comma delimiter*)
s:=s+(Fields.AsString)+',';
end; (*i for*)
theStringList.add(s);
Next;
end; (*i for*)
theStringList.savetofile
(Name+'.csv'); (*memo1.lines.*)
Showmessage(Name+ ' has been backed up.');
close;
end; (*with*)
end; (*BackupTableToCSV*)
  6、如何使用Show方法来显示一个模态窗口

 
我们知道在Delphi中显示一个窗口有两种方式,模态方式显示(ShowModal)和非模态方式显示(Show),模态方式显示窗口时,必须在自身关闭后才能使父窗口起作用,但有时我们想要实现一个窗口,既要具有模态窗口的特性,但又要能从父窗口中控制它,如显示一个表示处理进行过程的进
度框。利用DisableTaskWindows和 EnableTaskWindows 可以达到这一效果。

  下面是演示实现程序:

procedure TForm1.ShowProgressDlg;
var
WindowList: Pointer;
begin
{除了Form2外使所有窗口无效}
WindowList := DisableTaskWindows(Form2.Handle);
try

Form2.Show;

{循环执行任务}
Form2.ProgressBar1.Position :=
Form2.ProgressBar1.Position + 1;
{循环结束}

finally
{重新使所有窗口有效}
EnableTaskWindows(WindowList);
Form2.Close;
end;
end;
  
哈哈哈!!!!你的IP是不是?我都知道了!!!
返回列表