亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频

? 歡迎來到蟲蟲下載站! | ?? 資源下載 ?? 資源專輯 ?? 關(guān)于我們
? 蟲蟲下載站

?? mxoutlookbarproeditor.pas

?? 改進的mxOutlookBarpro控件 改進要點: 1.增加按鈕雙擊事件 2.增加按鈕圖標跳動功能。 編譯環(huán)境DELPHI5 圖標跳動功能做的很弱
?? PAS
?? 第 1 頁 / 共 2 頁
字號:
// ****************************************************************************
// * An Outlook style sidebar component for Delphi.
// ****************************************************************************
// * Copyright 2002, Bitvad醩z Kft. Hungary . All Rights Reserved.
// ****************************************************************************
// * Feel free to contact me if you have any questions, comments or suggestions
// * at support@maxcomponents.net
// ****************************************************************************
// * Web page: www.maxcomponents.net
// ****************************************************************************
// * Date last modified: 11.10.2002
// ****************************************************************************
// * TmxOutlookBarPro v2.13
// ****************************************************************************
// * Description:
// *
// * The TmxOutlookBarPro 100% native VCL  component with many added features to
// * support the look, feel, and behavior introduced in Microsoft  Office 97,
// * 2000, and new Internet Explorer. It has got many features  including
// * scrolling headers, icon  highlighting and positioning, small and large
// * icons,gradient and bitmap Backgrounds. The header sections and buttons
// * can be  added, deleted and  moved  at design time. The  header tabs can
// * have individual  font,  alignment,  tabcolor,  glyph, tiled Background
// * images. And many many more posibilities.
// *
// * This component is an advanced version of TmxOutlookBar
// *
// ****************************************************************************

Unit mxOutlookBarProEditor;

Interface

{$I MAX.INC}

Uses Windows, SysUtils, Messages, Classes, Graphics, Controls, Forms,
  Dialogs, StdCtrls, ExtCtrls, Grids, Menus,
{$IFDEF DELPHI6_UP}
  DesignIntf, DesignWindows, DesignEditors,
{$ELSE}
  Dsgnintf, DsgnWnds,
{$ENDIF}
  mxOutlookBarPro, ComCtrls, ToolWin, ImgList;

Type
{$IFDEF DELPHI6_UP}
  TDesigner = DesignIntf.IDesigner;
  TFormDesigner = DesignIntf.IDesigner;
{$ELSE}
  TDesigner = IDesigner;
  TFormDesigner = IFormDesigner;
{$ENDIF}

  TmxHeaderEditor = Class( TDesignWindow )
    ClientPanel: TPanel;
    grid_Headers: TDrawGrid;
    PopupMenu: TPopupMenu;
    mnu_Delete: TMenuItem;
    N1: TMenuItem;
    mnu_New: TMenuItem;
    ImageList: TImageList;
    ImageList_Gray: TImageList;
    Splitter1: TSplitter;
    StatusBar: TStatusBar;
    CoolBar: TCoolBar;
    ToolBar: TToolBar;
    btn_New: TToolButton;
    btn_Delete: TToolButton;
    ToolButton1: TToolButton;
    btn_Clear: TToolButton;
    ToolButton4: TToolButton;
    btn_Close: TToolButton;
    btn_DeleteButton: TToolButton;
    grid_Buttons: TDrawGrid;
    ToolButton2: TToolButton;
    btn_NewButton: TToolButton;
    PopupMenu1: TPopupMenu;
    mnu_DelButton: TMenuItem;
    MenuItem2: TMenuItem;
    MenuItem3: TMenuItem;
    Procedure FormClose( Sender: TObject; Var Action: TCloseAction );
    Procedure grid_HeadersDrawCell( Sender: TObject; Col, Row: Longint; Rect: TRect; State: TGridDrawState );
    Procedure grid_HeadersSelectCell( Sender: TObject; Col, Row: Longint; Var CanSelect: Boolean );
    Procedure btn_CloseClick( Sender: TObject );
    Procedure btn_DeleteClick( Sender: TObject );
    Procedure grid_HeadersKeyDown( Sender: TObject; Var Key: Word; Shift: TShiftState );
    Procedure FormResize( Sender: TObject );
    Procedure FormCreate( Sender: TObject );
    Procedure btn_NewClick( Sender: TObject );
    Procedure btn_ClearClick( Sender: TObject );
    Procedure Splitter1Moved( Sender: TObject );
    Procedure ClientPanelResize( Sender: TObject );
    Procedure FormShow( Sender: TObject );
    Procedure Grid_ButtonsDrawCell( Sender: TObject; ACol, ARow: Integer; Rect: TRect; State: TGridDrawState );
    Procedure Grid_ButtonsKeyDown( Sender: TObject; Var Key: Word; Shift: TShiftState );
    Procedure btn_DeleteButtonClick( Sender: TObject );
    Procedure Grid_ButtonsSelectCell( Sender: TObject; ACol, ARow: Integer; Var CanSelect: Boolean );
    Procedure btn_NewButtonClick( Sender: TObject );
  Private

    FDeleting: Boolean;
    FActiveHeader: TmxHeader;
    FOutlookBarPro: TmxOutlookBarPro;

    Function GetForm: TCustomForm;
    Function CheckCollection: Boolean;

    Function HeaderByRow( ARow: Integer ): TmxHeader;
    Function ButtonByRow( ARow: Integer ): TmxButton;
    Procedure SelectHeader( AHeader: TmxHeader );
    Procedure SelectButton( AButton: TmxButton );
    Procedure UpdateData;
    Procedure SetHeaderList( AValue: TmxOutlookBarPro );

  Protected

    Procedure Activated; Override;
    Function UniqueName( Component: TComponent ): String; Override;

  Public

