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

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

?? placemnt.pas

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

unit Placemnt;

{$I RX.INC}

interface

uses RTLConsts, Variants, Windows, Registry, Controls, Messages, Classes, Forms, IniFiles, Dialogs, VclUtils, RxHook;

type
  TPlacementOption = (fpState, fpPosition, fpActiveControl);
  TPlacementOptions = set of TPlacementOption;
  TPlacementOperation = (poSave, poRestore);
{$IFDEF WIN32}
  TPlacementRegRoot = (prCurrentUser, prLocalMachine, prCurrentConfig,
    prClassesRoot, prUsers, prDynData);
{$ENDIF}

  TIniLink = class;

{ TWinMinMaxInfo }

  TFormPlacement = class;

  TWinMinMaxInfo = class(TPersistent)
  private
    FOwner: TFormPlacement;
    FMinMaxInfo: TMinMaxInfo;
    function GetMinMaxInfo(Index: Integer): Integer;
    procedure SetMinMaxInfo(Index: Integer; Value: Integer);
  public
    function DefaultMinMaxInfo: Boolean;
    procedure Assign(Source: TPersistent); override;
  published
    property MaxPosLeft: Integer index 0 read GetMinMaxInfo write SetMinMaxInfo default 0;
    property MaxPosTop: Integer index 1 read GetMinMaxInfo write SetMinMaxInfo default 0;
    property MaxSizeHeight: Integer index 2 read GetMinMaxInfo write SetMinMaxInfo default 0;
    property MaxSizeWidth: Integer index 3 read GetMinMaxInfo write SetMinMaxInfo default 0;
    property MaxTrackHeight: Integer index 4 read GetMinMaxInfo write SetMinMaxInfo default 0;
    property MaxTrackWidth: Integer index 5 read GetMinMaxInfo write SetMinMaxInfo default 0;
    property MinTrackHeight: Integer index 6 read GetMinMaxInfo write SetMinMaxInfo default 0;
    property MinTrackWidth: Integer index 7 read GetMinMaxInfo write SetMinMaxInfo default 0;
  end;

{ TFormPlacement }

  TFormPlacement = class(TComponent)
  private
    FActive: Boolean;
    FIniFileName: String;
    FIniSection: String;
    FIniFile: TIniFile;
    FUseRegistry: Boolean;
{$IFDEF WIN32}
    FRegIniFile: TRegIniFile;
    FRegistryRoot: TPlacementRegRoot;
{$ENDIF WIN32}
    FLinks: TList;
    FOptions: TPlacementOptions;
    FVersion: Integer;
    FSaved: Boolean;
    FRestored: Boolean;
    FDestroying: Boolean;
    FPreventResize: Boolean;
    FWinMinMaxInfo: TWinMinMaxInfo;
    FDefMaximize: Boolean;
    FWinHook: TRxWindowHook;
    FSaveFormShow: TNotifyEvent;
    FSaveFormDestroy: TNotifyEvent;
    FSaveFormCloseQuery: TCloseQueryEvent;
    FOnSavePlacement: TNotifyEvent;
    FOnRestorePlacement: TNotifyEvent;
    procedure SetEvents;
    procedure RestoreEvents;
    procedure SetHook;
    procedure ReleaseHook;
    procedure CheckToggleHook;
    function CheckMinMaxInfo: Boolean;
    procedure MinMaxInfoModified;
    procedure SetWinMinMaxInfo(Value: TWinMinMaxInfo);
    function GetIniSection: string;
    procedure SetIniSection(const Value: string);
    function GetIniFileName: string;
    procedure SetIniFileName(const Value: string);
    function GetIniFile: TObject;
    procedure SetPreventResize(Value: Boolean);
    procedure UpdatePreventResize;
    procedure UpdatePlacement;
    procedure IniNeeded(ReadOnly: Boolean);
    procedure IniFree;
    procedure AddLink(ALink: TIniLink);
    procedure NotifyLinks(Operation: TPlacementOperation);
    procedure RemoveLink(ALink: TIniLink);
    procedure WndMessage(Sender: TObject; var Msg: TMessage; var Handled: Boolean);
    procedure FormShow(Sender: TObject);
    procedure FormCloseQuery(Sender: TObject; var CanClose: Boolean);
    procedure FormDestroy(Sender: TObject);
    function GetForm: TForm;
  protected
    procedure Loaded; override;
    procedure Save; dynamic;
    procedure Restore; dynamic;
    procedure SavePlacement; virtual;
    procedure RestorePlacement; virtual;
    function DoReadString(const Section, Ident, Default: string): string; virtual;
    procedure DoWriteString(const Section, Ident, Value: string); virtual;
    property Form: TForm read GetForm;
  public
    constructor Create(AOwner: TComponent); override;
    destructor Destroy; override;
    procedure SaveFormPlacement;
    procedure RestoreFormPlacement;
    function ReadString(const Ident, Default: string): string;
    procedure WriteString(const Ident, Value: string);
    function ReadInteger(const Ident: string; Default: Longint): Longint;
    procedure WriteInteger(const Ident: string; Value: Longint);
    procedure EraseSections;
    property IniFileObject: TObject read GetIniFile;
    property IniFile: TIniFile read FIniFile;
{$IFDEF WIN32}
    property RegIniFile: TRegIniFile read FRegIniFile;
{$ENDIF WIN32}
  published
    property Active: Boolean read FActive write FActive default True;
    property IniFileName: string read GetIniFileName write SetIniFileName;
    property IniSection: string read GetIniSection write SetIniSection;
    property MinMaxInfo: TWinMinMaxInfo read FWinMinMaxInfo write SetWinMinMaxInfo;
    property Options: TPlacementOptions read FOptions write FOptions default [fpState, fpPosition];
    property PreventResize: Boolean read FPreventResize write SetPreventResize default False;
{$IFDEF WIN32}
    property RegistryRoot: TPlacementRegRoot read FRegistryRoot write FRegistryRoot default prCurrentUser;
{$ENDIF WIN32}
    property UseRegistry: Boolean read FUseRegistry write FUseRegistry default False;
    property Version: Integer read FVersion write FVersion default 0;
    property OnSavePlacement: TNotifyEvent read FOnSavePlacement
      write FOnSavePlacement;
    property OnRestorePlacement: TNotifyEvent read FOnRestorePlacement
      write FOnRestorePlacement;
  end;

