当前位置:主页>delphi教程/企业管理软件> 文章内容

请问一个多窗口问题,谢谢

发布时间:2010-01-22 | QQ免费站
1楼: 我开发一个多窗口的管理系统,在菜单里有一项wondow,在打开一个窗口时,如何记录在这个wondow选项里,其实delphi里有一个例子,但是我看了也没有看出在哪里加入的,请高手指点一下,谢谢 字串2

2楼: 分数不够,可以加呀,谢谢!
字串5

3楼: 不懂啊!是记录窗口的信息呢,还是怎么的!
字串5

4楼: 如打开一个《进货单》,在wondow菜单项里增加一个《进货单》,也就是记录打开什么窗体了 字串2

5楼: 是insert menu吧?如果是,就动态创建menu就可以了
字串5

6楼: 设置MDIForm的WindowMenu,其中被设置的MenuItem下面不知道为什么必须再加一个MenuItem才正常
字串1

7楼: 对呀,需要动态菜单才行,不知如何做,请高手们指点一下 字串5

8楼: // 创建Pages and PopupMenu 还指Menu的事件 procedure CreatePages(F:Tform;PC:TPageControl;PopupMenu:TPopupMenu;Event:TNotifyEvent); var Pages:TTabsheet; Menu:TMenuItem; begin try TControlShowHint(F); Pages := TTabsheet.Create(Pc); Pages.Caption := F.Caption; Pages.Tag := F.Tag; Pages.PageControl := Pc; Pc.ActivePage := Pages; Menu := TMEnuItem.Create(Application); Menu.Caption := F.Caption; Menu.Tag := F.Tag; Menu.OnClick := Event; ClareMenuChecked(PopupMenu); Menu.Checked := true; PopupMenu.Items[0].Add(Menu); except on e:exception do showMessage(e.Message) end; end;
字串6

9楼: // Destroy pages and popup meuns Function DestroyPages(Sender: Tobject;F:Tform;PC:TPageControl;PopupMenu:TPopupMenu):Integer; var i:integer; begin try for i := PC.PageCount-1 downto 0 do if PC.Pages[i].Tag=(sender as TForm).Tag then PC.Pages[i].Free; for i := PopupMenu.Items[0].Count-1 downto 0 do if PopupMenu.Items[0].Items[i].Tag=(sender as TForm).Tag then PopupMenu.Items[0].Items[i].Free; if Pc.PageCount<>0 then begin for i := F.MDIChildCount-1 downto 0 do if F.MDIChildren[i].Tag=Pc.ActivePage.Tag then //if F.ActiveMDIChild.WindowState=wsMinimized then //多步产生错误 F.MDIChildren[i].BringToFront; ClareMenuChecked(PopupMenu); for i := PopupMenu.Items[0].Count-1 downto 0 do if PopupMenu.Items[0].Items[i].Tag=Pc.ActivePage.Tag then PopupMenu.Items[0].Items[i].Checked := True; end; except on e:Exception do showMessage(e.Message); end; Result := PopupMenu.Items[0].Count; end; 字串3

10楼: 这里是用form,menu的tag属性来判断;在MainMenu 的window菜单项里添加动态创建的菜单就可以了。在关闭子form时调用删除过程就可以删除动态创建的菜单 字串8

11楼: 指定事件就是你切换MDI 子窗口的过程 字串2

12楼: 这样选择 Application.CreateForm(TRptBscdzd, RptBscdzd); RptBscdzd.ShowModal;
字串1

13楼: 如果你的窗口的数量是固定的,可以预先将对应的菜单项加入 属性VISIBLE设为FALSE 到对应窗口打开后,用TAG之类的标志来判断哪一个项目可见VISIBLE设为TRUE
字串5

14楼: 如果你的多个窗口是MDIChild窗口的话,只需要在MainForm中设置WindowMenu就可以了 字串6

15楼: 我的是一个fsMDIForm主窗体,这个主窗体上有一个MainMenu1,其它窗体是fsMDIChild,我想打开一个子窗体《进货单》,在MainMenu1的window菜单项下增加一个《进货单》项,因为增加多个时,可以在这个window菜单项里直接去找 我在看delphi里的demos里的doc例子,也没有写什么代码,不知如何设置的 字串9

16楼: 谢谢各位,扬扬你说得没错,解决了 字串7