有个程序主窗体是MDI类型的,我想实现个登陆的普通窗体调用它,调用倒是实现了,但是出现在进入主界面后,在的那几菜单调用其他的子窗体时老是提示 cannot create form .no MDI forms are currently active 其中调用的每个子窗体都是动态创建的 只有程序的主操作界面窗体和登陆窗体不是自动创建。
很棘手的问题,因为很少用到MDI窗体,一直没有解决,请教高手指点 啊!!
很棘手的问题,因为很少用到MDI窗体,一直没有解决,请教高手指点 啊!!
解决方案 »
- 我用的是DELPHI+ACCESS进行开发的小型数据库系统,现在碰到的问题是DBGrid中显示的数据与ACCESS数据不符
- excel的空值导入sql
- 如何获取事件来源
- 请问这样的数据库怎样设计?50分献上~~~~
- 如何编程实现u盘等可移动磁盘的自动弹出(卸下)??
- Delphi7三层关于IntraWeb的问题,一定给分!
- ++++++多层系统中,应用服务器的主窗体如何访问远程数据模块上的ADO控件+++++
- 谁有源代码?利用NMFTP对服务器一个文本文件做I/O操作?
- 将mdi型子窗口向主窗口边上拖时,,,主窗口会显示滚动条,怎样将这个滚动条取消或不可视呢?
- 有无朋友喜欢linux+delphi+oracle
- delphi7中可以直接在DBgrids中操作表的数据吗?急,在线等!
- 数据库管理类
2。如果是合着一个exe,那么子窗体创建时要执行父窗体。
1、MDI主窗体不能动态创建,并且必须把MDI设为主窗体
2、登陆窗口需要另外设计
我是这样设计的,看代码:program ZJCMS;uses
Forms,
login in 'login.pas' {Flogin},
main in 'main.pas' {Fmain},
xueji in 'xueji.pas' {Fxueji},
dm in 'dm.pas' {Fdm: TDataModule},
chaxun in 'chaxun.pas' {Fchaxun},
xjxg in 'xjxg.pas' {Fxjxg},
xjzj in 'xjzj.pas' {Fxjzj},
yearmonth in 'yearmonth.pas' {Fyearmonth},
PublicProcedure in 'PublicProcedure.pas',
setzhuanye in 'setzhuanye.pas' {Fsetzhuanye},
setclass in 'setclass.pas' {Fsetclass},
rili in 'rili.pas' {Frili},
weiji in 'weiji.pas' {Fweiji},
liangcao in 'liangcao.pas' {Fliangcao},
bedroom in 'bedroom.pas' {Fbedroom},
fanxiao in 'fanxiao.pas' {FFanxiao},
plxg in 'plxg.pas' {Fplxg},
plzj in 'plzj.pas' {Fplzj},
bed in 'bed.pas' {Fbed},
dormitory in 'dormitory.pas' {Fdormitory},
inroom in 'inroom.pas' {Finroom};{$R *.res}begin
Application.Initialize;
Flogin:=TFlogin.Create(application);
flogin.ShowModal;
flogin.Update;
if not flogin.ok then
application.Terminate
else begin
Application.Title := '于2006年9月设计';
Application.CreateForm(TFmain, Fmain);
Application.CreateForm(TFdm, Fdm);
Application.CreateForm(TFlogin, Flogin);
Application.CreateForm(TFinroom, Finroom);
Application.Run;
end;
end.login.pas单元
unit login;interfaceuses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, StdCtrls, bsSkinBoxCtrls, bsSkinCtrls, bsSkinData,
BusinessSkinForm, DB, DBTables, bsMessages,Inifiles;type
TFlogin = class(TForm)
bsSkinButton1: TbsSkinButton;
bsSkinButton2: TbsSkinButton;
bsSkinLabel1: TbsSkinLabel;
bsSkinLabel2: TbsSkinLabel;
bsSkinPasswordEdit1: TbsSkinPasswordEdit;
bsSkinComboBox1: TbsSkinComboBox;
bsSkinData1: TbsSkinData;
bsCompressedStoredSkin1: TbsCompressedStoredSkin;
bsBusinessSkinForm1: TbsBusinessSkinForm;
Table1: TTable;
bsSkinMessage1: TbsSkinMessage;
procedure FormCreate(Sender: TObject);
procedure FormClose(Sender: TObject; var Action: TCloseAction);
procedure bsSkinButton1Click(Sender: TObject);
procedure FormShow(Sender: TObject);
procedure bsSkinButton2Click(Sender: TObject);
procedure bsSkinPasswordEdit1KeyDown(Sender: TObject; var Key: Word;
Shift: TShiftState);
private
{ Private declarations }
public
{ Public declarations }
ok:boolean;
cuser:string;
end;var
Flogin: TFlogin;implementation{$R *.dfm}
uses
dm;
procedure TFlogin.FormCreate(Sender: TObject);
begin
ok:=false;
end;procedure TFlogin.FormClose(Sender: TObject; var Action: TCloseAction);
begin
if not ok then
application.Terminate;
end;procedure TFlogin.bsSkinButton1Click(Sender: TObject);
var
myini:Tinifile;
begin
table1.Open;
if table1.Locate('user',self.bsSkinComboBox1.Text,[]) then
begin
if self.Table1.FieldValues['Pasword']=self.bsSkinPasswordEdit1.Text then
begin
ok:=true;
cuser:=self.bsSkinComboBox1.Text;
myini:=tinifile.Create(extractfilepath(paramstr(0))+'init.ini');
myini.WriteString('当前登陆用户','cuser',cuser);
self.Close;
end else
self.bsSkinMessage1.MessageDlg('密码错误!',mtWarning,[mbok],0);
end else
begin
self.bsSkinMessage1.MessageDlg('非法用户!',mtWarning,[mbok],0);
end;
end;procedure TFlogin.FormShow(Sender: TObject);
var
i:integer;
begin
self.Table1.Open;
self.Table1.First;
self.bsSkinComboBox1.Items.Clear;
for i:=0 to table1.RecordCount-1 do
begin
self.bsSkinComboBox1.Items.Add(self.Table1.FieldValues['User']);
self.Table1.Next;
end;
self.bsSkinComboBox1.ItemIndex:=0;
self.Table1.Close;
self.bsskinpasswordedit1.SetFocus;
end;procedure TFlogin.bsSkinButton2Click(Sender: TObject);
begin
self.close;
end;procedure TFlogin.bsSkinPasswordEdit1KeyDown(Sender: TObject;
var Key: Word; Shift: TShiftState);
begin
if key=13 then
self.bsSkinButton1Click(self);
end;end.
我只是加了一个普通登陆窗体form以便进入主操作界面,就出现上面的问题了,可以进入,但是问题就是我反映的那样,其中登陆窗体我设置成了主窗体,我就是想达到一个这样简单的效果,
但是又出现了个小问题,因为登录窗体设计一个sql查询 组件是adoquery 当我正常登录时没有问题,但是用户想退出登录窗体不想登录时点击窗体的关闭按钮确老是提示
access violation at address 00405f3e in module' ',read of address 012e0ee8我把adoquery1 屏蔽了进行测试是成功的。问题可能出现在这个地方怎么解决?? 是要添加将adoquery1的链接释放掉代码吗??
我试过其cancel方法的,不行求救 啊 !