📄 iwtmsmenus.pas
字号:
{***************************************************************************}
{ TMS IntraWeb Component Pack Pro }
{ for Delphi & C++Builder }
{ version 2.2 }
{ }
{ written by TMS Software }
{ copyright ?2002 - 2004 }
{ Email : info@tmssoftware.com }
{ Web : http://www.tmssoftware.com }
{ }
{ The source code is given as is. The author is not responsible }
{ for any possible damage done due to the use of this code. }
{ The component can be freely used in any application. The complete }
{ source code remains property of the author and may not be distributed, }
{ published, given or sold in any form as such. No parts of the source }
{ code can be included in any other component or application without }
{ written authorization of the author. }
{***************************************************************************}
unit IWTMSMenus;
{$I TMSDEFS.INC}
interface
{$R tmsiwmenuxp.res}
uses
{$IFDEF LINUX}
QControls, QGraphics, QIWPicCntnr, QMenus,
{$ELSE}
Controls, Windows, Graphics, IWPicCntnr, IWTMSImg, Menus,
{$ENDIF}
{$IFDEF DELPHI6_LVL}
Types,
{$ENDIF}
{$IFDEF TMSIW51}
IWColor,
{$ENDIF}
Classes, IWControl, IWTypes, SysUtils, IWHTMLTag,
IWCompEdit, IWCompLabel, IWCompCheckBox, IWExtCtrls, IWTMSBase,
dialogs, IWFont
{$IFDEF TMSIW6}
, IWRenderContext
{$ENDIF}
;
type
TStaticMenuLayout = (smlVertical,smlHorizontal);
TIWMenuClickEvent = procedure(Sender: TObject; ItemIdx: Integer) of object;
TTIWGradientDirection = (gdHorizontal, gdVertical);
TTIWFade = (fdNone,fdSlow,fdMedium,fdFast);
// TTIWTextAlign = (taLeft,taCenter,taRight);
TTIWStaticMenu = class;
TTIWStaticMenuItem = class(TCollectionItem)
private
FCaption: string;
FClientClick: string;
FFixed: Boolean;
procedure SetCaption(Value: string);
protected
public
procedure Assign(Source: TPersistent); override;
published
property Caption: string read FCaption write SetCaption;
property ClientClick: string read FClientClick write FClientClick;
property Fixed: Boolean read FFixed write FFixed;
end;
TTIWStaticMenuItems = class(TCollection)
private
FOwner: TTIWStaticMenu;
function GetItem(Index: Integer): TTIWStaticMenuItem;
procedure SetItem(Index: Integer; const Value: TTIWStaticMenuItem);
public
function Add: TTIWStaticMenuItem;
function Insert(index: Integer): TTIWStaticMenuItem;
property Items[Index: Integer]: TTIWStaticMenuItem read GetItem write SetItem; default;
constructor Create(AOwner: TTIWStaticMenu);
end;
TTIWStaticMenu = class(TIWControl)
private
ic: TIWHTMLPictureCache;
FItems: TTIWStaticMenuItems;
FColor: TIWColor;
FColorTo: TIWColor;
FColorGradientDirection: TTIWGradientDirection;
FHoverColor: TIWColor;
FHoverColorTo: TIWColor;
FHoverColorGradientDirection: TTIWGradientDirection;
FHoverFontColor: TIWColor;
FLayout: TStaticMenuLayout;
FBorderColor: TIWColor;
FHoverBorderColor: TIWColor;
FHoverBorderShadow: Boolean;
FDesignMode: Boolean;
FOnClick: TIWMenuClickEvent;
FDesignLive: Boolean;
FBaseDir: string;
FItemHeight: integer;
FShowSelected: Boolean;
FSelectedIndex: Integer;
FSelectedColor: TIWColor;
FSelectedColorTo: TIWColor;
FSelectedColorGradientDirection: TTIWGradientDirection;
FSelectedFontColor: TIWColor;
FFixedColor: TIWColor;
FFixedColorTo: TIWColor;
FFixedColorGradientDirection: TTIWGradientDirection;
FFixedFontColor: TIWColor;
FFixedBorderColor: TIWColor;
procedure SetColor(const Value: TIWColor);
procedure SetColorTo(const Value: TIWColor);
procedure SetHoverColor(const Value: TIWColor);
procedure SetHoverColorTo(const Value: TIWColor);
procedure SetLayout(const Value: TStaticMenuLayout);
procedure SetBorderColor(const Value: TIWColor);
procedure SetHoverBorderColor(const Value: TIWColor);
{$IFNDEF TMSIW71}
procedure SetDesignMode(const Value: Boolean);
{$ENDIF}
procedure SetBaseDir(const Value: string);
procedure SetDesignLive(const Value: Boolean);
procedure SetItemHeight(const Value: Integer);
protected
procedure Submit(const AValue: string); override;
procedure ItemsChanged(Sender: TObject);
function HTMLClr(Color: TIWColor): string;
public
{$IFDEF TMSIW6}
procedure IWPaint; override;
function RenderHTML(AContext: TIWBaseComponentContext): TIWHTMLTag; override;
{$ELSE}
procedure Paint; override;
function RenderHTML: TIWHTMLTag; override;
{$ENDIF}
procedure SetValue(const value:string); override;
constructor Create(AOwner: TComponent); override;
destructor Destroy; override;
published
property BaseDir: string read FBaseDir write SetBaseDir;
property DesignLive: Boolean read FDesignLive write SetDesignLive;
property BorderColor: TIWColor read FBorderColor write SetBorderColor;
property Color: TIWColor read FColor write SetColor default clWhite;
property ColorTo: TIWColor read FColorTo write SetColorTo default clNone;
property ColorGradientDirection: TTIWGradientDirection read FColorGradientDirection write FColorGradientDirection;
{$IFNDEF TMSIW71}
property DesignMode: Boolean read FDesignMode write SetDesignMode;
{$ENDIF}
property Font;
property HoverBorderColor: TIWColor read FHoverBorderColor write SetHoverBorderColor;
property HoverBorderShadow: Boolean read FHoverBorderShadow write FHoverBorderShadow default false;
property HoverColor: TIWColor read FHoverColor write SetHoverColor;
property HoverColorTo: TIWColor read FHoverColorTo write SetHoverColorTo;
property HoverColorGradientDirection: TTIWGradientDirection read FHoverColorGradientDirection write FHoverColorGradientDirection;
property HoverFontColor: TIWColor read FHoverFontColor write FHoverFontColor;
property ItemHeight : integer read FItemHeight write SetItemHeight;
property Items: TTIWStaticMenuItems read FItems write FItems;
property Layout: TStaticMenuLayout read FLayout write SetLayout;
property OnClick: TIWMenuClickEvent read FOnClick write FOnClick;
property ShowSelected: Boolean read FShowSelected write FShowSelected default false;
property SelectedIndex: Integer read FSelectedIndex write FSelectedIndex default -1;
property SelectedColor: TIWColor read FSelectedColor write FSelectedColor default clInfoBk;
property SelectedColorTo: TIWColor read FSelectedColorTo write FSelectedColorTo default clNone;
property SelectedColorGradientDirection: TTIWGradientDirection read FSelectedColorGradientDirection write FSelectedColorGradientDirection default gdHorizontal;
property SelectedFontColor: TIWColor read FSelectedFontColor write FSelectedFontColor default clBlack;
property FixedColor: TIWColor read FFixedColor write FFixedColor default clWhite;
property FixedColorTo: TIWColor read FFixedColorTo write FFixedColorTo default clNone;
property FixedColorGradientDirection: TTIWGradientDirection read FFixedColorGradientDirection write FFixedColorGradientDirection default gdHorizontal;
property FixedFontColor: TIWColor read FFixedFontColor write FFixedFontColor default clBlack;
property FixedBorderColor: TIWColor read FFixedBorderColor write FFixedBorderColor default clNone;
end;
TMenuClientEvent = class(TCollectionItem)
private
FItemName: string;
FItemScript: string;
public
constructor Create(Collection: TCollection); override;
destructor Destroy; override;
procedure Assign(source: TPersistent); override;
published
property ItemName: string read FItemName write FItemName;
property ItemScript: string read FItemScript write FItemScript;
end;
TMenuClientEvents = class(TCollection)
private
function GetItem(Index: Integer): TMenuClientEvent;
procedure SetItem(Index: Integer; const Value: TMenuClientEvent);
public
constructor Create;
function Add: TMenuClientEvent;
function Insert(index: Integer): TMenuClientEvent;
function IndexOf(ItemName: string): Integer;
property Items[Index: Integer]: TMenuClientEvent read GetItem write SetItem; default;
end;
TIWMenuOpen = (moHover,moClick);
TTIWMainMenu = class(TIWControl)
private
FAutoHiding : Boolean;
FBackgroundImage: TIPicture;
FBorder: Boolean;
FBorderColor: TIWColor;
FClientEvents: TMenuClientEvents;
FFade : TTIWFade;
FHoverBorderColor: TIWColor;
FHoverColor: TIWColor;
FHoverColorTo : TIWColor;
FHoverFontColor: TIWColor;
FHoverGradientDirection : TTIWGradientDirection;
FIconBackgroundColor : TIWColor;
FIconBackgroundColorTo : TIWColor;
FItemColor : TIWColor;
FItemHeight : Integer;
FItemSpacing: Integer;
FMenu: TMenu;
FOpacity : Integer;
FOpen: TIWMenuOpen;
FRootItemBorderColor : TIWColor;
FRootItemBorderHoverColor : TIWColor;
FRootItemBorderWidth : integer;
FRootItemColor : TIWColor;
FRootItemColorTo : TIWColor;
FRootItemHoverColor : TIWColor;
FRootItemHoverColorTo : TIWColor;
FRootItemDownColor : TIWColor;
FRootItemDownColorTo : TIWColor;
FRootItemFont : TIWFont;
FRootItemGradientDirection : TTIWGradientDirection;
FRootItemHoverFontColor : TIWColor;
FSeparatorColor : TIWColor;
FShowIcons : Boolean;
FSubMenuGlyph: TIPicture;
FTextAlignment : TAlignment;
FUseBorder : Boolean;
FDesignMode: Boolean;
arMenuId : TStringList;
arMenuName : TStringList;
Tiers : TStringList;
MenuCode : string;
Level : integer;
AutoNumber : integer;
FCacheDir : string;
procedure BackgroundChanged(Sender: TObject);
procedure SetAutoHiding(const Value : boolean);
procedure SetBackgroundImage(const Value: TIPicture);
{$IFNDEF TMSIW71}
procedure SetDesignMode(const Value: Boolean);
{$ENDIF}
procedure SetFade(const Value : TTIWFade);
procedure SetHoverGradientDirection(const Value : TTIWGradientDirection);
procedure SetIconBackgroundColor(const Value : TIWColor);
procedure SetIconBackgroundColorTo(const Value : TIWColor);
procedure SetItemColor(const Value : TIWColor);
procedure SetItemHeight(const Value : Integer);
procedure SetMenu(const Value: TMenu);
procedure SetOpacity(const Value : Integer);
procedure SetRootItemBorderColor(const Value : TIWColor);
procedure SetRootItemBorderHoverColor(const Value : TIWColor);
procedure SetRootItemBorderWidth(const Value : integer);
procedure SetRootItemColor(const Value: TIWColor);
procedure SetRootItemColorTo(const Value: TIWColor);
procedure SetRootItemDownColor(const Value : TIWColor);
procedure SetRootItemDownColorTo(const Value : TIWColor);
procedure SetRootItemFont(const Value : TIWFont);
procedure SetRootItemGradientDirection(const Value : TTIWGradientDirection);
procedure SetRootItemHoverColor(const Value : TIWColor);
procedure SetRootItemHoverColorTo(const Value : TIWColor);
procedure SetRootItemHoverFontColor(const Value : TIWColor);
procedure SetTextAlignment(const Value : TAlignment);
procedure SetSeparatorColor(const Value: TIWColor);
procedure SetSubMenuGlyph(const Value: TIPicture);
procedure SetUseBorder(const value : boolean);
function FontToCSS(AFont : TIWFont; FromRoot : Boolean) : string;
function TextAlignToStr(Alignment : TAlignment) : string;
function MakeMenu(AName : string; AItem : TMenuItem) : string;
procedure CacheDir;
procedure DrawGradient(Canvas: TCanvas; FromColor, ToColor: TIWColor; Steps: Integer; r:TRect; Direction: Boolean);
protected
procedure Submit(const AValue: string); override;
procedure SetValue(const value:string); override;
function HTMLClr(Color: TIWColor): string;
function HTMLClrEx(Color: TIWColor): string;
{$IFDEF TMSIW51}
function CursorToHtml(Cursor : TIWCursor) : string;
{$ELSE}
function CursorToHtml(Cursor : TCursor) : string;
{$ENDIF}
function GradDirToStr(GradDir : TTIWGradientDirection) : string;
function FadeToStr(FadeSpeed : TTIWFade) : string;
public
{$IFDEF TMSIW6}
procedure IWPaint; override;
function RenderHTML(AContext: TIWBaseComponentContext): TIWHTMLTag; override;
{$ELSE}
procedure Paint; override;
function RenderHTML: TIWHTMLTag; override;
{$ENDIF}
constructor Create(AOwner: TComponent); override;
destructor Destroy; override;
procedure Invalidate; override;
published
property AutoHiding : boolean read FAutoHiding write SetAutoHiding;
property BackgroundImage: TIPicture read FBackgroundImage write SetBackgroundImage;
property Border: Boolean read FBorder write FBorder;
property BorderColor: TIWColor read FBorderColor write FBorderColor;
property Caption;
property ClientEvents: TMenuClientEvents read FClientEvents write FClientEvents;
property Color;
{$IFNDEF TMSIW71}
property DesignMode: Boolean read FDesignMode write SetDesignMode;
{$ENDIF}
property Fade : TTIWFade read FFade write SetFade;
property Font;
property HoverBorderColor: TIWColor read FHoverBorderColor write FHoverBorderColor;
property HoverColor: TIWColor read FHoverColor write FHoverColor;
property HoverColorTo : TIWColor read FHoverColorTo write FHoverColorTo;
property HoverFontColor: TIWColor read FHoverFontColor write FHoverFontColor;
property HoverGradientDirection : TTIWGradientDirection read FHoverGradientDirection write SetHoverGradientDirection;
property IconBackgroundColor : TIWColor read FIconBackgroundColor write SetIconBackgroundColor;
property IconBackgroundColorTo : TIWColor read FIconBackgroundColorTo write SetIconBackgroundColorTo;
property ItemColor : TIWColor read FItemColor write SetItemColor;
property ItemHeight : Integer read FItemHeight write SetItemHeight;
property ItemSpacing: Integer read FItemSpacing write FItemSpacing;
property Menu: TMenu read FMenu write SetMenu;
property Opacity : Integer read FOpacity write SetOpacity;
property Open: TIWMenuOpen read FOpen write FOpen;
property RootItemBorderColor : TIWColor read FRootItemBorderColor write SetRootItemBorderColor;
property RootItemBorderHoverColor : TIWColor read FRootItemBorderHoverColor write SetRootItemBorderHoverColor;
property RootItemBorderWidth : integer read FRootItemBorderWidth write SetRootItemBorderWidth;
property RootItemColor : TIWColor read FRootItemColor write SetRootItemColor;
property RootItemColorTo : TIWColor read FRootItemColorTo write SetRootItemColorTo;
property RootItemHoverColor : TIWColor read FRootItemHoverColor write SetRootItemHoverColor;
property RootItemHoverColorTo : TIWColor read FRootItemHoverColorTo write SetRootItemHoverColorTo;
property RootItemDownColor : TIWColor read FRootItemDownColor write SetRootItemDownColor;
property RootItemDownColorTo : TIWColor read FRootItemDownColorTo write SetRootItemDownColorTo;
property RootItemFont : TIWFont read FRootItemFont write SetRootItemFont;
property RootItemGradientDirection : TTIWGradientDirection read FRootItemGradientDirection write SetRootItemGradientDirection;
property RootItemHoverFontColor : TIWColor read FRootItemHoverFontColor write SetRootItemHoverFontColor;
property SeparatorColor : TIWColor read FSeparatorColor write SetSeparatorColor;
property ShowIcons : Boolean read FShowIcons write FShowIcons;
property SubMenuGlyph: TIPicture read FSubMenuGlyph write SetSubMenuGlyph;
property TextAlignment : TAlignment read FTextAlignment write SetTextAlignment;
property UseBorder : boolean read FUseBorder write SetUseBorder;
end;
TTIWSideMenu = class(TIWControl)
private
FAutoHiding : Boolean;
FBackgroundImage: TIPicture;
FBorder: Boolean;
FBorderColor: TIWColor;
FClientEvents: TMenuClientEvents;
FFade : TTIWFade;
FHoverBorderColor: TIWColor;
FHoverColor: TIWColor;
FHoverColorTo : TIWColor;
FHoverFontColor: TIWColor;
FHoverGradientDirection : TTIWGradientDirection;
FIconBackgroundColor : TIWColor;
FIconBackgroundColorTo : TIWColor;
FItemColor : TIWColor;
FItemHeight : Integer;
FItemSpacing: Integer;
FMenu: TMenu;
FOpacity : Integer;
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -