11.04.2019, 07:55
|
Прохожий
|
|
Регистрация: 27.12.2017
Сообщения: 30
Версия Delphi: 10.1
Репутация: 10
|
|
Главная форма
Код:
***
public
procedure OpenFrame(FrameType: TacFrame; Animated: boolean);
***
procedure TMainForm.OpenFrame(FrameType: TacFrame; Animated: boolean);
var
OldFrame: TFrame;
begin
if not (FormData.CurrentMenuFrame is FrameType) then begin
OldFrame := FormData.CurrentMenuFrame;
if Animated and FormData.sSkinManager1.Effects.AllowAnimation then
PrepareForAnimation(sPanel3, atcRunup);
FormData.CurrentMenuFrame := FrameType.Create(Self);
FormData.CurrentMenuFrame.Align := {alTop;//}alClient;
FormData.CurrentMenuFrame.Parent := sPanel3;
FreeAndNil(OldFrame);
if Animated and FormData.sSkinManager1.Effects.AllowAnimation then
AnimShowControl(sPanel3, 50, 255, atcRunup);
end;
end;
FormData
Код:
unit UnitData;
interface
uses
SysUtils, Classes, Forms, ImgList, Controls,
acAlphaImageList, sSkinManager, sSpeedButton, acAlphaHints;
type
TacFrame = class of TFrame;
TFormData = class(TDataModule)
sSkinManager1: TsSkinManager;
sCharImageList1: TsCharImageList;
sAlphaImageList1: TsAlphaImageList;
sAlphaHints1: TsAlphaHints;
public
CurrentMenuFrame: TFrame;
CurrentMenuBtn: TsSpeedButton;
CurrentWorkFrame: TFrame;
CurrentWorkBtn: TsSpeedButton;
procedure OpenFrame(FrameType: TacFrame; SelectBtn: TsSpeedButton);
procedure PaintSelRect(Bmp: TBitmap);
end;
var
FormData: TFormData;
implementation
{$R *.dfm}
uses sConst, sCommonData, sGraphUtils, sPanel, sVCLUtils, MainUnit;
procedure TFormData.OpenFrame(FrameType: TacFrame; SelectBtn: TsSpeedButton);
var
OldFrame: TFrame;
begin
if (FrameType <> nil) and (CurrentWorkBtn <> SelectBtn) then begin
MainForm.sSplitView2.SideShadow.Mode := ssmInternal;
MainForm.PanelMain.SideShadow.Mode := ssmNone;
MainForm.PanelMain.SkinData.SkinSection := '';
if CurrentWorkBtn <> nil then
CurrentWorkBtn.SkinData.SkinSection := 'LBTN';
CurrentWorkBtn := SelectBtn;
CurrentWorkBtn.SkinData.SkinSection := 'SELBTN';
if not (FormData.CurrentWorkFrame is FrameType) then begin
OldFrame := FormData.CurrentWorkFrame;
if sSkinManager1.Effects.AllowAnimation then
PrepareForAnimation(MainForm.PanelContainer, atcRunup);
FormData.CurrentWorkFrame := FrameType.Create(Application);
FormData.CurrentWorkFrame.Align := alClient;
FormData.CurrentWorkFrame.Parent := MainForm.PanelContainer;
FreeAndNil(OldFrame);
if sSkinManager1.Effects.AllowAnimation then
AnimShowControl(MainForm.PanelContainer, 50, 255, atcRunup);
end;
end
else begin
if CurrentWorkBtn <> nil then begin
CurrentWorkBtn.SkinData.SkinSection := 'LBTN';
CurrentWorkBtn := nil;
end;
if FormData.CurrentWorkFrame <> nil then
FreeAndNil(FormData.CurrentWorkFrame);
MainForm.sSplitView2.SideShadow.Mode := ssmNone;
MainForm.PanelMain.SideShadow.Mode := ssmInternal;
MainForm.PanelMain.SkinData.SkinSection := 'TRANSPARENT';
end;
end;
Открытие фрейма
Код:
type
TFrameAccount = class(TFrame)
sSpeedButton1: TsSpeedButton;
procedure sSpeedButton1Click(Sender: TObject);
public
destructor Destroy; override;
end;
implementation
{$R *.dfm}
uses MainUnit, UnitData, UnitFrameEmpty, UnitFrameAccountEdit,
UnitFrameAccountCreate;
destructor TFrameAccount.Destroy;
begin
FormData.CurrentWorkBtn := nil;
inherited;
end;
procedure TFrameAccount.sSpeedButton1Click(Sender: TObject);
begin
FormData.OpenFrame(TFrameAccountCreate, TsSpeedButton(Sender));
end;
end.
|