设你创建的表为tb,那么:
if Not Assigned(tb) then //不存在才创建
tb := TTable.Create(AOwner);
if Not Assigned(tb) then //不存在才创建
tb := TTable.Create(AOwner);
解决方案 »
- 为嘛C#跟delphi如此像呢!【有同感的说说】
- {急 急}{急 急} idhttp问题,维持会话! [急 急]
- 图片淡入淡出效果/>
- 初学者问fastreport打印报表的问题
- 怎样将Edit1定义个快捷键Alt+U,Edit2定义个快捷键Alt+P使光标能快速定位和编辑。
- 为什么转出来的文本文件最后都多几行空行,如何解决!!!
- BDE简单的安装方法?
- 老问题,有没有新的答案?关于dbgrid中回车键代替tab键的问题。
- 高分求解!谁有营销系统的开发文档??
- 各位老兄,能不能把你知道的关于DELPHI的好的个人站点都帖出来,互相交流一下!!
- adoquery怎么样连接远程数据库?
- 我有一万多张jpg图片,我想全部转换成bmp图片,请问该怎么办。有现成软件也可以,有代码也可以。
newform:= TTable.Create(AOwner)
else newform.show;
呵呵
就是
try
.....
except
//什么也不做
end;
begin
OnActivate := nil;
// The rest of your code goes here
end;
实现单实例运行的关键是判断前一实例是否存在,Win3.x中运行的程序能获知前一实例的句柄,从而可以方便地进行判断,但 Windows 95 是抢先式多任务系统,其程序的前一实例句柄恒为零,所以只有另寻其他办法。目前最有效的办法是通过查看是否有相同窗口类名的例程存在来进行判断。下面介绍在Delphi中实现的方法。1、对主窗口程序的改动:在主窗口(即程序创建的第一个窗口)中interface节加入
const
CM_RESTORE = WM_USER + $1000; {自定义的“恢复”消息}
MYAPPNAME = "My Delphi Program";
并在Form的定义的public节中加入
procedure CreateParams(var Params: TCreateParams); override;
Procedure RestoreRequest(var message: TMessage); message CM_RESTORE;
在implementation节中加入
{指定窗口名称}
procedure TForm1.CreateParams(var Params: TCreateParams);
begin
inherited CreateParams(Params);
Params.WinClassName := MYAPPNAME;
end;{处理“恢复”消息}
procedure TForm1.RestoreRequest(var message: TMessage);
begin
if IsIconic(Application.Handle) = TRUE then
Application.Restore
else
Application.BringToFront;
end;经过以上修改,程序的主窗口的类名已经被指定了,这是进行判断的基础。一般在程序刚开始运行的时候进行判断,所以还要对DPR文件进行修改。2、对DPR文件的改动在 uses 节中添加 windows、messages这两个单元加入下列语句,注意两个文件中常量CM_RESTORE和MYAPPNAME的定义必须一致
const
CM_RESTORE = WM_USER + $1000; {自定义的“恢复”消息}
MYAPPNAME = "My Delphi Program";
var
RvHandle : hWnd;将下列语句插到程序最前部(在Application.Initialize之前)RvHandle := FindWindow(MYAPPNAME, NIL);
if RvHandle > 0 then
begin
PostMessage(RvHandle, CM_RESTORE, 0, 0);
Exit;
end;
这段程序的意思是如果找到一个类名相同的窗口,则向该窗口发送一个消息,并退出,而本例中原窗口收到该消息后会自动激活或从图标还原,从而达到了避免二次运行且能自动调出前一例程的目的。