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

? 歡迎來到蟲蟲下載站! | ?? 資源下載 ?? 資源專輯 ?? 關于我們
? 蟲蟲下載站

?? mrulist.pas

?? RX Library contains a large number of components, objects and routines for Borland Delphi with full
?? PAS
?? 第 1 頁 / 共 2 頁
字號:
{*******************************************************}
{                                                       }
{         Delphi VCL Extensions (RX)                    }
{                                                       }
{         Copyright (c) 1997, 1998 Master-Bank          }
{                                                       }
{*******************************************************}

unit MRUList;

{$I RX.INC}
{$R-,B-}

interface

uses SysUtils, Classes, Menus, IniFiles {$IFDEF WIN32}, Registry {$ENDIF},
  Placemnt;

type
  TRecentStrings = class;

{ TMRUManager }

  TGetItemEvent = procedure (Sender: TObject; var Caption: string;
    var ShortCut: TShortCut; UserData: Longint) of object;
  TReadItemEvent = procedure (Sender: TObject; IniFile: TObject;
    const Section: string; Index: Integer; var RecentName: string;
    var UserData: Longint) of object;
  TWriteItemEvent = procedure (Sender: TObject; IniFile: TObject;
    const Section: string; Index: Integer; const RecentName: string;
    UserData: Longint) of object;
  TClickMenuEvent = procedure (Sender: TObject; const RecentName,
    Caption: string; UserData: Longint) of object;

  TAccelDelimiter = (adTab, adSpace);
  TRecentMode = (rmInsert, rmAppend);

  TMRUManager = class(TComponent)
  private
    FList: TStrings;
    FItems: TList;
    FIniLink: TIniLink;
    FSeparateSize: Word;
    FAutoEnable: Boolean;
    FAutoUpdate: Boolean;
    FShowAccelChar: Boolean;
    FRemoveOnSelect: Boolean;
    FStartAccel: Cardinal;
    FAccelDelimiter: TAccelDelimiter;
    FRecentMenu: TMenuItem;
    FOnChange: TNotifyEvent;
    FOnGetItem: TGetItemEvent;
    FOnClick: TClickMenuEvent;
    FOnReadItem: TReadItemEvent;
    FOnWriteItem: TWriteItemEvent;
    procedure ListChanged(Sender: TObject);
    procedure ClearRecentMenu;
    procedure SetRecentMenu(Value: TMenuItem);
    procedure SetSeparateSize(Value: Word);
    function GetStorage: TFormPlacement;
    procedure SetStorage(Value: TFormPlacement);
    function GetCapacity: Integer;
    procedure SetCapacity(Value: Integer);
    function GetMode: TRecentMode;
    procedure SetMode(Value: TRecentMode);
    procedure SetStartAccel(Value: Cardinal);
    procedure SetShowAccelChar(Value: Boolean);
    procedure SetAccelDelimiter(Value: TAccelDelimiter);
    procedure SetAutoEnable(Value: Boolean);
    procedure AddMenuItem(Item: TMenuItem);
    procedure MenuItemClick(Sender: TObject);
    procedure IniSave(Sender: TObject);
    procedure IniLoad(Sender: TObject);
    procedure InternalLoad(Ini: TObject; const Section: string);
    procedure InternalSave(Ini: TObject; const Section: string);
  protected
    procedure Change; dynamic;
    procedure Notification(AComponent: TComponent; Operation: TOperation); override;
    procedure DoReadItem(Ini: TObject; const Section: string;
      Index: Integer; var RecentName: string; var UserData: Longint); dynamic;
    procedure DoWriteItem(Ini: TObject; const Section: string; Index: Integer;
      const RecentName: string; UserData: Longint); dynamic;
    procedure GetItemData(var Caption: string; var ShortCut: TShortCut;
      UserData: Longint); dynamic;
    procedure DoClick(const RecentName, Caption: string; UserData: Longint); dynamic;
  public
    constructor Create(AOwner: TComponent); override;
    destructor Destroy; override;
    procedure Add(const RecentName: string; UserData: Longint);
    procedure Clear;
    procedure Remove(const RecentName: string);
    procedure UpdateRecentMenu;
{$IFDEF WIN32}
    procedure LoadFromRegistry(Ini: TRegIniFile; const Section: string);
    procedure SaveToRegistry(Ini: TRegIniFile; const Section: string);
{$ENDIF WIN32}
    procedure LoadFromIni(Ini: TIniFile; const Section: string);
    procedure SaveToIni(Ini: TIniFile; const Section: string);
    property Strings: TStrings read FList;
  published
    property AccelDelimiter: TAccelDelimiter read FAccelDelimiter write SetAccelDelimiter default adTab;
    property AutoEnable: Boolean read FAutoEnable write SetAutoEnable default True;
    property AutoUpdate: Boolean read FAutoUpdate write FAutoUpdate default True;
    property Capacity: Integer read GetCapacity write SetCapacity default 10;
    property Mode: TRecentMode read GetMode write SetMode default rmInsert;
    property RemoveOnSelect: Boolean read FRemoveOnSelect write FRemoveOnSelect default False;
    property IniStorage: TFormPlacement read GetStorage write SetStorage;
    property SeparateSize: Word read FSeparateSize write SetSeparateSize default 0;
    property RecentMenu: TMenuItem read FRecentMenu write SetRecentMenu;
    property ShowAccelChar: Boolean read FShowAccelChar write SetShowAccelChar default True;
    property StartAccel: Cardinal read FStartAccel write SetStartAccel default 1;
    property OnChange: TNotifyEvent read FOnChange write FOnChange;
    property OnClick: TClickMenuEvent read FOnClick write FOnClick;
    property OnGetItemData: TGetItemEvent read FOnGetItem write FOnGetItem;
    property OnReadItem: TReadItemEvent read FOnReadItem write FOnReadItem;
    property OnWriteItem: TWriteItemEvent read FOnWriteItem write FOnWriteItem;
  end;