{ TFormStorage }

{$IFDEF RX_D3}
  TStoredValues = class;
  TStoredValue = class;
{$ENDIF RX_D3}

  TFormStorage = class(TFormPlacement)
  private
    FStoredProps: TStrings;
{$IFDEF RX_D3}
    FStoredValues: TStoredValues;
{$ENDIF RX_D3}
    procedure SetStoredProps(Value: TStrings);
{$IFDEF RX_D3}
    procedure SetStoredValues(Value: TStoredValues);
    function GetStoredValue(const Name: string): Variant;
    procedure SetStoredValue(const Name: string; Value: Variant);
{$ENDIF RX_D3}
  protected
    procedure Loaded; override;
    procedure Notification(AComponent: TComponent; Operation: TOperation); override;
    procedure SavePlacement; override;
    procedure RestorePlacement; override;
    procedure SaveProperties; virtual;
    procedure RestoreProperties; virtual;
    procedure WriteState(Writer: TWriter); override;
  public
    constructor Create(AOwner: TComponent); override;
    destructor Destroy; override;
{$IFDEF WIN32}
    procedure SetNotification;
{$ENDIF WIN32}
{$IFDEF RX_D3}
    property StoredValue[const Name: string]: Variant read GetStoredValue write SetStoredValue;
{$ENDIF RX_D3}
  published
    property StoredProps: TStrings read FStoredProps write SetStoredProps;
{$IFDEF RX_D3}
    property StoredValues: TStoredValues read FStoredValues write SetStoredValues;
{$ENDIF RX_D3}
  end;

{ TIniLink }

  TIniLink = class(TPersistent)
  private
    FStorage: TFormPlacement;
    FOnSave: TNotifyEvent;
    FOnLoad: TNotifyEvent;
    function GetIniObject: TObject;
    function GetRootSection: string;
    procedure SetStorage(Value: TFormPlacement);
  protected
    procedure SaveToIni; virtual;
    procedure LoadFromIni; virtual;
  public
    destructor Destroy; override;
    property IniObject: TObject read GetIniObject;
    property Storage: TFormPlacement read FStorage write SetStorage;
    property RootSection: string read GetRootSection;
    property OnSave: TNotifyEvent read FOnSave write FOnSave;
    property OnLoad: TNotifyEvent read FOnLoad write FOnLoad;
  end;

{$IFDEF RX_D3}

