📄 childfrm.pas
字号:
unit ChildFrm;
interface
uses
Windows, Messages, SysUtils, Classes, Graphics, Controls,
Forms, Dialogs, StdCtrls, ExtCtrls, Menus,math,db,DBGrids;
type
TChildForm = class(TForm)
PChild: TPanel;
procedure FormClose(Sender: TObject; var Action: TCloseAction);
procedure FormDestroy(Sender: TObject);
procedure WMWindowPosChanging(var msg:TWMWindowPosChanging);
message WM_WINDOWPOSCHANGING;
procedure FormResize(Sender: TObject);
procedure FormKeyDown(Sender: TObject; var Key: Word;
Shift: TShiftState);
private
FAsChild: Boolean;
FTempParent: TWinControl;
procedure CentalPanel;
protected
procedure CreateParams(var Params: TCreateParams); override;
procedure Loaded; override;
public
constructor Create(AOwner: TComponent); overload; override;
constructor Create(AOwner: TComponent; AParent: TWinControl); reintroduce; overload;
// The method below must be overriden to return either the main menu
// of the form, or nil.
function GetFormMenu: TMainMenu; virtual; abstract;
function CanChange: Boolean; virtual;
end;
var
ChildForm: TChildForm;
implementation
{$R *.DFM}
procedure TChildForm.CentalPanel;
begin
if PChild.Width < ClientWidth then
PChild.Left := (ClientWidth - PChild.Width ) div 2
else
PChild.Left := 0;
if PChild.Height <ClientHeight then
PChild.Top :=(ClientHeight - PChild.Height ) div 2
else
PChild.Top := 0;
end;
procedure TChildForm.WMWindowPosChanging(var msg:TWMWindowPosChanging);
var
CaptionHeight:integer;
begin
CaptionHeight := GetSystemMetrics(SM_CYCAPTION);
msg.WindowPos ^.cx :=Max(msg.WindowPos ^.cx,PChild.Width+20);
msg.WindowPos ^.cy :=Max(msg.WindowPos ^.cy,PChild.Height+20+CaptionHeight);
inherited;
end;
constructor TChildForm.Create(AOwner: TComponent);
begin
FAsChild := False;
inherited Create(AOwner);
end;
constructor TChildForm.Create(AOwner: TComponent; AParent: TWinControl);
begin
FAsChild := True;
FTempParent := aParent;
inherited Create(AOwner);
end;
procedure TChildForm.Loaded;
begin
inherited;
if FAsChild then
begin
align := alClient;
BorderStyle := bsNone;
BorderIcons := [];
Parent := FTempParent;
Position := poDefault;
end;
end;
procedure TChildForm.CreateParams(var Params: TCreateParams);
Begin
Inherited CreateParams(Params);
if FAsChild then
Params.Style := Params.Style or WS_CHILD;
end;
function TChildForm.CanChange: Boolean;
begin
Result := True;
end;
procedure TChildForm.FormClose(Sender: TObject; var Action: TCloseAction);
begin
action :=cafree;
end;
procedure TChildForm.FormDestroy(Sender: TObject);
begin
ChildForm :=nil;
end;
procedure TChildForm.FormResize(Sender: TObject);
begin
CentalPanel;
end;
procedure TChildForm.FormKeyDown(Sender: TObject; var Key: Word;
Shift: TShiftState);
begin
if not (ActiveControl is TDBGrid) then
case Key of
VK_ESCAPE: Close;
VK_RETURN:
begin
if Shift = [ssShift] then
Perform(WM_NEXTDLGCTL, 1, 0)
else
Perform(WM_NEXTDLGCTL, 0, 0);
end;
VK_F4, VK_DOWN:
if screen.ActiveControl is TCustomEdit then
if (Key = VK_F4) or ((Key = VK_DOWN) and (Shift = [ssAlt])) then
TCustomEdit(screen.ActiveControl).Perform(WM_LBUTTONDBLCLK, 0, 0);
end;
end;
end.
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -