如何解决Delphi 10.3多种MDI表单
在这里得到了两个都设置为fsMDIForm的窗体。还有两个子窗体fsMDIChild。
当我运行应用程序时,看起来好像正确创建了两个父窗体,因为我可以看到子窗体将出现的空间。
但是由于某种原因,从子MID主窗体创建的第二个MDI窗体没有显示,而是在主MDI窗体上创建了它们。
这是第二个MDI表单的创建方式
procedure TMain.menChefReportClick(Sender: TObject);
begin
Timer1.Enabled:=false;
CloseAllMDIChildren;
Application.CreateForm(TChefReport,ChefReport);
ChefReport.PopupParent:=Main;
ChefReport.ShowModal;
ChefReport.Free;
ChefReport:=nil;
OpenAllMDIChildren;
Timer1.Enabled:=true;
end;
这将关闭所有主窗体的MDI子级,因为我显示的是实时数据,只要我在第二个MDI窗体中就不需要。
在第二个MDI表单上,我试图创建像这样的子级:
procedure TChefReport.OpenAllMDIChildren;
var AQuery : TADOQuery;
Y : integer;
begin
AQuery := TADOQuery.Create(nil);
try
AQuery.Connection:=dmConnection.XLR;
AQuery.LockType:=ltReadOnly;
AQuery.sql.Clear;
AQuery.sql.Add('select Line from LINE_SETTINGS order by line');
AQuery.Open;
AQuery.disableControls;
Y:=0;
while not AQuery.Eof do
begin
Application.CreateForm(TChefReportLine,ChefReportLine);
ChefReportLine.Caption:='Linie Nr. '+AQuery.FieldByName('Line').Asstring;
ChefReportLine.FLine:=AQuery.FieldByName('Line').AsInteger;
ChefReportLine.Top:=0;
ChefReportLine.Left:=0;
Y:=Y+ChefReportLine.Height;
AQuery.Next;
end;
finally
AQuery.Free;
end;
end;
它确实创建了它们。但不幸的是在MDI主表单上。
是否可以以及如何在第二个MDI表单(ChefReport)上创建它们?
谢谢!
更新
解决方案在这里:Allow multiple MDI Parent Forms on same Application
然后我像这样创建子代:
procedure TChefReport.OpenAllMDIChildren;
var AQuery : TADOQuery;
Y : integer;
ChefReportLine : TChefReportLine;
begin
AQuery := TADOQuery.Create(nil);
try
AQuery.Connection:=dmConnection.XLR;
AQuery.LockType:=ltReadOnly;
AQuery.sql.Clear;
AQuery.sql.Add('select Line from LINE_SETTINGS order by line');
AQuery.Open;
AQuery.disableControls;
Y:=0;
while not AQuery.Eof do
begin
ChefReportLine := TChefReportLine.Create(ChefReport);
ChefReportLine.Caption:='Linie Nr. '+AQuery.FieldByName('Line').Asstring;
ChefReportLine.FLine:=AQuery.FieldByName('Line').AsInteger;
ChefReportLine.Top:=Y;
ChefReportLine.Left:=0;
Y:=Y+ChefReportLine.Height;
AQuery.Next;
end;
finally
AQuery.Free;
end;
end;
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。