⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 iwtmsmenus.pas

📁 TMS IntraWEb增强控件TMSIntraWeb_v2.3.2.1_D2007.rar
💻 PAS
📖 第 1 页 / 共 5 页
字号:
{***************************************************************************}
{ 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 + -