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

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

?? tntmenus_design.pas

?? Delphi知道現(xiàn)在也沒(méi)有提供Unicode支持
?? PAS
字號(hào):

{*****************************************************************************}
{                                                                             }
{    Tnt Delphi Unicode Controls                                              }
{      http://www.tntware.com/delphicontrols/unicode/                         }
{        Version: 2.3.0                                                       }
{                                                                             }
{    Copyright (c) 2002-2007, Troy Wolbrink (troy.wolbrink@tntware.com)       }
{                                                                             }
{*****************************************************************************}

unit TntMenus_Design;

{$INCLUDE ..\Source\TntCompilers.inc}

{*******************************************************}
{  Special Thanks to Francisco Leong for getting these  }
{    menu designer enhancements to work w/o MnuBuild.   }
{*******************************************************}

interface

{$IFDEF COMPILER_6}     // Delphi 6 and BCB 6 have MnuBuild available
  {$DEFINE MNUBUILD_AVAILABLE}
{$ENDIF}

{$IFDEF COMPILER_7}     // Delphi 7 has MnuBuild available
  {$DEFINE MNUBUILD_AVAILABLE}
{$ENDIF}

uses
  Windows, Classes, Menus, Messages,
  {$IFDEF MNUBUILD_AVAILABLE} MnuBuild, {$ENDIF}
  DesignEditors, DesignIntf;

type
  TTntMenuEditor = class(TComponentEditor)
  public
    procedure ExecuteVerb(Index: Integer); override;
    function GetVerb(Index: Integer): string{TNT-ALLOW string}; override;
    function GetVerbCount: Integer; override;
  end;

procedure Register;

implementation

uses
  {$IFDEF MNUBUILD_AVAILABLE} MnuConst, {$ELSE} DesignWindows, {$ENDIF} SysUtils, Graphics, ActnList,
  Controls, Forms, TntDesignEditors_Design, TntActnList, TntMenus;

procedure Register;
begin
  RegisterComponentEditor(TTntMainMenu, TTntMenuEditor);
  RegisterComponentEditor(TTntPopupMenu, TTntMenuEditor);
end;

function GetMenuBuilder: TForm{TNT-ALLOW TForm};
{$IFDEF MNUBUILD_AVAILABLE}
begin
  Result := MenuEditor;
{$ELSE}
var
  Comp: TComponent;
begin
  Result := nil;
  if Application <> nil then
  begin
    Comp := Application.FindComponent('MenuBuilder');
    if Comp is TForm{TNT-ALLOW TForm} then
      Result := TForm{TNT-ALLOW TForm}(Comp);
  end;
{$ENDIF}
end;

{$IFDEF DELPHI_9} // verified against Delphi 9
type
  THackMenuBuilder = class(TDesignWindow)
  protected
    Fields: array[1..26] of TObject;
    FWorkMenu: TMenuItem{TNT-ALLOW TMenuItem};
  end;
{$ENDIF}

{$IFDEF COMPILER_10_UP}
{$IFDEF DELPHI_10} // NOT verified against Delphi 10
type
  THackMenuBuilder = class(TDesignWindow)
  protected
    Fields: array[1..26] of TObject;
    FWorkMenu: TMenuItem{TNT-ALLOW TMenuItem};
  end;
{$ENDIF}
{$ENDIF}

function GetMenuBuilder_WorkMenu(MenuBuilder: TForm{TNT-ALLOW TForm}): TMenuItem{TNT-ALLOW TMenuItem};
begin
  if MenuBuilder = nil then
    Result := nil
  else begin
    {$IFDEF MNUBUILD_AVAILABLE}
    Result := MenuEditor.WorkMenu;
    {$ELSE}
    Result := THackMenuBuilder(MenuBuilder).FWorkMenu;
    Assert((Result = nil) or (Result is TMenuItem{TNT-ALLOW TMenuItem}),
      'TNT Internal Error: THackMenuBuilder has incorrect internal layout.');
    {$ENDIF}
  end;
end;

{$IFDEF DELPHI_9} // verified against Delphi 9
type
  THackMenuItemWin = class(TCustomControl)
  protected
    FxxxxCaptionExtent: Integer;
    FMenuItem: TMenuItem{TNT-ALLOW TMenuItem};
  end;
{$ENDIF}

{$IFDEF DELPHI_10} // beta: NOT verified against Delphi 10
type
  THackMenuItemWin = class(TCustomControl)
  protected
    FxxxxCaptionExtent: Integer;
    FMenuItem: TMenuItem{TNT-ALLOW TMenuItem};
  end;
{$ENDIF}

function GetMenuItem(Control: TWinControl; DoVerify: Boolean = True): TMenuItem{TNT-ALLOW TMenuItem};
begin
  {$IFDEF MNUBUILD_AVAILABLE}
  if Control is TMenuItemWin then
    Result := TMenuItemWin(Control).MenuItem
  {$ELSE}
  if Control.ClassName = 'TMenuItemWin' then begin
    Result := THackMenuItemWin(Control).FMenuItem;
    Assert((Result = nil) or (Result is TMenuItem{TNT-ALLOW TMenuItem}), 'TNT Internal Error: Unexpected TMenuItem field layout.');
  end
  {$ENDIF}
  else if DoVerify then
    raise Exception.Create('TNT Internal Error: Control is not a TMenuItemWin.')
  else
    Result := nil;
end;

procedure SetMenuItem(Control: TWinControl; Item: TMenuItem{TNT-ALLOW TMenuItem});
begin
  {$IFDEF MNUBUILD_AVAILABLE}
  if Control is TMenuItemWin then
    TMenuItemWin(Control).MenuItem := Item
  {$ELSE}
  if Control.ClassName = 'TMenuItemWin' then begin
    THackMenuItemWin(Control).FMenuItem := Item;
    Item.FreeNotification(Control);
  end
  {$ENDIF}
  else
    raise Exception.Create('TNT Internal Error: Control is not a TMenuItemWin.');
end;

procedure ReplaceMenuItem(Control: TWinControl; ANewItem: TMenuItem{TNT-ALLOW TMenuItem});
var
  OldItem: TMenuItem{TNT-ALLOW TMenuItem};
  OldName: string{TNT-ALLOW string};
begin
  OldItem := GetMenuItem(Control, True);
  Assert(OldItem <> nil);
  OldName := OldItem.Name;
  FreeAndNil(OldItem);
  ANewItem.Name := OldName; { assume old name }
  SetMenuItem(Control, ANewItem);
end;

{ TTntMenuBuilderChecker }

type
  TMenuBuilderChecker = class(TComponent)
  private
    FMenuBuilder: TForm{TNT-ALLOW TForm};
    FCheckMenuAction: TTntAction;
    FLastCaption: string{TNT-ALLOW string};
    FLastActiveControl: TControl;
    FLastMenuItem: TMenuItem{TNT-ALLOW TMenuItem};
    procedure CheckMenuItems(Sender: TObject);
  public
    constructor Create(AOwner: TComponent); override;
    destructor Destroy; override;
  end;

var MenuBuilderChecker: TMenuBuilderChecker = nil;

constructor TMenuBuilderChecker.Create(AOwner: TComponent);
begin
  inherited;
  MenuBuilderChecker := Self;
  FCheckMenuAction := TTntAction.Create(Self);
  FCheckMenuAction.OnUpdate := CheckMenuItems;
  FCheckMenuAction.OnExecute := CheckMenuItems;
  FMenuBuilder := AOwner as TForm{TNT-ALLOW TForm};
  FMenuBuilder.Action := FCheckMenuAction;
end;

destructor TMenuBuilderChecker.Destroy;
begin
  FMenuBuilder := nil;
  MenuBuilderChecker := nil;
  inherited;
end;

type TAccessTntMenuItem = class(TTntMenuItem);

function CreateTntMenuItem(OldItem: TMenuItem{TNT-ALLOW TMenuItem}): TTntMenuItem;
var
  OldName: AnsiString;
  OldParent: TMenuItem{TNT-ALLOW TMenuItem};
  OldIndex: Integer;
  OldItemsList: TList;
  j: integer;
begin
  // item should be converted.
  OldItemsList := TList.Create;
  try
    // clone properties
    Result := TTntMenuItem.Create(OldItem.Owner);
    TAccessTntMenuItem(Result).FComponentStyle := OldItem.ComponentStyle; {csTransient hides item from object inspector}
    Result.Action := OldItem.Action;
    Result.AutoCheck := OldItem.AutoCheck;
    Result.AutoHotkeys := OldItem.AutoHotkeys;
    Result.AutoLineReduction := OldItem.AutoLineReduction;
    Result.Bitmap := OldItem.Bitmap;
    Result.Break := OldItem.Break;
    Result.Caption := OldItem.Caption;
    Result.Checked := OldItem.Checked;
    Result.Default := OldItem.Default;
    Result.Enabled := OldItem.Enabled;
    Result.GroupIndex := OldItem.GroupIndex;
    Result.HelpContext := OldItem.HelpContext;
    Result.Hint := OldItem.Hint;
    Result.ImageIndex := OldItem.ImageIndex;
    Result.MenuIndex := OldItem.MenuIndex;
    Result.RadioItem := OldItem.RadioItem;
    Result.ShortCut := OldItem.ShortCut;
    Result.SubMenuImages := OldItem.SubMenuImages;
    Result.Visible := OldItem.Visible;
    Result.Tag := OldItem.Tag;

    // clone events
    Result.OnAdvancedDrawItem := OldItem.OnAdvancedDrawItem;
    Result.OnClick := OldItem.OnClick;
    Result.OnDrawItem := OldItem.OnDrawItem;
    Result.OnMeasureItem := OldItem.OnMeasureItem;

    // remember name, parent, index, children
    OldName := OldItem.Name;
    OldParent := OldItem.Parent;
    OldIndex := OldItem.MenuIndex;
    for j := OldItem.Count - 1 downto 0 do begin
      OldItemsList.Insert(0, OldItem.Items[j]);
      OldItem.Remove(OldItem.Items[j]);
    end;
    
    // clone final parts of old item
    for j := 0 to OldItemsList.Count - 1 do
      Result.Add(TMenuItem{TNT-ALLOW TMenuItem}(OldItemsList[j])); { add children }
    if OldParent <> nil then
      OldParent.Insert(OldIndex, Result); { insert into parent }
  finally
    OldItemsList.Free;
  end;
end;

procedure CheckMenuItemWin(MenuItemWin: TWinControl; PartOfATntMenu: Boolean);
var
  OldItem: TMenuItem{TNT-ALLOW TMenuItem};
begin
  OldItem := GetMenuItem(MenuItemWin);
  if OldItem = nil then
    exit;
  if (OldItem.ClassType = TMenuItem{TNT-ALLOW TMenuItem})
  and (PartOfATntMenu or (OldItem.Parent is TTntMenuItem)) then
  begin
    if MenuItemWin.Focused then
      MenuItemWin.Parent.SetFocus;  {Lose focus and regain later to ensure object inspector gets updated.}
    ReplaceMenuItem(MenuItemWin, CreateTntMenuItem(OldItem));
  end else if (OldItem.ClassType = TTntMenuItem)
  and (OldItem.Parent = nil) and (OldItem.Caption = '') and (OldItem.Name = '')
  and not (PartOfATntMenu or (OldItem.Parent is TTntMenuItem)) then begin
    if MenuItemWin.Focused then
      MenuItemWin.Parent.SetFocus;  {Lose focus and regain later to ensure object inspector gets updated.}
    ReplaceMenuItem(MenuItemWin, TMenuItem{TNT-ALLOW TMenuItem}.Create(OldItem.Owner));
  end;
end;

procedure TMenuBuilderChecker.CheckMenuItems(Sender: TObject);
var
  a, i: integer;
  MenuWin: TWinControl;
  MenuItemWin: TWinControl;
  SaveFocus: HWND;
  PartOfATntMenu: Boolean;
  WorkMenu: TMenuItem{TNT-ALLOW TMenuItem};
begin
  if (FMenuBuilder <> nil)
  and (FMenuBuilder.Action = FCheckMenuAction) then begin
    if (FLastCaption <> FMenuBuilder.Caption)
    or (FLastActiveControl <> FMenuBuilder.ActiveControl)
    or (FLastMenuItem <> GetMenuItem(FMenuBuilder.ActiveControl, False))
    then begin
      try
        try
          with FMenuBuilder do begin
            WorkMenu := GetMenuBuilder_WorkMenu(FMenuBuilder);
            PartOfATntMenu := (WorkMenu <> nil)
              and ((WorkMenu.Owner is TTntMainMenu) or (WorkMenu.Owner is TTntPopupMenu));
            SaveFocus := Windows.GetFocus;
            for a := ComponentCount - 1 downto 0 do begin
              {$IFDEF MNUBUILD_AVAILABLE}
              if Components[a] is TMenuWin then begin
              {$ELSE}
              if Components[a].ClassName = 'TMenuWin' then begin
              {$ENDIF}
                MenuWin := Components[a] as TWinControl;
                with MenuWin do begin
                  for i := ComponentCount - 1 downto 0 do begin
                    {$IFDEF MNUBUILD_AVAILABLE}
                    if Components[i] is TMenuItemWin then begin
                    {$ELSE}
                    if Components[i].ClassName = 'TMenuItemWin' then begin
                    {$ENDIF}
                      MenuItemWin := Components[i] as TWinControl;
                      CheckMenuItemWin(MenuItemWin, PartOfATntMenu);
                    end;
                  end;
                end;
              end;
            end;
            if SaveFocus <> Windows.GetFocus then
              Windows.SetFocus(SaveFocus);
          end;
        except
          on E: Exception do begin
            FMenuBuilder.Action := nil;
          end;
        end;
      finally
        FLastCaption := FMenuBuilder.Caption;
        FLastActiveControl := FMenuBuilder.ActiveControl;
        FLastMenuItem := GetMenuItem(FMenuBuilder.ActiveControl, False);
      end;
    end;
  end;
end;

{ TTntMenuEditor }

function TTntMenuEditor.GetVerbCount: Integer;
begin
  Result := 1;
end;

{$IFNDEF MNUBUILD_AVAILABLE}
resourcestring
  SMenuDesigner = 'Menu Designer...';
{$ENDIF}

function TTntMenuEditor.GetVerb(Index: Integer): string{TNT-ALLOW string};
begin
  Result := SMenuDesigner;
end;

procedure TTntMenuEditor.ExecuteVerb(Index: Integer);
var
  MenuBuilder: TForm{TNT-ALLOW TForm};
begin
  EditPropertyWithDialog(Component, 'Items', Designer);
  MenuBuilder := GetMenuBuilder;
  if Assigned(MenuBuilder) then begin
    if (MenuBuilderChecker = nil) or (MenuBuilderChecker.FMenuBuilder <> MenuBuilder) then begin
      MenuBuilderChecker.Free;
      MenuBuilderChecker := TMenuBuilderChecker.Create(MenuBuilder);
    end;
    EditPropertyWithDialog(Component, 'Items', Designer); // update menu builder caption
  end;
end;

initialization

finalization
  MenuBuilderChecker.Free; // design package might be recompiled

end.

?? 快捷鍵說(shuō)明

復(fù)制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號(hào) Ctrl + =
減小字號(hào) Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
在线不卡中文字幕| 亚洲精品水蜜桃| 成人ar影院免费观看视频| 国产精品久久久久久久久免费桃花| 懂色av一区二区在线播放| 亚洲特黄一级片| 欧美视频一区二区三区四区| 欧美日韩高清影院| 蜜桃一区二区三区在线观看| 久久精品无码一区二区三区| 99在线视频精品| 亚洲成人av一区二区| 日韩小视频在线观看专区| 国产老妇另类xxxxx| 亚洲精品高清在线| 欧美一级理论片| 成人午夜又粗又硬又大| 亚洲综合男人的天堂| 欧美大片顶级少妇| 成人app软件下载大全免费| 亚洲第一久久影院| 久久综合久久综合久久综合| 99久久免费精品| 日韩制服丝袜av| 中文一区一区三区高中清不卡| 色婷婷精品大在线视频| 美腿丝袜亚洲三区| 国产精品美女久久久久久| 欧美视频一区在线| 国产伦精品一区二区三区视频青涩| 亚洲欧美日韩国产成人精品影院| 777a∨成人精品桃花网| 豆国产96在线|亚洲| 午夜电影久久久| 中文文精品字幕一区二区| 欧美视频在线一区二区三区| 国产麻豆成人传媒免费观看| 一区av在线播放| xnxx国产精品| 在线观看日韩一区| 国产精品一级片| 午夜欧美一区二区三区在线播放| 久久久久亚洲综合| 亚洲精选视频在线| 欧美精品一区二区精品网| 91麻豆123| 精品一区二区三区免费播放| 亚洲美女视频一区| 精品国产一区a| 欧美三级中文字| 成人亚洲一区二区一| 日本女优在线视频一区二区| 中文字幕永久在线不卡| 精品国产一区二区三区av性色| 色婷婷av久久久久久久| 国产精品99久久久久久久女警| 夜夜操天天操亚洲| 国产人久久人人人人爽| 777xxx欧美| 日本韩国欧美在线| 成人性色生活片免费看爆迷你毛片| 日韩精品成人一区二区在线| 亚洲欧洲日韩在线| 久久网站最新地址| 欧美精品久久久久久久多人混战| 国产精品女主播在线观看| 日韩一区二区免费视频| 欧美羞羞免费网站| 成人福利视频网站| 久久99九九99精品| 五月天欧美精品| 亚洲乱码国产乱码精品精98午夜 | 国产一二精品视频| 天天做天天摸天天爽国产一区| 中文字幕一区二区三区四区 | 日韩成人午夜电影| 亚洲国产精品麻豆| 综合久久国产九一剧情麻豆| 久久久久国产精品厨房| 欧美一区二区高清| 欧美日韩日日夜夜| 色哟哟一区二区| 波多野结衣中文字幕一区| 久久久综合精品| 日韩精品一区二区三区中文精品| 欧美日韩一级黄| 日本精品一区二区三区高清 | 黄网站免费久久| 美女一区二区久久| 日韩精品视频网站| 亚洲6080在线| 亚洲妇熟xx妇色黄| 一区二区三区在线观看网站| 中文字幕在线一区| 国产精品色眯眯| 中文字幕av在线一区二区三区| 国产亚洲精品资源在线26u| 日韩精品中文字幕一区二区三区| 6080日韩午夜伦伦午夜伦| 欧美高清视频在线高清观看mv色露露十八 | 久久99在线观看| 日本欧美大码aⅴ在线播放| 爽爽淫人综合网网站| 午夜视频一区在线观看| 亚洲成人你懂的| 亚洲成av人片一区二区| 亚洲一区二区三区四区不卡| 亚洲午夜久久久久久久久电影院| 亚洲激情欧美激情| 亚洲一区二区三区小说| 亚洲成人在线免费| 手机精品视频在线观看| 免费观看在线综合色| 男人操女人的视频在线观看欧美| 天天综合色天天| 男人的j进女人的j一区| 韩国欧美国产1区| 国产精品一区一区| 成人动漫av在线| 91网站视频在线观看| 色成人在线视频| 欧美日韩电影在线| 日韩一区和二区| 26uuu欧美| 国产精品久久网站| 亚洲女女做受ⅹxx高潮| 在线精品视频免费播放| 欧亚洲嫩模精品一区三区| 欧美日韩免费不卡视频一区二区三区| 欧美日韩电影一区| 日韩一级免费一区| 久久久99精品免费观看| 国产精品久久久久四虎| 一区二区三区中文字幕电影| 亚洲成av人片观看| 国内外成人在线视频| 成人妖精视频yjsp地址| 在线免费观看日本欧美| 欧美一区二区三区免费在线看 | 欧美一级淫片007| 亚洲精品一区二区三区在线观看 | 欧美性猛交xxxx乱大交退制版| 欧美精品一级二级| 精品国产免费一区二区三区四区| 欧美激情中文不卡| 一区二区三区在线看| 蜜臀va亚洲va欧美va天堂| 国产成人免费在线视频| 亚洲天天做日日做天天谢日日欢| 午夜视频一区二区| 国产精品资源在线看| 色婷婷亚洲精品| 欧美一级日韩免费不卡| 欧美激情在线免费观看| 夜夜操天天操亚洲| 激情伊人五月天久久综合| 成人福利视频网站| 69av一区二区三区| 中文字幕欧美日韩一区| 亚洲一二三专区| 国产在线精品一区二区不卡了| 91影视在线播放| 91麻豆精品国产无毒不卡在线观看| 国产欧美精品日韩区二区麻豆天美| 亚洲自拍另类综合| 国产一区二区精品在线观看| 欧美在线不卡视频| 国产网站一区二区三区| 亚洲国产精品一区二区尤物区| 国产精品一线二线三线| 欧美日韩在线三区| 国产女人水真多18毛片18精品视频| 亚洲一区二区三区四区五区中文| 国产乱一区二区| 欧美久久久久久久久久| 国产精品免费视频网站| 人妖欧美一区二区| 91免费版在线| 久久嫩草精品久久久久| 欧美日本精品一区二区三区| 国产日韩欧美一区二区三区乱码| 亚洲bt欧美bt精品777| av亚洲精华国产精华精华| 日韩欧美一卡二卡| 亚洲综合久久av| 国产sm精品调教视频网站| 欧美高清hd18日本| 国产精品欧美综合在线| 蜜臀av性久久久久av蜜臀妖精| 成人精品视频一区二区三区| 538prom精品视频线放| 亚洲欧洲日韩在线| 美国毛片一区二区| 色综合 综合色| 精品国产第一区二区三区观看体验| 久久九九99视频| 丝袜亚洲精品中文字幕一区| av爱爱亚洲一区| 欧美在线一区二区| 亚洲欧美综合色|