如何保证一个MDI子窗体只显示一次?(50分)

  • 主题发起人 主题发起人 zhcg
  • 开始时间 开始时间
Z

zhcg

Unregistered / Unconfirmed
GUEST, unregistred user!
哪位大侠能告诉我一个简单有效的方法?多谢!
另外发布一个数据库程序后,为什么只能手动设置一个BDE别名后才能正常使用,如何自动
设置?我希望找一个简单有效的方法。多谢你们了。
 
我所说的第一个问题是,一个子窗体打开后,再打开时,会提示该子窗体已经打开。谢谢!
 
留下EMAIL。我有列子。
数据库发布,看一下installshield安装帮助,里面有如何设置数据库别名的设置。
 
或者用justone控件,修改一下就达到目的了。
 
procedure FOpenForm(FormClass: TFormClass; var fm; AOwner:TComponent;ShowType:Boolean);overload
var
i: integer;
Child:TForm;
begin
for i := 0 to Screen.FormCount -1 do
if Screen.Forms.ClassType=FormClass then
begin
Child:=Screen.Forms;
if Child.WindowState=wsMinimized then
ShowWindow(Child.handle,SW_SHOWNORMAL)
else
ShowWindow(Child.handle,SW_SHOWNA);
if (not Child.Visible) then Child.Visible:=True;
Child.BringToFront;
Child.Setfocus;
TForm(fm):=Child;
exit;
end;
Child:=TForm(FormClass.NewInstance);
TForm(fm):=Child;
Child.Create(AOwner);
Child.showModal;
end;
 
我所说的第一个问题是,一个子窗体打开后,再打开时,会提示该子窗体已经打开。--
====简单,假如子窗体名:wincardre,在生成窗体时:

if WinCadre = Nil then
WinCadre := TWinCadre.Create(Self)
else
WinCadre.BringToFront;{showmessage('打开了!')}

另外发布一个数据库程序后,为什么只能手动设置一个BDE别名后才能正常使用,如何自动
设置?我希望找一个简单有效的方法。
====看TDatabase控件吧!
 
如果是文件型数据库如DBF,DB,别名可以设置为路径,一般发布是数据放在可执行文件下的
某个目录,再在程序中指定数据库路径,如果是SQL Server之类的数据库可以在程序中创建
BDE别名,希望有所帮助!
 
将子窗口从 Project->Options->Auto Create Forms 中去掉
自己创建窗口
if not Assigned(YourForms) then
YourForms:=TYourForms.Create(Application)
else
ShowMessage('窗口已经创建');
YourForms.Show;
-------------------------------------------------------
别忘了在FormClose中
Action:=caFree;

在Form Destroy 中
YourForms:=nil;

 
第二个问题:

数据库别名的方便之是在程序调试时。但做成程序后很麻烦所以建议不用别名。

我一般是这样做的:

Table1.DatabaseName:=ExtractFilePath (Application.ExeName)+'data';//data是放数据库的目录
Table1.TableName:='mydb.db';

然后Open , Close就行了!
 
谢谢大家,这个问题在大家的提示下,已经得到解决,两次对你们表示万分感激!
 
后退
顶部