{ TRecentStrings }

  TRecentStrings = class(TStringList)
  private
    FMaxSize: Integer;
    FMode: TRecentMode;
    procedure SetMaxSize(Value: Integer);
  public
    constructor Create;
    function Add(const S: string): Integer; override;
    procedure AddStrings(Strings: TStrings); override;
    procedure DeleteExceed;
    procedure Remove(const S: String);
    property MaxSize: Integer read FMaxSize write SetMaxSize;
    property Mode: TRecentMode read FMode write FMode;
  end;

implementation

uses Controls, MaxMin, AppUtils;

const
  siRecentItem = 'Item_%d';
  siRecentData = 'User_%d';

{ TMRUManager }

constructor TMRUManager.Create(AOwner: TComponent);
begin
  inherited Create(AOwner);
  FList := TRecentStrings.Create;
  FItems := TList.Create;
  TRecentStrings(FList).OnChange := ListChanged;
  FIniLink := TIniLink.Create;
  FIniLink.OnSave := IniSave;
  FIniLink.OnLoad := IniLoad;
  FAutoUpdate := True;
  FAutoEnable := True;
  FShowAccelChar := True;
  FStartAccel := 1;
end;

destructor TMRUManager.Destroy;
begin
  ClearRecentMenu;
  FIniLink.Free;
  TRecentStrings(FList).OnChange := nil;
  FList.Free;
  FItems.Free;
  FItems := nil;
  inherited Destroy;
end;

procedure TMRUManager.Notification(AComponent: TComponent; Operation: TOperation);
begin
  inherited Notification(AComponent, Operation);
  if (AComponent = RecentMenu) and (Operation = opRemove) then
    RecentMenu := nil;
end;

procedure TMRUManager.GetItemData(var Caption: string; var ShortCut: TShortCut;
  UserData: Longint);
begin
  if Assigned(FOnGetItem) then FOnGetItem(Self, Caption, ShortCut, UserData);
end;

procedure TMRUManager.DoClick(const RecentName, Caption: string; UserData: Longint);
begin
  if Assigned(FOnClick) then FOnClick(Self, RecentName, Caption, UserData);
end;

procedure TMRUManager.MenuItemClick(Sender: TObject);
var
  I: Integer;
begin
  if Sender is TMenuItem then begin
    I := TMenuItem(Sender).Tag;
    if (I >= 0) and (I < FList.Count) then
      try
        DoClick(FList[I], TMenuItem(Sender).Caption, Longint(FList.Objects[I]));
      finally
        if RemoveOnSelect then Remove(FList[I]);
      end;
  end;
end;

function TMRUManager.GetCapacity: Integer;
begin
  Result := TRecentStrings(FList).MaxSize;
end;

procedure TMRUManager.SetCapacity(Value: Integer);
begin
  TRecentStrings(FList).MaxSize := Value;
end;

function TMRUManager.GetMode: TRecentMode;
begin
  Result := TRecentStrings(FList).Mode;
end;

procedure TMRUManager.SetMode(Value: TRecentMode);
begin
  TRecentStrings(FList).Mode := Value;
end;

function TMRUManager.GetStorage: TFormPlacement;
begin
  Result := FIniLink.Storage;
end;

procedure TMRUManager.SetStorage(Value: TFormPlacement);
begin
  FIniLink.Storage := Value;
end;

procedure TMRUManager.SetAutoEnable(Value: Boolean);
begin
  if FAutoEnable <> Value then begin
    FAutoEnable := Value;
    if Assigned(FRecentMenu) and FAutoEnable then
      FRecentMenu.Enabled := FRecentMenu.Count > 0;
  end;
end;

procedure TMRUManager.SetStartAccel(Value: Cardinal);
begin
  if FStartAccel <> Value then begin
    FStartAccel := Value;
    if FAutoUpdate then UpdateRecentMenu;
  end;
end;

procedure TMRUManager.SetAccelDelimiter(Value: TAccelDelimiter);
begin
  if FAccelDelimiter <> Value then begin
    FAccelDelimiter := Value;
    if FAutoUpdate and ShowAccelChar then UpdateRecentMenu;
  end;
end;

procedure TMRUManager.SetShowAccelChar(Value: Boolean);
begin
  if FShowAccelChar <> Value then begin
    FShowAccelChar := Value;
    if FAutoUpdate then UpdateRecentMenu;
  end;
end;

procedure TMRUManager.Add(const RecentName: string; UserData: Longint);
begin
  FList.AddObject(RecentName, TObject(UserData));
end;

procedure TMRUManager.Clear;
begin
  FList.Clear;
