当前位置:网站首页>Delphi MDI appliction 文档最大化显示、去掉最大化最小化等按钮
Delphi MDI appliction 文档最大化显示、去掉最大化最小化等按钮
2022-08-01 07:18:00 【kim-2006】
效果图

第一种方法:
修改 CHILDWIN 单元, 太简单了, 不废话, 完整代码如下:
unit CHILDWIN;
interface
uses Winapi.Windows, System.Classes, Vcl.Graphics, Vcl.Forms, Vcl.Controls,
Vcl.StdCtrls, Winapi.Messages, System.SysUtils;
type
TMDIChild = class(TForm)
Memo1: TMemo;
procedure WMShowWindow(var Msg: TWMShowWindow); message WM_SHOWWINDOW;
procedure FormClose(Sender: TObject; var Action: TCloseAction);
// 重写 CreateParams
procedure CreateParams(var Params: TCreateParams); override;
private
{ Private declarations }
public
{ Public declarations }
end;
implementation
{$R *.dfm}
procedure TMDIChild.CreateParams(var Params: TCreateParams);
begin
inherited;
// 去掉 WS_BORDER WS_OVERLAPPEDWINDOW 等窗体样式
Params.Style := Params.Style and not WS_OVERLAPPEDWINDOW or WS_BORDER;
end;
procedure TMDIChild.FormClose(Sender: TObject; var Action: TCloseAction);
begin
Action := caFree;
end;
procedure TMDIChild.WMShowWindow(var Msg: TWMShowWindow);
begin
// 自身最大化显示
if Msg.Show then Self.Perform(WM_SYSCOMMAND, SC_MAXIMIZE, nil);
end;
end.第二种方法:
不动 CHILDWIN 单元, 在主窗口单元中创建 TMDIChild 对象时设置相关属性,相当简单。
完整代码如下:
unit MAIN;
interface
uses Winapi.Windows, System.SysUtils, System.Classes, Vcl.Graphics, Vcl.Forms,
Vcl.Controls, Vcl.Menus, Vcl.StdCtrls, Vcl.Dialogs, Vcl.Buttons, Winapi.Messages,
Vcl.ExtCtrls, Vcl.ComCtrls, Vcl.StdActns, Vcl.ActnList, Vcl.ToolWin,
Vcl.ImgList, System.ImageList, System.Actions;
type
TMainForm = class(TForm)
MainMenu1: TMainMenu;
File1: TMenuItem;
FileNewItem: TMenuItem;
FileOpenItem: TMenuItem;
FileCloseItem: TMenuItem;
Window1: TMenuItem;
Help1: TMenuItem;
N1: TMenuItem;
FileExitItem: TMenuItem;
WindowCascadeItem: TMenuItem;
WindowTileItem: TMenuItem;
WindowArrangeItem: TMenuItem;
HelpAboutItem: TMenuItem;
OpenDialog: TOpenDialog;
FileSaveItem: TMenuItem;
FileSaveAsItem: TMenuItem;
Edit1: TMenuItem;
CutItem: TMenuItem;
CopyItem: TMenuItem;
PasteItem: TMenuItem;
WindowMinimizeItem: TMenuItem;
StatusBar: TStatusBar;
ActionList1: TActionList;
EditCut1: TEditCut;
EditCopy1: TEditCopy;
EditPaste1: TEditPaste;
FileNew1: TAction;
FileSave1: TAction;
FileExit1: TAction;
FileOpen1: TAction;
FileSaveAs1: TAction;
WindowCascade1: TWindowCascade;
WindowTileHorizontal1: TWindowTileHorizontal;
WindowArrangeAll1: TWindowArrange;
WindowMinimizeAll1: TWindowMinimizeAll;
HelpAbout1: TAction;
FileClose1: TWindowClose;
WindowTileVertical1: TWindowTileVertical;
WindowTileItem2: TMenuItem;
ToolBar2: TToolBar;
ToolButton1: TToolButton;
ToolButton2: TToolButton;
ToolButton3: TToolButton;
ToolButton4: TToolButton;
ToolButton5: TToolButton;
ToolButton6: TToolButton;
ToolButton9: TToolButton;
ToolButton7: TToolButton;
ToolButton8: TToolButton;
ToolButton10: TToolButton;
ToolButton11: TToolButton;
ImageList1: TImageList;
procedure FileNew1Execute(Sender: TObject);
procedure FileOpen1Execute(Sender: TObject);
procedure HelpAbout1Execute(Sender: TObject);
procedure FileExit1Execute(Sender: TObject);
private
{ Private declarations }
procedure CreateMDIChild(const Name: string);
public
{ Public declarations }
end;
var
MainForm: TMainForm;
implementation
{$R *.dfm}
uses CHILDWIN, About;
procedure TMainForm.CreateMDIChild(const Name: string);
var
Child: TMDIChild;
begin
{ create a new MDI child window }
Child := TMDIChild.Create(Application);
Child.Caption := Name;
if FileExists(Name) then Child.Memo1.Lines.LoadFromFile(Name);
// 去掉 WS_BORDER WS_OVERLAPPEDWINDOW 等窗体样式
var style:= GetWindowLong(Child.Handle, GWL_STYLE);
if style >0 then SetWindowLong(Child.Handle, GWL_STYLE, style and not (WS_OVERLAPPEDWINDOW + WS_BORDER));
// 最大化显示
SendMessage(Child.Handle, WM_SYSCOMMAND, SC_MAXIMIZE, 0);
// 最大化显示
//ShowWindow(Child.Handle, SW_SHOWMAXIMIZED);
// 最大化显示
//Child.perform(WM_SYSCOMMAND, SC_MAXIMIZE, nil);
end;
procedure TMainForm.FileNew1Execute(Sender: TObject);
begin
CreateMDIChild('NONAME' + IntToStr(MDIChildCount + 1));
end;
procedure TMainForm.FileOpen1Execute(Sender: TObject);
begin
if OpenDialog.Execute then
CreateMDIChild(OpenDialog.FileName);
end;
procedure TMainForm.HelpAbout1Execute(Sender: TObject);
begin
AboutBox.ShowModal;
end;
procedure TMainForm.FileExit1Execute(Sender: TObject);
begin
Close;
end;
end.边栏推荐
猜你喜欢