{$IFDEF DELPHI6_UP}
    Procedure ItemDeleted( Const ADesigner: IDesigner; Item: TPersistent ); Override;

    Function EditAction( Action: TEditAction ): Boolean; Override;
    Procedure ItemsModified( Const Designer: IDesigner ); Override;
    Procedure DesignerClosed( Const ADesigner: IDesigner; AGoingDormant: Boolean ); Override;
{$ELSE}
    Procedure ComponentDeleted( Component: IPersistent ); Override;

    Procedure EditAction( Action: TEditAction ); Override;
    Procedure FormModified; Override;
    Procedure FormClosed( Form: TCustomForm ); Override;
{$ENDIF}

    Property OwnerForm: TCustomForm Read GetForm;

    Function GetEditState: TEditState; Override;
    Property OutlookBarPro: TmxOutlookBarPro Read FOutlookBarPro Write SetHeaderList;

  End;

Implementation

Uses Clipbrd, mxOutlookBarProReg;

{$R *.DFM}
{$D-}

Type
  TCustomClass = Class( TCustomControl );

Function Max( A, B: Integer ): Integer;
Begin
  If A > B Then Result := A Else Result := B;
End;

Procedure WriteText( ACanvas: TCanvas; ARect: TRect; DX, DY: Integer; Const Text: String; Alignment: TAlignment; WordWrap: Boolean; ARightToLeft: Boolean = False );
Const
  AlignFlags: Array[ TAlignment ] Of Integer = ( DT_LEFT Or DT_EXPANDTABS Or DT_NOPREFIX, DT_RIGHT Or DT_EXPANDTABS Or DT_NOPREFIX, DT_CENTER Or DT_EXPANDTABS Or DT_NOPREFIX );
  WrapFlags: Array[ Boolean ] Of Integer = ( 0, DT_WORDBREAK );
  RTL: Array[ Boolean ] Of Integer = ( 0, DT_RTLREADING );
Var
  Left: Integer;