end;

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
国产成人免费在线观看不卡| 久久99久久久久久久久久久| 精品久久久影院| 制服丝袜亚洲网站| 欧美一区永久视频免费观看| 在线不卡免费av| 欧美电影精品一区二区| 欧美一区二区三区视频免费| 欧美电影免费观看高清完整版在线| 欧美精品丝袜中出| 欧美一区二区精美| 久久综合九色综合97婷婷女人| 欧美一级电影网站| 精品国产百合女同互慰| 国产亚洲成av人在线观看导航| 国产精品麻豆网站| 一区二区三区日韩精品视频| 一区二区理论电影在线观看| 午夜免费久久看| 久久99精品久久久久久动态图 | 99国产精品久久久久久久久久| 高清成人免费视频| 91麻豆免费在线观看| 色狠狠色噜噜噜综合网| 欧美日本精品一区二区三区| 欧美tickling挠脚心丨vk| 欧美激情综合五月色丁香| 中文字幕欧美一| 亚洲已满18点击进入久久| 亚洲成人精品一区| 国产不卡高清在线观看视频| 91成人免费电影| 日韩欧美资源站| 中文字幕欧美日本乱码一线二线| 一区二区三区四区不卡在线| 九九视频精品免费| 99久久99久久久精品齐齐| 91精品国产综合久久香蕉麻豆 | 91啪在线观看| 日韩欧美视频在线| 亚洲品质自拍视频| 久久黄色级2电影| 99天天综合性| 久久先锋影音av鲁色资源网| 一区二区欧美视频| 国产成人午夜高潮毛片| 欧美日韩久久不卡| 亚洲三级在线播放| 激情六月婷婷久久| 欧美理论片在线| 亚洲欧美激情视频在线观看一区二区三区| 丝袜亚洲另类欧美| av在线一区二区| 久久久久久久综合| 美女一区二区在线观看| 欧美无人高清视频在线观看| 亚洲天堂中文字幕| 国产成人精品免费网站| 精品国产三级电影在线观看| 午夜精品福利一区二区三区av| www.欧美日韩国产在线| 久久九九全国免费| 久久se这里有精品| 日韩欧美国产一区二区三区| 天涯成人国产亚洲精品一区av| 色综合久久久久综合体桃花网| 国产欧美日韩一区二区三区在线观看| 免费人成精品欧美精品 | 免费成人美女在线观看.| 色婷婷综合久久久中文字幕| 日本一区二区免费在线观看视频 | 国产成人免费9x9x人网站视频| 欧美一区二区三区四区高清| 日韩电影在线免费看| 欧美日韩情趣电影| 日韩av成人高清| 欧美一区二区三区视频在线| 日韩黄色免费电影| 欧美肥妇free| 麻豆精品在线观看| 精品日韩成人av| 国产真实乱子伦精品视频| 欧美大片一区二区| 久久99国产精品久久99| 亚洲精品一区二区三区香蕉| 国产最新精品免费| 国产精品天天看| 色婷婷精品大在线视频| 亚洲第一狼人社区| 欧美一区二区三区婷婷月色| 久久99日本精品| 国产欧美日韩在线视频| 色综合久久综合| 丝袜美腿亚洲一区二区图片| 精品福利二区三区| 国产99一区视频免费| 亚洲摸摸操操av| 8x福利精品第一导航| 国精产品一区一区三区mba桃花 | 在线看国产日韩| 日日夜夜免费精品| 久久众筹精品私拍模特| jlzzjlzz亚洲日本少妇| 亚洲一区二区五区| 精品国产凹凸成av人网站| 国产成人亚洲综合a∨婷婷| 中文字幕综合网| 91麻豆精品91久久久久久清纯| 激情小说亚洲一区| 亚洲男人都懂的| 日韩欧美专区在线| 色一情一伦一子一伦一区| 日韩高清欧美激情| 中文字幕在线播放不卡一区| 欧美日韩不卡一区| 国产.精品.日韩.另类.中文.在线.播放| 亚洲欧美另类在线| 久久一日本道色综合| 欧美亚洲日本国产| 国产成人精品影院| 午夜久久久影院| 亚洲色图制服诱惑| 欧美sm美女调教| 欧美日韩一区二区三区四区| 成人午夜碰碰视频| 美日韩一区二区| 亚洲国产精品综合小说图片区| 久久影院电视剧免费观看| 欧美日韩成人综合在线一区二区| 国产成人aaa| 激情五月激情综合网| 亚洲成人午夜电影| 亚洲黄一区二区三区| 国产片一区二区三区| 日韩亚洲欧美成人一区| 欧美亚洲动漫制服丝袜| 99视频一区二区| 国产精品123| 国产一区二区成人久久免费影院 | 国产精品三级av在线播放| 91精品国产一区二区人妖| 91成人国产精品| 色综合婷婷久久| av亚洲精华国产精华| 国产999精品久久| 国产自产2019最新不卡| 精彩视频一区二区三区| 捆绑调教一区二区三区| 麻豆91精品视频| 日韩不卡一区二区三区| 亚洲123区在线观看| 亚洲午夜久久久久| 一区二区三区不卡在线观看| 亚洲欧美激情一区二区| 亚洲精品国产第一综合99久久| 国产精品久久毛片| 国产精品女主播av| 中文av字幕一区| ㊣最新国产の精品bt伙计久久| 国产精品美女一区二区| 亚洲欧洲在线观看av| 亚洲欧美日韩国产综合| 亚洲日本韩国一区| 亚洲午夜激情av| 日韩成人精品在线| 九九国产精品视频| 国产精品一级二级三级| 成人美女视频在线观看| 91免费国产在线| 欧美久久久一区| 精品成a人在线观看| 国产精品丝袜一区| 亚洲人一二三区| 亚洲成av人片在线观看无码| 日韩国产一二三区| 国产一区二区调教| 91网址在线看| 56国语精品自产拍在线观看| 欧美精品一区二区在线播放 | 亚洲欧美另类综合偷拍| 亚洲一区二区三区在线看| 日本中文在线一区| 国产大陆亚洲精品国产| 91日韩一区二区三区| 日韩写真欧美这视频| 欧美韩国日本不卡| 亚洲第一电影网| 国产传媒欧美日韩成人| 在线视频综合导航| 欧美成人艳星乳罩| 亚洲免费电影在线| 玖玖九九国产精品| 色系网站成人免费| 欧美精品一区二区三区一线天视频 | 国产乱人伦偷精品视频不卡| 91网站视频在线观看| 精品乱人伦一区二区三区| 国产精品久久久久一区二区三区共| 午夜国产不卡在线观看视频| 成人免费观看av|