Dbeaver connect the MySQL database and error Connection refusedconnect processing

Image lossless compression software which works: try completely free JPG - C image batch finishing compression reduces weight tools | latest JPG batch dressing tools download

目标检测概述-上篇

MVVM project development (commodity management system 1)

从购买服务器到网站搭建成功保姆级教程~超详细

太厉害了,终于有人能把文件上传漏洞讲的明明白白了

日志导致线程Block的这些坑,你不得不防

The log causes these pits in the thread block, you have to prevent

特殊的日子,值得纪念

Practical training Navicat Chinese and English mode switching
随机推荐
Golang: go to connect and use mysql
数据机构----线性表之单向链表
mysql中添加字段的相关问题
POJ1287联网题解
响应式织梦模板园林景观类网站
JVM: Runtime Data Area - PC Register (Program Counter)
Dart 异常详解
Create, modify and delete tables
C语言学习概览(二)
微信小程序请求封装
MATLAB program design and application of MATLAB 2.5
关于App不同方式更新的测试点归纳
Detailed explanation of the crawler framework Scrapy
Generate pictures based on the content of the specified area and share them with a summary
并发编程13-JUC之CountDownLatch
拳头游戏免版权音乐下载,英雄联盟无版权音乐,可用于视频创作、直播
监听父元素宽高,自适应插件大小
Zero-code website development tool: WordPress
旋度(7)连接失败localhost8080;连接拒绝了
Golang: go get url and form attribute value