Begin
  If ( ACanvas.CanvasOrientation = coRightToLeft ) And ( Not ARightToLeft ) Then
    ChangeBiDiModeAlignment( Alignment );
  Case Alignment Of
    taLeftJustify: Left := ARect.Left + DX;
    taRightJustify: Left := ARect.Right - ACanvas.TextWidth( Text ) - 3;
  Else { taCenter }
    Left := ARect.Left + ( ARect.Right - ARect.Left ) Shr 1 - ( ACanvas.TextWidth( Text ) Shr 1 );
  End;
  ACanvas.TextRect( ARect, Left, ARect.Top + DY, Text );
End;

Procedure TmxHeaderEditor.SetHeaderList( AValue: TmxOutlookBarPro );
Begin
  If FOutlookBarPro <> AValue Then
  Begin
    FOutlookBarPro := AValue;
    UpdateData;
  End;
End;

Function TmxHeaderEditor.GetEditState: TEditState;
Begin
  Result := [ ];
  If btn_Delete.Enabled Then Result := [ esCanDelete, esCanCut, esCanCopy ];
  If ClipboardComponents Then Include( Result, esCanPaste );
End;

{$IFDEF DELPHI6_UP}

Procedure TmxHeaderEditor.DesignerClosed( Const ADesigner: IDesigner; AGoingDormant: Boolean );
{$ELSE}

Procedure TmxHeaderEditor.FormClosed( Form: TCustomForm );
{$ENDIF}
Begin
  If {$IFDEF DELPHI6_UP}ADesigner.Root{$ELSE}Form{$ENDIF} = OwnerForm Then Free;
End;

{$IFDEF DELPHI6_UP}

Procedure TmxHeaderEditor.ItemsModified( Const Designer: IDesigner );
{$ELSE}

Procedure TmxHeaderEditor.FormModified;
{$ENDIF}
Begin
  If Not ( csDestroying In ComponentState ) Then UpdateData;
End;

Procedure TmxHeaderEditor.UpdateData;
Var
  Empty: Boolean;
Begin
  If CheckCollection Then
  Begin
    Caption := OutlookBarPro.Name;
    Empty := OutlookBarPro.HeaderCount = 0;

    If OutlookBarPro.HeaderCount = 0 Then
      StatusBar.SimpleText := 'This bar has not got any headers yet.' Else
      If OutlookBarPro.HeaderCount = 1 Then
        StatusBar.SimpleText := 'This bar has only one header' Else
        StatusBar.SimpleText := Format( '%d headers exit', [ OutlookBarPro.HeaderCount ] );
  End
  Else Empty := True;

  If Empty Then
  Begin
    StatusBar.SimpleText := 'This bar has not got any headers yet.';
    grid_Headers.RowCount := 2;
    grid_Buttons.RowCount := 2;
    SelectHeader( Nil );
  End
  Else
  Begin
    grid_Headers.RowCount := OutlookBarPro.HeaderCount + 1;
    grid_Buttons.Invalidate;
  End;

  If FActiveHeader <> Nil Then
  Begin
    btn_DeleteButton.Enabled := FActiveHeader.ButtonCount <> 0;
    mnu_DelButton.Enabled := btn_DeleteButton.Enabled;
    btn_NewButton.Enabled := True;
    grid_Buttons.Enabled := True;
  End
  Else
  Begin
    btn_DeleteButton.Enabled := False;
    mnu_DelButton.Enabled := btn_DeleteButton.Enabled;
    btn_NewButton.Enabled := False;
    grid_Buttons.Enabled := False;
  End;

  btn_Delete.Enabled := Not Empty;
  btn_Clear.Enabled := Not Empty;
  mnu_Delete.Enabled := Not Empty;

     //grid_Headers.Invalidate;
End;

Function TmxHeaderEditor.GetForm: TCustomForm;
Begin
  Result := {$IFDEF DELPHI6_UP}TCustomForm( Designer.Root ){$ELSE}Designer.Form{$ENDIF};
End;

Function TmxHeaderEditor.CheckCollection: Boolean;
Begin
  Result := ( OutlookBarPro <> Nil ) And ( OutlookBarPro.Owner <> Nil )
    And ( {$IFDEF DELPHI6_UP}Designer.Root{$ELSE}Designer.Form{$ENDIF} <> Nil );
