当前位置:网站首页>Delphi MDI appliction documents maximize display, remove buttons such as maximize and minimize
Delphi MDI appliction documents maximize display, remove buttons such as maximize and minimize
2022-08-01 07:32: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 etc. form style
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
// Maximize itself
if Msg.Show then Self.Perform(WM_SYSCOMMAND, SC_MAXIMIZE, nil);
end;
end.
第二种方法:
不动 CHILDWIN 单元, Created in the main window unit TMDIChild When setting related properties on the object,相当简单.
完整代码如下:
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 etc. form style
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.
边栏推荐
- Golang: go get url and form attribute value
- 案例实践 --- Resnet经典卷积神经网络(Mindspore)
- 搜索框字符自动补全
- The log causes these pits in the thread block, you have to prevent
- 选择排序—直接选择排序和堆排序
- Practical training Navicat Chinese and English mode switching
- Chapters 6 and 7 of Huawei Deep Learning Course
- LeetCode240+312+394
- VoLTE基础学习系列 | 企业语音网简述
- Vim三种模式
猜你喜欢
Vim扩展内容
Dart exception details
升级为重量级锁,锁重入会导致锁释放?
LeetCode 415:字符串相加
【HDLBits 刷题】Circuits(1)Combinational Logic
微信小程序请求封装
Golang: go get url and form attribute value
I have three degrees, and I have five faces. I was "confessed" by the interviewer, and I got an offer of 33*15.
我三本学历,五面阿里,被面试官“供”着出来了,拿了33*15的Offer
Dbeaver connect the MySQL database and error Connection refusedconnect processing
随机推荐
特别数的和
LevelSequence源码分析
Create, modify and delete tables
【南瓜书ML】(task4)神经网络中的数学推导(更新ing)
GO错误处理方式
rhcsa 第三次
"By sharing" northwestern university life service | | bytes a second interview on three sides by HR
第02章 MySQL的数据目录【1.MySQL架构篇】【MySQL高级】
POJ2421道路建设题解
【MySQL】操作表DML相关语句
Image lossless compression software which works: try completely free JPG - C image batch finishing compression reduces weight tools | latest JPG batch dressing tools download
小程序全面屏手势配置案例
Srping bean in the life cycle
如何使用Photoshop合成星轨照片,夜空星轨照片后期处理方法
How to generate and configure public key certificate in Alipay
问下 mysql向pg同步多个表的话 有什么好的方案吗?
Zero-code website development tool: WordPress
JVM:运行时数据区-PC寄存器(程序计数器)
请问用flinksql写入数据到clickhouse需要引入什么依赖吗?
nodetype中值1、2、3分别代表什么意思