{ TStoredValue }

  TStoredValueEvent = procedure(Sender: TStoredValue; var Value: Variant) of object;

  TStoredValue = class(TCollectionItem)
  private
    FName: string;
    FValue: Variant;
    FKeyString: string;
    FOnSave: TStoredValueEvent;
    FOnRestore: TStoredValueEvent;
    function IsValueStored: Boolean;
    function GetStoredValues: TStoredValues;
  protected
    function GetDisplayName: string; override;
    procedure SetDisplayName(const Value: string); override;
  public
    constructor Create(Collection: TCollection); override;
    procedure Assign(Source: TPersistent); override;
    procedure Clear;
    procedure Save; virtual;
    procedure Restore; virtual;
    property StoredValues: TStoredValues read GetStoredValues;
  published
    property Name: string read FName write SetDisplayName;
    property Value: Variant read FValue write FValue stored IsValueStored;
    property KeyString: string read FKeyString write FKeyString;
    property OnSave: TStoredValueEvent read FOnSave write FOnSave;
    property OnRestore: TStoredValueEvent read FOnRestore write FOnRestore;
  end;

{ TStoredValues }

  TStoredValues = class({$IFDEF RX_D4}TOwnedCollection{$ELSE}TCollection{$ENDIF})
  private
    FStorage: TFormPlacement;
    function GetValue(const Name: string): TStoredValue;
    procedure SetValue(const Name: string; StoredValue: TStoredValue);
    function GetStoredValue(const Name: string): Variant;
    procedure SetStoredValue(const Name: string; Value: Variant);
    function GetItem(Index: Integer): TStoredValue;
    procedure SetItem(Index: Integer; StoredValue: TStoredValue);
  public
{$IFDEF RX_D4}
    constructor Create(AOwner: TPersistent);
{$ELSE}
    constructor Create;
{$ENDIF}
    function IndexOf(const Name: string): Integer;
    procedure SaveValues; virtual;
    procedure RestoreValues; virtual;
    property Storage: TFormPlacement read FStorage write FStorage;
    property Items[Index: Integer]: TStoredValue read GetItem write SetItem; default;
    property Values[const Name: string]: TStoredValue read GetValue write SetValue;
    property StoredValue[const Name: string]: Variant read GetStoredValue write SetStoredValue;
  end;

{$ENDIF RX_D3}

implementation

uses SysUtils,
{$IFDEF RX_D3}
  Consts,
{$ENDIF RX_D3}
  AppUtils, rxStrUtils, RxProps;

const
{ The following string should not be localized }
  siActiveCtrl = 'ActiveControl';
  siVisible = 'Visible';
  siVersion = 'FormVersion';

{ TFormPlacement }

constructor TFormPlacement.Create(AOwner: TComponent);
begin
  inherited Create(AOwner);
  FIniFileName := EmptyStr;
  FIniSection := EmptyStr;
  FActive := True;
  if AOwner is TForm then FOptions := [fpState, fpPosition]
  else FOptions := [];
  FWinHook := TRxWindowHook.Create(Self);
  FWinHook.AfterMessage := WndMessage;
  FWinMinMaxInfo := TWinMinMaxInfo.Create;
  FWinMinMaxInfo.FOwner := Self;
  FLinks := TList.Create;
end;

destructor TFormPlacement.Destroy;
begin
  IniFree;
  while FLinks.Count > 0 do RemoveLink(FLinks.Last);
  FLinks.Free;
  if not (csDesigning in ComponentState) then begin
    ReleaseHook;
    RestoreEvents;
  end;
  //DisposeStr(FIniFileName);
  //DisposeStr(FIniSection);
  FWinMinMaxInfo.Free;
  inherited Destroy;
end;

procedure TFormPlacement.Loaded;
var
  Loading: Boolean;
begin
  Loading := csLoading in ComponentState;
  inherited Loaded;
  if not (csDesigning in ComponentState) then begin
    if Loading then SetEvents;
    CheckToggleHook;
  end;
end;

procedure TFormPlacement.AddLink(ALink: TIniLink);
begin
  FLinks.Add(ALink);
  ALink.FStorage := Self;
end;

procedure TFormPlacement.NotifyLinks(Operation: TPlacementOperation);
var
  I: Integer;
begin
  for I := 0 to FLinks.Count - 1 do
    with TIniLink(FLinks[I]) do
      case Operation of
        poSave: SaveToIni;
        poRestore: LoadFromIni;
      end;
end;

procedure TFormPlacement.RemoveLink(ALink: TIniLink);
begin
  ALink.FStorage := nil;
  FLinks.Remove(ALink);
end;