End;

Procedure TmxHeaderEditor.FormClose( Sender: TObject; Var Action: TCloseAction );
Begin
  Action := caFree;
End;

{$IFDEF DELPHI6_UP}
Type
  TDesignerSelectionList = IDesignerSelections;
{$ENDIF}

Procedure TmxHeaderEditor.SelectHeader( AHeader: TmxHeader );
Var
  FComponents: TDesignerSelectionList;
Begin
  If CheckCollection And Active Then
  Begin
    FComponents := {$IFDEF DELPHI6_UP}TDesignerSelections{$ELSE}TDesignerSelectionList{$ENDIF}.Create;

    If AHeader <> Nil Then
    Begin
      FComponents.Add( AHeader );

      If AHeader.ButtonCount <> 0 Then
        grid_Buttons.RowCount := AHeader.ButtonCount + 1 Else
        grid_Buttons.RowCount := 2;

      FActiveHeader := AHeader;
    End
    Else
    Begin
      FComponents.Add( OutlookBarPro );
      grid_Buttons.RowCount := 2;
      FActiveHeader := Nil;
    End;

    SetSelection( FComponents );
    If Assigned( FActiveHeader ) Then UpdateData;
  End;
End;

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
丁香另类激情小说| 久久网这里都是精品| 亚洲精品在线免费观看视频| 国产视频911| 日韩avvvv在线播放| 91免费版在线| 欧美高清在线一区| 精品在线免费观看| 欧美视频三区在线播放| 欧美国产精品一区二区三区| 玖玖九九国产精品| 717成人午夜免费福利电影| 亚洲视频一区二区免费在线观看| 极品瑜伽女神91| 欧美一区二区三区视频免费| 亚洲综合视频网| 一本久道久久综合中文字幕| 日本一区二区三区免费乱视频| 美腿丝袜亚洲一区| 欧美一区二区视频在线观看2020 | 日本sm残虐另类| 色婷婷精品久久二区二区蜜臂av | 免费在线一区观看| 欧美日韩亚洲综合| 亚洲国产日韩av| 欧美亚洲高清一区二区三区不卡| 国产精品国产自产拍在线| 国产河南妇女毛片精品久久久| 精品对白一区国产伦| 久久99久久久久| 精品欧美一区二区三区精品久久| 美国三级日本三级久久99| 日韩亚洲欧美一区| 国产一区在线观看麻豆| 26uuu亚洲综合色欧美| 国产在线观看一区二区| 久久亚洲捆绑美女| 国产一区二区精品久久| 国产精品久久久久三级| 99精品久久免费看蜜臀剧情介绍| 日韩一区中文字幕| 在线免费观看视频一区| 亚洲成人动漫一区| 日韩精品一区二区三区四区视频 | 色综合亚洲欧洲| 亚洲精品视频一区| 欧美视频第二页| 麻豆精品国产91久久久久久| 久久久久国产免费免费| 97精品久久久午夜一区二区三区 | 精品国产91洋老外米糕| 激情文学综合丁香| 国产精品入口麻豆九色| 色综合中文字幕| 日本不卡1234视频| 国产目拍亚洲精品99久久精品| 91色婷婷久久久久合中文| 日韩中文字幕一区二区三区| 欧美va在线播放| 99久久综合色| 舔着乳尖日韩一区| 国产亚洲va综合人人澡精品| 色综合久久中文综合久久牛| 欧美a级一区二区| 欧美激情综合网| 欧美三区在线视频| 国产成人免费视频网站| 亚洲一卡二卡三卡四卡五卡| 欧美精品一区二区在线观看| 99re亚洲国产精品| 免播放器亚洲一区| 亚洲欧美另类在线| 欧美不卡123| 欧美综合亚洲图片综合区| 国产一区二区三区在线观看免费 | 一区二区三区加勒比av| 日韩你懂的在线播放| 91视频com| 国产揄拍国内精品对白| 亚洲一区电影777| 国产精品久久毛片av大全日韩| 7799精品视频| 91成人网在线| a美女胸又www黄视频久久| 免费三级欧美电影| 亚洲综合免费观看高清在线观看| 久久久91精品国产一区二区三区| 欧美日韩在线播放三区四区| 成人免费精品视频| 美脚の诱脚舐め脚责91| 亚洲18色成人| 亚洲黄色av一区| 国产精品久久久久aaaa樱花| 精品国产91乱码一区二区三区| 欧美日韩免费视频| 91国产丝袜在线播放| 成人久久18免费网站麻豆 | 久久综合九色综合欧美亚洲| 欧美亚一区二区| 91无套直看片红桃| 成人高清视频免费观看| 国产精品白丝av| 国产尤物一区二区在线| 精品一区二区三区欧美| 蜜臀91精品一区二区三区| 日韩影院在线观看| 亚洲va韩国va欧美va精品| 尤物av一区二区| 中文字幕在线不卡一区二区三区| 久久综合久色欧美综合狠狠| 日韩欧美中文一区| 欧美va亚洲va香蕉在线| 欧美成人激情免费网| 欧美一区二区日韩一区二区| 7777精品伊人久久久大香线蕉的 | 不卡高清视频专区| 国产九九视频一区二区三区| 国产一区二区三区免费看| 久久国产成人午夜av影院| 久久97超碰色| 国产精品99久| 北条麻妃国产九九精品视频| av一区二区三区在线| 色综合视频一区二区三区高清| 99国产精品久久久久久久久久 | 久久综合视频网| 久久九九影视网| 国产女同性恋一区二区| 成人免费在线播放视频| 夜夜嗨av一区二区三区四季av | 亚洲品质自拍视频| 亚洲国产日韩综合久久精品| 日本亚洲一区二区| 韩国毛片一区二区三区| 国产aⅴ综合色| 在线影视一区二区三区| 91精品一区二区三区久久久久久| 日韩你懂的在线播放| 国产精品美女久久久久高潮| 国产精品久久久久久一区二区三区| 亚洲免费视频中文字幕| 亚洲电影在线播放| 激情综合五月婷婷| 91美女福利视频| 日韩欧美一二三区| 国产精品久久久久精k8| 丝袜亚洲另类丝袜在线| 国产精品66部| 欧美日韩色综合| 2020日本不卡一区二区视频| 亚洲欧美视频在线观看视频| 日本伊人色综合网| 风间由美一区二区三区在线观看 | 成人午夜激情视频| 欧美日韩精品一区二区| 久久综合久久综合九色| 一区二区三区免费网站| 久久精品国产色蜜蜜麻豆| 不卡在线观看av| 精品国产伦理网| 亚洲国产日韩一级| 国产aⅴ综合色| 91精品国产综合久久蜜臀| 国产精品久久三| 激情深爱一区二区| 欧美日韩激情一区二区三区| 久久久国际精品| 奇米777欧美一区二区| 91搞黄在线观看| 国产精品免费网站在线观看| 日本不卡1234视频| 欧美在线小视频| 日韩理论在线观看| 国产一区 二区 三区一级| 欧美一区国产二区| 午夜精品久久久久影视| 99视频国产精品| 国产精品视频免费看| 久久综合综合久久综合| 欧美日韩国产高清一区二区三区| 中文字幕亚洲欧美在线不卡| 国产福利视频一区二区三区| 精品国产a毛片| 青草av.久久免费一区| 欧美日韩三级一区二区| 亚洲精品视频免费观看| 99视频一区二区| 国产精品久久久久久久久动漫| 国产成人鲁色资源国产91色综| 欧美一区国产二区| 日韩av在线发布| 日韩三级高清在线| 裸体一区二区三区| 日韩三级视频在线观看| 久久精品国产99| wwwwxxxxx欧美| 丁香五精品蜜臀久久久久99网站| 日本一区二区三区四区在线视频 | 91精品综合久久久久久| 亚洲综合偷拍欧美一区色|