delphi7里面怎么实现禁止最小化
delphi7里面怎么实现禁止最小化(按热键也没法最小化那种)
在delphi的IDE环境中,从form的object inspector工具栏中,点击BorderIcons项左边的+号,展开后将biMinimize的属性改成False。编译后,程序窗口右上角的最小化按钮就不见了. 你可以去买本书看,叫《delphi由入门到开发》里面有。
不必使用任何控制语句! 在delphi的IDE环境中,从form的object inspector工具栏中,点击BorderIcons项左边的+号,展开后将biMinimize的属性改成False。编译后,程序窗口右上角的最小化按钮就变灰(不可用)了。
把user control功能设为false就可以了
我们做多文档应用程序开发时,如果在主From中指定mainMenu时,在主菜单上右角上会自动出现最小化,恢复,关闭按纽,但主菜单放入Toolbar等中时,该三个按纽不会自动出现,因此需要编程实现。 实现原理: 按纽的实现,从Tbitbtn继承下来最理想,但需要过滤TbitBtn的焦点响应消息,使其不能获得焦点状态。
按纽的功能的实现是比较关键的,Delphi中提供了标准action对象(Twindowclose)来实现关闭当前激活的子窗体的功能。 当没有提供最小化及恢复功能的Action,因此有必须编程实现该两个对象分别命名为TWindowMinimize和TWindowRestore;并且编程是十分简单的。
为什么要采用action来实现最小化,恢复和关闭MDI子窗体具体的功能呢,这是因为,Delphi已经实现了其状态的自动变更。 另外,这三按纽必须保持在主界面的位置一直处于右上角。因此,需要在主窗体改变大小的时候,重新计算其位置。
由于只有子窗体最大化时,这三个按纽才能出现,因此,需要在idel事件中去判断当前的子窗体的状态,以便决定这三个按纽是否隐藏或可见。 具体代码如下: unit ufrmMain; interface uses Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms, Dialogs, ActnList, AppEvnts, ImgList, StdCtrls, Buttons, StdActns, Menus, ToolWin, ComCtrls; type //最大最小化按纽类 TMDIButton = class(TBitbtn) private public //由于由Tbitn继承而来,因此需要屏蔽其获得焦点的消息 procedure wndproc(var message: Tmessage); override; end; TWindowMinimize = class(TWindowAction) public //按纽功能,将当前最前的子window状态改为wsMinimize; procedure ExecuteTarget(Target: TObject); override; end; TWindowRestore = class(TWindowAction) public //按纽功能,将当前最前的子window状态改为wsNormal; procedure ExecuteTarget(Target: TObject); override; end; TFrmMain = class(TForm) //保存windows的最小化,恢复,关闭的图标 MDIImageList: TImageList; //当程序不忙时,判断最大,最小化按纽的是否应该隐藏还是可见 ApplicationEvents1: TApplicationEvents; // ActMdiForm: TActionList; ToolBar1: TToolBar; MainMenu1: TMainMenu; N1: TMenuItem; open1: TMenuItem; help1: TMenuItem; procedure FormCreate(Sender: TObject); procedure ApplicationEvents1Idle(Sender: TObject; var Done: Boolean); procedure FormResize(Sender: TObject); procedure FormDestroy(Sender: TObject); procedure open1Click(Sender: TObject); private //模拟mdiform窗体最小化,关闭及恢复按纽对象 BtnMin, BtnRestore, BtnClose: TMDIButton; Windowclose: TWindowClose; WindowMinimize: TWindowMinimize; WindowRestore: TWindowRestore; procedure SetMDIFormActionPos; public { Public declarations } end; var FrmMain: TFrmMain; implementation {$R *。
dfm} procedure TFrmMain。FormCreate(Sender: TObject); begin //建立关闭Button BtnClose := TMDIButton。Create(self); BtnClose。
Visible := false; BtnClose。Parent := self; BtnClose。Width := 16; Btnclose。Height := 15; //建立关闭功能Action WindowClose := TWindowClose。
Create(nil); //指定其图标 WindowClose。ActionList := ActMdiForm; WindowClose。ImageIndex := 2; //关闭; WindowClose。Caption := ''; //将action与button关联 BtnClose。
Action := WindowClose; BtnClose。BringToFront; BtnClose。Visible := false; //建立最小化Button BtnMin := TMDIButton。Create(self); BtnMin。
Visible := false; BtnMin。Parent := self; BtnMin。width := 16; BtnMin。height := 15; //建立最小化功能action WindowMinimize := TWindowMinimize。
Create(nil); //指定其图标 WindowMinimize。ActionList := ActMdiForm; WindowMinimize。Caption := ''; WindowMinimize。ImageIndex := 0; //将action与button关联 BtnMin。
Action := WindowMinimize; //最小化 BtnMin。BringToFront; BtnMin。Visible := false; //建立恢复功能Button BtnRestore := TMDIButton。
Create(self); BtnRestore。Visible := false; BtnRestore。Parent := self; BtnRestore。Width := 16; BtnRestore。height := 15; //建立恢复功能action WindowRestore := TWindowRestore。
Create(nil); //指定其图标 WindowRestore。ActionList := ActMdiForm; WindowRestore。Caption := ''; WindowRestore。ImageIndex := 1; //将action与button关联 BtnRestore。
Action := WindowRestore; BtnRestore。BringToFront; BtnRestore。Visible := false; //设置按纽位置,位置保持在主界面上相对不变 SetMDIFormActionPos; end; procedure TFrmMain。
ApplicationEvents1Idle(Sender: TObject; var Done: Boolean); var show: boolean; begin //当前子窗体的状态为最大化时,显示三个按纽 show := (self。
ActiveMDIChild <> nil) and (self。ActiveMDIChild。WindowState = wsMaximized); if assigned(BtnClose) and BtnClose。Visible <> Show then BtnClose。
Visible := Show; if assigned(BtnMin) and BtnMin。Visible <> Show then BtnMin。Visible := Show; if assigned(BtnRestore) and BtnRestore。
Visible <> Show then BtnRestore。Visible := Show; end; //设置按纽的相对位置不变 procedure TfrmMain。SetMDIFormActionPos; begin if assigned(BtnClose) then begin BtnClose。
left := Width - 26; p := 6; end; if assigned(BtnRestore) then begin BtnRestore。Left := Width - 44; BtnRestore。Top := 6; end; if assigned(BtnMin) then begin BtnMin。
Left := Width - 60; BtnMin。Top := 6; end; end; procedure TFrmMain。FormResize(Sender: TObject); begin SetMDIFormActionPos; end; procedure TFrmMain。
FormDestroy(Sender: TObject); begin //释放资源 if assigned(BtnClose) then begin WindowClose。ActionList := nil; ee; BtnClose。
Free; BtnClose := nil; end; if assigned(BtnRestore) then begin WindowRestore。ActionList := nil; ee; BtnRestore。Free; BtnRestore := nil; end; if assigned(BtnMin) then begin WindowMinimize。
ActionList := nil; ee; BtnMin。Free; BtnMin := nil; end; end; { TWindowRestore } procedure TWindowRestore。ExecuteTarget(Target: TObject); begin inherited; with GetForm(Target) do ActiveMDIChild。
WindowState := wsnormal; end; { TMDIButton } procedure TMDIButton。wndproc(var message: Tmessage); begin if g = wm_SetFocus then exit; inherited wndproc(message); end; { TWindowMinimize } procedure TWindowMinimize。
ExecuteTarget(Target: TObject); begin inherited; with GetForm(Target) do ActiveMDIChild。WindowState := wsMinimized; end; procedure TFrmMain。
open1Click(Sender: TObject); begin with eate(self) do begin formstyle := fsMDIChild; end; end; end。 。
答:在主窗体的CloseQuery事件里,使用messagebox进行提示,根据选择的按钮对Canclose进行设置就可以了 如 begin if messageb...详情>>
答:的意思是找不到指定的文件,你确定你的文件路径正确吗? 另外,调用的部分你用 n(shcmd)试试详情>>