📄 suiskin_raize.pas
字号:
////////////////////////////////////////////////////////////////////////////////
//
//
// FileName : SUISkin_Raize.pas
// Creator : Shen Min
// Date : 2005-04-21
// Comment : SUISkin for Raize support
//
// Copyright (c) 2002-2005 Sunisoft
// http://www.sunisoft.com
// Email: support@sunisoft.com
//
////////////////////////////////////////////////////////////////////////////////
//
// How to use:
// Please add this unit to the "uses" clause of the unit where you
// also inlcuded SUISkinEngine unit. And add this unit after SUISkinEngine.
//
// E.g.
//
// unit test;
// interface
// uses ..., SUISkinEngine, SUISkin_Raize;
// ...
// ...
unit SUISkin_Raize;
interface
uses Windows, Messages, Graphics, Controls, Forms,
RzRadChk, RzCommon, RzButton,
SUISkinEngine, SUISkinConsts, SUISkinUtils, SUISkinPublic;
type
TsuiSkinRzRadioButton = class(TsuiSkinControlVCL)
protected
procedure PaintControl(); override;
procedure AfterDefProc(var Message : TMessage); override;
function BeforeDefProc(var Message: TMessage) : Boolean; override;
end;
TsuiSkinRzCheckBox = class(TsuiSkinRzRadioButton)
protected
procedure PaintControl(); override;
end;
TsuiSkinRzButton = class(TsuiSkinControlVCL)
private
m_Downed : Boolean;
procedure CalcBtnLayout(const Buf : TBitmap; out GlyphPos : TPoint; out TextRect : TRect);
procedure PaintBitBtn(const Buf : TBitmap; out TextRect : TRect);
protected
procedure PaintControl(); override;
procedure DoInit(); override;
function BeforeDefProc(var Message: TMessage) : Boolean; override;
procedure MouseUp(); override;
procedure MouseDown(); override;
procedure KeyUp(VKey : Integer); override;
end;
const
SUISKIN_RAIZE_DEF : array [0 .. 2] of TsuiSkinCtrlVCLDef = (
(CtrlClass : TRzRadioButton;
SkinCtrlClass : TsuiSkinRzRadioButton),
(CtrlClass : TRzCheckBox;
SkinCtrlClass : TsuiSkinRzCheckBox),
(CtrlClass : TRzButton;
SkinCtrlClass : TsuiSkinRzButton)
);
implementation
procedure RegisterToSUISkinEngine();
begin
RegisterSkinControlClass(SUISKIN_RAIZE_DEF);
RegisterBorderFilterClass('TRzGroupBar');
RegisterBorderFilterClass('TRzPageControl');
RegisterBorderFilterClass('TRzTabControl');
RegisterBorderFilterClass('TRzTabSheet');
RegisterBorderFilterClass('TRzButton');
RegisterBorderFilterClass('TRzBitBtn');
RegisterBorderFilterClass('TRzGroup');
RegisterDisabledClass('TRzGroup');
RegisterDlgFormClass('TRzShellOpenSaveForm');
RegisterDlgFormClass('TRzSelectFolderForm');
end;
{ TsuiSkinRzRadioButton }
procedure TsuiSkinRzRadioButton.AfterDefProc(var Message: TMessage);
begin
inherited;
if Message.Msg = WM_KILLFOCUS then
PaintControl();
if (Message.Msg = WM_SETFOCUS) then
begin
SendMessage(Message.WParam, SUIM_PAINTCONTROL, 0, 0);
PaintControl();
end;
end;
function TsuiSkinRzRadioButton.BeforeDefProc(
var Message: TMessage): Boolean;
begin
if Message.Msg = WM_ERASEBKGND then
begin
Message.Result := 1;
Result := false;
end
else
Result := true;
end;
procedure TsuiSkinRzRadioButton.PaintControl;
var
VAlignment : TsuiSkinVAlignType;
begin
with TRzRadioButton(m_Control) do
begin
case AlignmentVertical of
avTop : VAlignment := suiSkinTop;
avBottom : VAlignment := suiSkinBottom;
else
VAlignment := suiSkinCenter;
end;
PaintRadioButtonLikeControl(Checked, Enabled, Color, Alignment,
VAlignment, Width, ClientHeight, m_Engine, self, false);
end;
end;
{ TsuiSkinRzCheckBox }
procedure TsuiSkinRzCheckBox.PaintControl;
var
VAlignment : TsuiSkinVAlignType;
begin
with TRzCheckBox(m_Control) do
begin
case AlignmentVertical of
avTop : VAlignment := suiSkinTop;
avBottom : VAlignment := suiSkinBottom;
else
VAlignment := suiSkinCenter;
end;
PaintRadioButtonLikeControl(Checked, Enabled, Color, Alignment,
VAlignment, Width, ClientHeight, m_Engine, self, true);
end;
end;
{ TsuiSkinRzButton }
function TsuiSkinRzButton.BeforeDefProc(var Message: TMessage): Boolean;
var
ps : PAINTSTRUCT;
begin
if Message.Msg = WM_KEYDOWN then
begin
if (Message.WParam = VK_RETURN) or (Message.WParam = VK_SPACE) then
Result := false
else
Result := true;
end
else if (
(Message.Msg = WM_LBUTTONDOWN) or
(Message.Msg = WM_LBUTTONDBLCLK)
) then
begin
Include(m_MouseState, suiSkinMouseDown);
PaintControl();
Result := false;
end
else if Message.Msg = WM_ERASEBKGND then
begin
Message.Result := 1;
Result := false;
end
else if Message.Msg = WM_PAINT then
begin
BeginPaint(GetHandle(), ps);
PaintControl();
EndPaint(GetHandle(), ps);
Result := false;
Message.Result := 0;
end
else
Result := true;
end;
procedure TsuiSkinRzButton.CalcBtnLayout(const Buf: TBitmap;
out GlyphPos: TPoint; out TextRect: TRect);
begin
with TRzBitBtn(m_Control) do
CalcBitBtnLayout(Layout, NumGlyphs, Spacing, Margin, Caption,
Glyph, Buf, Font, m_Control, TextRect, GlyphPos);
end;
procedure TsuiSkinRzButton.DoInit;
begin
inherited;
m_Downed := false;
end;
procedure TsuiSkinRzButton.KeyUp(VKey: Integer);
begin
if (VKey = VK_SPACE) and TWinControl(m_Control).Focused and m_Control.Enabled and m_Engine.RealActive then
TRzButton(m_Control).Click();
end;
procedure TsuiSkinRzButton.MouseDown;
var
ParentForm : TCustomForm;
begin
ParentForm := GetParentForm(m_Control);
if ParentForm = nil then
Exit;
if not FormHasFocus(ParentForm) then
Exit;
if TWinControl(m_Control).CanFocus() and m_Control.Enabled and m_Control.Visible then
try
TWinControl(m_Control).SetFocus();
except end;
m_Downed := true;
end;
procedure TsuiSkinRzButton.MouseUp;
begin
if m_Downed then
TRzButton(m_Control).Click();
m_Downed := false;
end;
procedure TsuiSkinRzButton.PaintBitBtn(const Buf: TBitmap;
out TextRect: TRect);
var
P : TPoint;
begin
CalcBtnLayout(Buf, P, TextRect);
with TRzBitBtn(m_Control) do
PaintBitBtnLikeControl(Enabled, suiSkinMouseDown in m_MouseState,
NumGlyphs, P, Glyph, Buf);
end;
procedure TsuiSkinRzButton.PaintControl;
var
BitBtn : Boolean;
begin
if m_Control is TRzBitBtn then
BitBtn := true
else
BitBtn := false;
with TRzButton(m_Control) do
PaintButtonLikeControl(suiSkinMouseDown in m_MouseState,
suiSkinMouseIn in m_MouseState, BitBtn, m_Control, Font,
m_Engine, self, PaintBitBtn);
end;
initialization
RegisterToSUISkinEngine();
end.
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -