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

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

?? cdibfeatures.pas

?? Delphi控件
?? PAS
?? 第 1 頁 / 共 2 頁
字號:
unit cDIBFeatures;

{-----------------------------------------------------------------------------
The contents of this file are subject to the Mozilla Public License
Version 1.1 (the "License"); you may not use this file except in compliance
with the License. You may obtain a copy of the License at
http://www.mozilla.org/MPL/MPL-1.1.html

Software distributed under the License is distributed on an "AS IS" basis,
WITHOUT WARRANTY OF ANY KIND, either expressed or implied. See the License for
the specific language governing rights and limitations under the License.

The Original Code is: cDIBFeatures.PAS, released August 28, 2000.

The Initial Developer of the Original Code is Peter Morris (pete@droopyeyes.com),
Portions created by Peter Morris are Copyright (C) 2000 Peter Morris.
All Rights Reserved.

Purpose of file:
Allows component subclassing at design-time.  You can apply various descendents of
TDIBFeature to any DIB component, allowing it to move at runtime, highlight when the
mouse enters, or any other custom functionality a person designs.
New features are added by calling the RegisterDIBFeature command.

Contributor(s):
None as yet


Last Modified: August 28, 2000

You may retrieve the latest version of this file at http://www.droopyeyes.com


Known Issues:
To be updated !
-----------------------------------------------------------------------------}


interface

uses
  Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs,
  cDIB;

type
  TAllowFeatureEvent = procedure(Sender: TObject; Control: TControl; var Allow: Boolean) of
  object;
  TMouseButtons = set of TMouseButton;

  TControlItem = class(TCollectionItem)
  private
    FControl: TControl;
    procedure SetControl(const Value: TControl);
  protected
  public
    procedure AssignTo(Dest: TPersistent); override;
    function GetDisplayName: string; override;
  published
    property Control: TControl read FControl write SetControl;
  end;

  TControlList = class(TOwnedCollection)
  private
    function GetItem(Index: Integer): TControlItem;
    procedure SetItem(Index: Integer; Value: TControlItem);
  protected
  public
    constructor Create(AOwner: TComponent);

    function Add: TControlItem;
    property Items[Index: Integer]: TControlItem read GetItem write SetItem; default;
  published
  end;

  TDIBFeature = class(TComponent)
  private
    FControl: TControl;
  protected
    procedure AssignTo(Dest: TPersistent); override;
    property Control: TControl read FControl;
  public
    class function CanApplyTo(aComponent: TPersistent): Boolean; virtual;
    class function GetDisplayName: string; virtual;
    function GetOwner: TPersistent; override;
    procedure WndProc(var Message: TMessage; var Handled: Boolean); virtual; abstract;
  published
  end;

  TDIBFeatureItem = class(TCollectionItem)
  private
    FSubPropertiesSize: Integer;
    FSubProperties: Pointer;
    FFeatureParameters: string;
    FDIBFeature: TDIBFeature;
    FEnabled: Boolean;
    FFeatureClassName: string;
    procedure ReadParams(S: TStream);
    procedure SetFeatureClassName(const Value: string);
    procedure WriteParams(S: TStream);
  protected
    procedure AssignTo(Dest: TPersistent); override;
    procedure DefineProperties(Filer: TFiler); override;
    procedure Loaded; virtual;
  public
    constructor Create(Collection: TCollection); override;
    destructor Destroy; override;

    function GetDisplayName: string; override;
    procedure WndProc(var Message: TMessage; var Handled: Boolean); virtual;

    property DIBFeature: TDIBFeature read FDIBFeature write FDIBFeature;

  published
    property Enabled: Boolean read FEnabled write FEnabled default True;
    property FeatureClassName: string read FFeatureClassName write SetFeatureClassName;
    property FeatureParameters: string read FFeatureParameters write FFeatureParameters;
  end;

  TDIBFeatures = class(TOwnedCollection)
  private
    FOwner: TComponent;
    function GetItem(Index: Integer): TDIBFeatureItem;
    procedure SetItem(Index: Integer; Value: TDIBFeatureItem);
  protected
    procedure Loaded; virtual;
    procedure Update(Item: TCollectionItem); override;
  public
    constructor Create(AOwner: TComponent);

    function Add: TDIBFeatureItem;
    procedure WndProc(var Message: TMessage; var Handled: Boolean); virtual;

    property Owner: TComponent read FOwner;
    property Items[Index: Integer]: TDIBFeatureItem read GetItem write SetItem; default;
  published
  end;

  TDIBFeatureClass = class of TDIBFeature;

  TMoveableDIB = class(TDIBFeature)
  private
    FMoving: Boolean;
    FOrigX,
    FOrigY,
    FX,
    FY: Integer;
    FAllowVertical: Boolean;
    FAllowHorizontal: Boolean;
    FBorderSize,
    FSnapSize: Byte;
    FMouseButtons: TMouseButtons;
    FMouseButton: TMouseButton;

    procedure DoKeyDown(Message: TWMKey);
    procedure DoMouseDown(Message: TMessage);
    procedure DoMouseUp;
    procedure DoMouseMove(Message: TMessage);
  protected
    procedure AssignTo(Dest: TPersistent); override;
  public
    constructor Create(AOwner: TComponent); override;
    class function GetDisplayName: string; override;
    procedure WndProc(var Message: TMessage; var Handled: Boolean); override;

  published
    property AllowHorizontal: Boolean read FAllowHorizontal write FAllowHorizontal;
    property AllowVertical: Boolean read FAllowVertical write FAllowVertical;
    property BorderSize: Byte read FBorderSize write FBorderSize;
    property MouseButtons: TMouseButtons read FMouseButtons write FMouseButtons;
    property SnapSize: Byte read FSnapSize write FSnapSize;
  end;

  THighlightDIB = class(TDIBFeature)
  private
    FOrigOpacity: Byte;
    FHighlightOpacity: Byte;
  protected
    procedure AssignTo(Dest: TPersistent); override;
  public
    constructor Create(AOwner: TComponent); override;
    class function CanApplyTo(aComponent: TPersistent): Boolean; override;
    class function GetDisplayName: string; override;
    procedure WndProc(var Message: TMessage; var Handled: Boolean); override;
  published
    property HighlightOpacity: Byte read FHighlightOpacity write FHighlightOpacity;
  end;

  TShapeableDIB = class(TDIBFeature)
  private
    FRegion: HRGN;
    FTransparentColor: TColor;
    FTransparentMode: TTransparentMode;
    FMaskLevel: Byte;
    FControlInvalidateTime: DWORD;
    procedure CalculateRegion;
  protected
    procedure AssignTo(Dest: TPersistent); override;
  public
    constructor Create(AOwner: TComponent); override;
    destructor Destroy; override;
    class function CanApplyTo(aComponent: TPersistent): Boolean; override;
    class function GetDisplayName: string; override;
    procedure WndProc(var Message: TMessage; var Handled: Boolean); override;
  published
    property TransparentColor: TColor read FTransparentColor write FTransparentColor;
    property TransparentMode: TTransparentMode read FTransparentMode write FTransparentMode;
    property MaskLevel: Byte read FMaskLevel write FMaskLevel;
  end;

function ClassByName(Value: string): TDIBFeatureClass;
procedure RegisterDIBFeature(aClass: TDIBFeatureClass);
var
  FeatureClasses: array of TDIBFeatureClass;

implementation

uses
  CDIBControl;

type
  EFeatureError = class(Exception);
  THackDIBControl = class(TCustomDIBControl);

function ClassByName(Value: string): TDIBFeatureClass;
var
  X: Integer;
begin
  Result := nil;
  for X := Length(FeatureClasses) - 1 downto 0 do 
  begin
    if CompareText(FeatureClasses[X].ClassName, Value) = 0 then 
    begin
      Result := FeatureClasses[X];
      Break;
    end;
  end;
end;

procedure RegisterDIBFeature(aClass: TDIBFeatureClass);
begin
  Classes.RegisterClass(aClass);
  Setlength(FeatureClasses, Length(FeatureClasses) + 1);
  FeatureClasses[Length(FeatureClasses) - 1] := aClass;
end;

{ TControlList }

function TControlList.Add: TControlItem;
begin
  Result := TControlItem(inherited Add);
end;

constructor TControlList.Create(AOwner: TComponent);
begin
  inherited Create(AOwner, TControlItem);
end;



function TControlList.GetItem(Index: Integer): TControlItem;
begin
  Result := TControlItem(inherited GetItem(Index));
end;

procedure TControlList.SetItem(Index: Integer; Value: TControlItem);
begin
  inherited SetItem(Index, Value);
end;

{ TDIBFeatureItem }
constructor TDIBFeatureItem.Create(Collection: TCollection);
begin
  inherited;
  FEnabled := True;
  FSubProperties := nil;
end;

procedure TDIBFeatureItem.DefineProperties(Filer: TFiler);
begin
  inherited;
  Filer.DefineBinaryProperty('DIBFeatureParameters', ReadParams, WriteParams,
  (FDIBFeature <> nil));
end;

destructor TDIBFeatureItem.Destroy;
begin
  if FSubProperties <> nil then Freemem(FSubProperties);
  if FDIBFeature <> nil then FDIBFeature.Free;
  inherited;
end;


function TDIBFeatureItem.GetDisplayName: string;
begin
  if FDIBFeature = nil then
    Result := 'DIB feature'
  else
    Result := FDIBFeature.GetDisplayName;
