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

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

?? 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);

?? 快捷鍵說明

復(fù)制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
亚洲精品在线三区| 激情亚洲综合在线| 麻豆91免费观看| 日韩二区三区在线观看| 日韩专区一卡二卡| 日本在线不卡视频| 午夜精品123| 久久99国产精品麻豆| 国产99一区视频免费| 日本高清视频一区二区| 欧美日韩精品免费观看视频| 欧美精品一二三区| 日韩一二三四区| 久久久不卡网国产精品一区| 国产欧美1区2区3区| 中文一区二区完整视频在线观看| 亚洲日本在线视频观看| 亚洲国产视频一区| 国产真实乱对白精彩久久| 白白色 亚洲乱淫| 欧美日韩国产综合一区二区| 欧美一级午夜免费电影| 亚洲码国产岛国毛片在线| 久久精品噜噜噜成人av农村| 欧美精品一二三区| 中文字幕一区二区不卡| 日本va欧美va精品发布| 91女神在线视频| 精品粉嫩超白一线天av| 亚洲午夜电影网| 国产成人aaa| 精品视频在线视频| 欧美国产成人在线| 裸体一区二区三区| 在线视频欧美区| 亚洲人成网站影音先锋播放| 国产麻豆精品theporn| 337p亚洲精品色噜噜噜| 亚洲va韩国va欧美va| 在线日韩国产精品| 中文字幕五月欧美| 9i看片成人免费高清| 久久久久久久久久看片| 青草av.久久免费一区| 一本大道久久a久久精品综合| 精品成a人在线观看| 麻豆极品一区二区三区| 精品伦理精品一区| 久久激情五月婷婷| 日韩欧美国产系列| 奇米精品一区二区三区在线观看| 欧美理论电影在线| 日韩精品1区2区3区| 欧美一级欧美一级在线播放| 蜜臀精品久久久久久蜜臀| 欧美日韩五月天| 亚洲风情在线资源站| 91麻豆精品国产91久久久久久| 日韩不卡在线观看日韩不卡视频| 欧美日韩国产另类一区| 捆绑调教一区二区三区| 精品国产乱码久久久久久浪潮| 国产福利一区二区三区视频在线| 国产人成亚洲第一网站在线播放 | 蜜桃视频一区二区三区在线观看| 日韩欧美一区二区在线视频| 国产精品亚洲第一| 国产精品视频一区二区三区不卡| 福利电影一区二区三区| 亚洲福利一区二区三区| 久久综合99re88久久爱| 欧美三区在线观看| 高潮精品一区videoshd| 亚洲一二三区在线观看| 欧美一二三四在线| 岛国精品一区二区| 免费国产亚洲视频| 日韩一区日韩二区| 日韩欧美专区在线| 色吧成人激情小说| 成人一级黄色片| 蜜臀av一区二区三区| 天天综合天天做天天综合| 亚洲乱码国产乱码精品精可以看 | 久久美女高清视频 | 欧美在线免费播放| 国产一区中文字幕| 午夜不卡av在线| 国产suv精品一区二区三区| 亚洲va在线va天堂| 性做久久久久久| 日韩精品色哟哟| 亚洲影院理伦片| 亚洲欧美视频一区| 亚洲欧美日韩中文播放| 欧美国产综合一区二区| 日韩一区二区免费在线观看| 精品视频在线免费| 6080国产精品一区二区| 制服丝袜中文字幕亚洲| 欧美一级免费观看| 日韩精品一区二区三区三区免费 | 日韩三级在线免费观看| 欧美美女激情18p| 欧美日韩一区精品| 欧美日韩一区在线观看| 欧美日韩国产中文| 欧美一区三区四区| 日韩视频免费直播| 日本一区二区久久| 中文字幕在线不卡视频| 亚洲一卡二卡三卡四卡五卡| 亚洲无人区一区| 免费成人美女在线观看| 国产一区欧美一区| 99国产精品久| 欧美肥妇free| 国产精品每日更新在线播放网址| 最新久久zyz资源站| 亚洲一二三四区| 日韩激情视频在线观看| 国产在线不卡视频| av不卡在线播放| 日韩三级免费观看| 国产精品久久久久婷婷| 日韩在线a电影| 亚洲精品一卡二卡| 麻豆91精品91久久久的内涵| 成人黄色综合网站| 欧美精品久久99| 欧美国产一区二区在线观看| 亚洲欧美国产三级| 精品制服美女丁香| 91久久线看在观草草青青| 久久久综合视频| 午夜精品久久久久| av电影在线观看完整版一区二区| 欧美人与禽zozo性伦| 国产日韩欧美不卡| 青青国产91久久久久久| a在线播放不卡| 日韩欧美激情在线| 日韩电影在线免费观看| 99视频一区二区三区| 国产欧美一区视频| 国产欧美一区二区精品婷婷| 中文一区在线播放| 韩国欧美一区二区| 91麻豆精品国产91久久久使用方法 | 91在线无精精品入口| 欧美v亚洲v综合ⅴ国产v| 天堂成人免费av电影一区| 91在线精品一区二区三区| 欧美激情在线观看视频免费| 麻豆精品在线播放| 日韩一级大片在线观看| 日韩精品1区2区3区| 91精品国产色综合久久ai换脸 | 在线免费不卡电影| 亚洲精品国产无天堂网2021| 99re66热这里只有精品3直播| 亚洲免费观看高清| 国产精品自产自拍| 欧美老女人第四色| 国产精品麻豆99久久久久久| 国产成人自拍在线| 国产精品成人免费在线| 成人影视亚洲图片在线| 国产精品欧美久久久久无广告| av日韩在线网站| 亚洲成人一二三| 日韩午夜激情av| 99久久久久久| 亚洲一区视频在线观看视频| 欧美精品乱人伦久久久久久| 免费观看日韩电影| 136国产福利精品导航| 欧美日韩国产在线观看| 高清在线观看日韩| 亚洲五码中文字幕| 久久久五月婷婷| 在线亚洲一区二区| 国产美女在线精品| 午夜激情综合网| 亚洲色图制服诱惑| 日韩三级中文字幕| 欧美在线视频日韩| av午夜精品一区二区三区| 亚欧色一区w666天堂| 中文字幕一区二区日韩精品绯色| 欧美一区三区二区| 欧洲av一区二区嗯嗯嗯啊| 国产传媒一区在线| 久久精品久久综合| 一区二区成人在线视频| 国产日本欧美一区二区| 精品福利一区二区三区| 欧美无人高清视频在线观看| 99久久免费国产| 99这里只有久久精品视频|