function TFormPlacement.GetForm: TForm;
begin
  if Owner is TCustomForm then Result := TForm(Owner as TCustomForm)
  else Result := nil;
end;

procedure TFormPlacement.SetEvents;
begin
  if Owner is TCustomForm then begin
    with TForm(Form) do begin
      FSaveFormShow := OnShow;
      OnShow := FormShow;
      FSaveFormCloseQuery := OnCloseQuery;
      OnCloseQuery := FormCloseQuery;
      FSaveFormDestroy := OnDestroy;
      OnDestroy := FormDestroy;
      FDefMaximize := (biMaximize in BorderIcons);
    end;
    if FPreventResize then UpdatePreventResize;
  end;
end;

procedure TFormPlacement.RestoreEvents;
begin
  if (Owner <> nil) and (Owner is TCustomForm) then
    with TForm(Form) do begin
      OnShow := FSaveFormShow;
      OnCloseQuery := FSaveFormCloseQuery;
      OnDestroy := FSaveFormDestroy;
    end;
end;

procedure TFormPlacement.SetHook;
begin
  if not (csDesigning in ComponentState) and (Owner <> nil) and
    (Owner is TCustomForm) then
    FWinHook.WinControl := Form;
end;

procedure TFormPlacement.ReleaseHook;
begin
  FWinHook.WinControl := nil;
end;

procedure TFormPlacement.CheckToggleHook;
begin
  if CheckMinMaxInfo or PreventResize then SetHook else ReleaseHook;
end;

function TFormPlacement.CheckMinMaxInfo: Boolean;
begin
  Result := not FWinMinMaxInfo.DefaultMinMaxInfo;
end;

procedure TFormPlacement.MinMaxInfoModified;
begin
  UpdatePlacement;
  if not (csLoading in ComponentState) then CheckToggleHook;
end;

procedure TFormPlacement.SetWinMinMaxInfo(Value: TWinMinMaxInfo);
begin
  FWinMinMaxInfo.Assign(Value);
end;

procedure TFormPlacement.WndMessage(Sender: TObject; var Msg: TMessage;
  var Handled: Boolean);

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
五月激情综合色| 午夜成人免费视频| 日韩精品一区二区三区三区免费| 色综合久久88色综合天天| 国产一区中文字幕| 久久91精品国产91久久小草| 蜜臀a∨国产成人精品| 六月丁香婷婷色狠狠久久| 美腿丝袜在线亚洲一区| 香蕉乱码成人久久天堂爱免费| 一区二区免费视频| 亚洲国产日韩一区二区| 日韩av成人高清| 久久99精品国产麻豆婷婷洗澡| 九九精品视频在线看| 国产一区二区三区免费看| 国产白丝精品91爽爽久久| 成人激情动漫在线观看| av资源网一区| 色哟哟在线观看一区二区三区| 91视频精品在这里| 在线观看日韩毛片| 制服丝袜亚洲播放| 国产亚洲精品超碰| 1024成人网色www| 亚洲成人综合视频| 韩国v欧美v日本v亚洲v| 99久久99久久精品免费观看| 欧美性色欧美a在线播放| 91精品国产综合久久精品麻豆| 精品日韩欧美在线| 亚洲三级免费电影| 亚洲va韩国va欧美va| 韩国中文字幕2020精品| 91视频91自| 欧美变态tickle挠乳网站| 国产精品污网站| 丝袜亚洲另类丝袜在线| 处破女av一区二区| 欧美色图片你懂的| 亚洲国产精品传媒在线观看| 午夜精品久久久久久久久久| 国产91在线观看丝袜| 337p亚洲精品色噜噜噜| 日本一二三不卡| 日本特黄久久久高潮| 成人开心网精品视频| 91精品国产色综合久久不卡电影| 欧美国产综合一区二区| 久久成人麻豆午夜电影| 欧美怡红院视频| 国产日韩精品一区| 日韩在线播放一区二区| 99re6这里只有精品视频在线观看 99re8在线精品视频免费播放 | 99久久精品国产导航| 91久久奴性调教| 欧美韩日一区二区三区| 久久99热国产| 777欧美精品| 夜夜嗨av一区二区三区中文字幕 | 色哟哟在线观看一区二区三区| 国产亚洲欧美日韩日本| 美女视频黄久久| 91精品国产入口| 五月天精品一区二区三区| 色美美综合视频| 国产精品国产三级国产aⅴ中文| 国产一区二区福利视频| 精品日产卡一卡二卡麻豆| 蜜臀va亚洲va欧美va天堂| 538在线一区二区精品国产| 亚洲成人第一页| 欧美在线播放高清精品| 亚洲欧美日韩一区二区三区在线观看| 韩国女主播一区| 久久精品视频免费观看| 国产精品资源网| 国产亚洲精品免费| 懂色av一区二区三区蜜臀 | 国产成人免费xxxxxxxx| 久久日一线二线三线suv| 久久精品999| 久久综合精品国产一区二区三区| 激情深爱一区二区| 久久久精品人体av艺术| 国产精品亚洲人在线观看| 国产清纯在线一区二区www| 国产美女精品人人做人人爽| 26uuu久久天堂性欧美| 国产黄色精品网站| 日韩一区在线免费观看| 欧美三级蜜桃2在线观看| 日本麻豆一区二区三区视频| 欧美成人一级视频| 国产精品12区| 欧美高清一级片在线观看| 91视频在线观看| 五月婷婷另类国产| 精品粉嫩超白一线天av| 高清视频一区二区| 亚洲少妇最新在线视频| 欧美精品在线视频| 国产电影精品久久禁18| 亚洲精品成人少妇| 欧美成人a∨高清免费观看| 高清在线观看日韩| 午夜精品视频在线观看| 日韩免费观看高清完整版| 成人午夜视频免费看| 亚洲国产精品一区二区久久 | 色综合天天综合给合国产| 亚洲国产裸拍裸体视频在线观看乱了| 日韩精品一区二区三区视频| 成人黄色在线看| 美女脱光内衣内裤视频久久影院| 国产精品沙发午睡系列990531| 欧美三级乱人伦电影| 丁香亚洲综合激情啪啪综合| 亚洲成av人片一区二区梦乃 | 欧洲一区在线电影| 狠狠色丁香婷婷综合| 亚洲一二三区在线观看| 国产视频一区二区在线| 91精品久久久久久久久99蜜臂| 成人蜜臀av电影| 精品在线一区二区三区| 亚洲专区一二三| 中文在线资源观看网站视频免费不卡| 欧美精品在线观看一区二区| 99久久婷婷国产| 国产乱码一区二区三区| 美国av一区二区| 亚洲777理论| 一区二区三区在线免费播放| 精品女同一区二区| 91精品综合久久久久久| 色婷婷狠狠综合| jlzzjlzz亚洲日本少妇| 国产河南妇女毛片精品久久久| 蜜臀av性久久久久蜜臀aⅴ流畅| 亚洲一区二区三区小说| 中文字幕一区二区三区不卡| 欧美国产日韩在线观看| 久久亚洲一区二区三区四区| 日韩三级在线免费观看| 欧美日韩视频在线第一区 | 亚洲视频 欧洲视频| 国产精品久久久久久久久久久免费看 | 欧美激情艳妇裸体舞| 精品福利一二区| 日韩欧美激情在线| 91麻豆精品国产91久久久久| 88在线观看91蜜桃国自产| 欧美日韩国产三级| 欧美日韩一卡二卡三卡 | 99re在线视频这里只有精品| 高清视频一区二区| 成人激情免费网站| k8久久久一区二区三区 | 欧美tickle裸体挠脚心vk| 欧美一区二区三区在线观看视频| 制服丝袜国产精品| 欧美大片在线观看| 2014亚洲片线观看视频免费| 久久一夜天堂av一区二区三区| 久久精品一区二区| 欧美高清在线精品一区| 综合激情成人伊人| 亚洲一区在线观看视频| 偷拍亚洲欧洲综合| 精品一区二区三区在线观看| 国产成人鲁色资源国产91色综| 成人黄色免费短视频| 色久综合一二码| 欧美一区二区在线看| 2020国产精品自拍| 中文字幕一区二区三| 亚洲小说欧美激情另类| 麻豆精品一区二区| 国产成人免费视频网站| 在线精品视频一区二区| 日韩一区二区三区精品视频| 欧美国产综合色视频| 亚洲尤物在线视频观看| 久久99日本精品| 91丨porny丨蝌蚪视频| 9191久久久久久久久久久| 国产调教视频一区| 亚洲福中文字幕伊人影院| 国产一区二区精品久久99| 色综合久久66| 久久一二三国产| 亚洲在线视频一区| 韩日av一区二区| 欧美三级在线播放| 欧美高清在线视频| 蜜桃一区二区三区四区| 色婷婷av一区二区三区gif| 精品少妇一区二区三区在线播放| 亚洲你懂的在线视频|