end;

procedure TDIBFeatureItem.ReadParams(S: TStream);
begin
  if S.Size > 0 then 
  begin
    FSubPropertiesSize := S.Size;
    Getmem(FSubProperties, S.Size);
    S.Read(FSubProperties^, S.Size);
  end 
  else
    FSubPropertiesSize := 0;
end;
(*
var
  Reader            : TReader;
begin
  Reader := TReader.Create(S, 4096);
  try
    Reader.IgnoreChildren := False;
    //This will create our DIBFeature item
    FeatureClassName := Reader.ReadString;
    Reader.ReadRootComponent(FDIBFeature);
  finally
    Reader.Free;
  end;
end;*)

procedure TDIBFeatureItem.Loaded;
var
  MS: TMemoryStream;
  Reader: TReader;
begin
  inherited;
  if FSubProperties <> nil then 
  begin
    MS := TMemoryStream.Create;
    try
      MS.SetSize(FSubPropertiesSize);
      move(FSubProperties^, MS.Memory^, MS.Size);

      Reader := TReader.Create(MS, 4096);
      try
        //This will create our DIBFeature item
        Reader.IgnoreChildren := False;
        FeatureClassName := Reader.ReadString;
        Reader.ReadRootComponent(FDIBFeature);
      finally
        Reader.Free;
      end;
    finally
      MS.Free;
    end;
  end;
end;


procedure TDIBFeatureItem.SetFeatureClassName(const Value: string);
var
  TheClass: TDIBFeatureClass;
begin
  TheClass := nil;
  if Value <> '' then 
  begin
    TheClass := ClassByName(Value);
    if TheClass = nil then
      raise eFeatureError.Create(Value + ' has not been registered');
  end;

  if FDIBFeature <> nil then 
  begin
    FDIBFeature.Free;
    FDIBFeature := nil;
  end;
  FFeatureClassName := Value;
  if TheClass <> nil then 
  begin
    FDIBFeature := TheClass.Create(TControl(TDIBFeatures(Collection).GetOwner));
    FDIBFeature.FControl := TControl(TDIBFeatures(Collection).GetOwner);
  end;
end;

procedure TDIBFeatureItem.WndProc(var Message: TMessage;
  var Handled: Boolean);
begin
  if Enabled then
    if FDIBFeature <> nil then
      FDIBFeature.WndProc(Message, Handled);
end;

procedure TDIBFeatureItem.WriteParams(S: TStream);
var
  Writer: TWriter;
begin
  Writer := TWriter.Create(S, 4096);
  try
    Writer.IgnoreChildren := False;
    Writer.WriteString(FFeatureClassName);
    Writer.WriteRootComponent(FDIBFeature);

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
欧美自拍丝袜亚洲| 婷婷久久综合九色综合绿巨人| 国产欧美日韩另类一区| 久久久久久久综合日本| 久久这里只有精品视频网| 精品国产一区二区三区久久影院 | 色婷婷综合久久久久中文一区二区| 国产精品亚洲综合一区在线观看| 国产一区二区美女诱惑| 国产成人精品亚洲午夜麻豆| 成人精品一区二区三区四区| av亚洲精华国产精华精| 色综合久久99| 3atv一区二区三区| 欧美精品一区二区三区视频| 国产亚洲一区字幕| 最新欧美精品一区二区三区| 亚洲码国产岛国毛片在线| 亚洲国产精品天堂| 欧美一三区三区四区免费在线看| 欧洲另类一二三四区| 9191久久久久久久久久久| 精品三级在线看| 中文在线资源观看网站视频免费不卡| 中文字幕一区视频| 亚洲综合色网站| 看国产成人h片视频| 国产成人精品aa毛片| 91蜜桃免费观看视频| 欧美日韩黄色影视| 久久久久国产精品人| 国产精品国产三级国产| 午夜伦欧美伦电影理论片| 国产一区在线观看麻豆| 91视频精品在这里| 91精品国产综合久久精品麻豆| 欧美v国产在线一区二区三区| 中文字幕 久热精品 视频在线| 亚洲一区在线观看免费观看电影高清| 七七婷婷婷婷精品国产| 成人黄色片在线观看| 欧美日韩激情在线| 国产丝袜在线精品| 亚洲综合视频在线| 国产成人在线免费观看| 欧美午夜不卡视频| 国产亚洲欧美色| 亚洲成人动漫在线观看| 福利视频网站一区二区三区| 欧美亚洲动漫精品| 国产婷婷一区二区| 日韩国产精品久久| 99久久综合狠狠综合久久| 欧美一区二区成人| 亚洲美女偷拍久久| 国产成人免费视频网站 | 91亚洲永久精品| 日韩精品一区二区三区中文不卡 | 亚洲影视在线观看| 国产精一区二区三区| 欧美猛男gaygay网站| 国产精品色在线| 久久精品国产一区二区| 一本一道久久a久久精品| 久久久精品中文字幕麻豆发布| 亚洲成人激情社区| 色综合久久88色综合天天免费| 久久久久久久久岛国免费| 亚洲chinese男男1069| 成人avav影音| 国产日韩欧美在线一区| 蜜臀av亚洲一区中文字幕| 色噜噜偷拍精品综合在线| 国产亚洲成年网址在线观看| 美女视频网站久久| 91激情五月电影| 综合av第一页| 成人妖精视频yjsp地址| 精品久久久久久最新网址| 日日摸夜夜添夜夜添精品视频 | 精品免费一区二区三区| 午夜视黄欧洲亚洲| 91国偷自产一区二区三区成为亚洲经典 | 国产精品久久久久久户外露出| 美国十次综合导航| 91超碰这里只有精品国产| 亚洲综合激情小说| 色综合天天狠狠| 国产精品久久久久久久久免费桃花| 久久91精品久久久久久秒播| 欧美群妇大交群中文字幕| 亚洲一区二区视频| 一本大道久久a久久综合| 中文字幕在线不卡一区| 成人黄色在线网站| 日本道在线观看一区二区| 欧美高清dvd| 日韩中文字幕区一区有砖一区 | 成人免费高清视频在线观看| 精品久久久久久综合日本欧美| 丝袜亚洲另类欧美| 91精品国产福利在线观看| 午夜亚洲福利老司机| 欧美久久一二区| 亚洲风情在线资源站| 亚洲一区二区三区四区五区中文| 一本到不卡免费一区二区| 亚洲精品免费看| 在线看国产日韩| 亚洲超丰满肉感bbw| 欧美精品久久99久久在免费线| 亚洲国产日产av| 91精品综合久久久久久| 美女在线观看视频一区二区| 精品国产乱码久久久久久1区2区| 狠狠色综合播放一区二区| 久久久久国产免费免费| youjizz久久| 一区二区三区日韩| 91.xcao| 国产一区二区中文字幕| 中文字幕乱码日本亚洲一区二区| 丁香六月综合激情| 综合色中文字幕| 欧美视频完全免费看| 麻豆国产一区二区| 亚洲国产精品精华液2区45| 色婷婷av一区二区三区软件| 日韩激情一二三区| 久久影院午夜论| 99热在这里有精品免费| 天堂成人免费av电影一区| 久久美女艺术照精彩视频福利播放| 国产乱子轮精品视频| 综合亚洲深深色噜噜狠狠网站| 欧美日韩午夜在线| 国产精品系列在线播放| 最新日韩av在线| 91精品国产综合久久福利软件| 极品美女销魂一区二区三区| 国产精品久久二区二区| 91精品国产色综合久久久蜜香臀| 国产乱码精品一区二区三区av| 18成人在线观看| 欧美一级高清片| 99视频精品在线| 免费在线观看精品| 亚洲欧美日韩中文播放| 欧美mv日韩mv国产| 欧洲生活片亚洲生活在线观看| 国内国产精品久久| 亚洲一本大道在线| 国产欧美日韩在线| 欧美人成免费网站| 99re视频精品| 久久av中文字幕片| ●精品国产综合乱码久久久久| 91精品国产综合久久精品性色| 懂色av一区二区三区免费看| 日日夜夜免费精品视频| 亚洲日本韩国一区| 久久综合九色综合欧美亚洲| 欧美影片第一页| 丁香六月久久综合狠狠色| 秋霞电影一区二区| 亚洲精品久久嫩草网站秘色| 久久久高清一区二区三区| 欧美精品xxxxbbbb| 91蜜桃视频在线| 国产成人日日夜夜| 精品中文字幕一区二区| 亚洲国产精品自拍| 国产精品毛片无遮挡高清| 日韩欧美综合在线| 欧美三级蜜桃2在线观看| 成人性生交大片免费看中文| 黄色精品一二区| 男人的j进女人的j一区| 亚洲一区二区三区小说| 亚洲欧美日韩久久精品| 中文字幕乱码日本亚洲一区二区 | 欧美日韩和欧美的一区二区| 青青青伊人色综合久久| 伊人开心综合网| 国产精品高潮久久久久无| 欧美精品一区二区久久婷婷| 69堂国产成人免费视频| 欧美天天综合网| 色8久久精品久久久久久蜜| 成人av网站在线| 国产不卡视频一区| 国产高清精品久久久久| 国产美女一区二区三区| 精品一区二区三区在线观看| 美美哒免费高清在线观看视频一区二区| 亚洲成人在线观看视频| 亚洲成人激情av| 偷拍亚洲欧洲综合| 午夜精品福利在线| 亚洲sss视频在线视频|