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

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

?? cdibfeatures.pas

?? Delphi控件
?? PAS
?? 第 1 頁 / 共 2 頁
字號:
  finally
    Writer.Free;
  end;
end;

procedure TDIBFeatureItem.AssignTo(Dest: TPersistent);
begin
  if Dest is TDIBFeatureItem then
    with TDIBFeatureItem(Dest) do
    begin
      Enabled := Self.Enabled;
      FeatureClassName := Self.FeatureClassName;
      FDIBFeature.Assign(Self.FDIBFeature);
    end
  else
    inherited;
end;

{ TDIBFeatures }

function TDIBFeatures.Add: TDIBFeatureItem;
begin
  Result := TDIBFeatureItem(inherited Add);
end;

constructor TDIBFeatures.Create(AOwner: TComponent);
begin
  inherited Create(AOwner, TDIBFeatureItem);
  FOwner := AOwner;
end;

function TDIBFeatures.GetItem(Index: Integer): TDIBFeatureItem;
begin
  Result := TDIBFeatureItem(inherited GetItem(Index));
end;

procedure TDIBFeatures.Loaded;
var
  X: Integer;
begin
  for X := 0 to Count - 1 do Items[X].Loaded;
end;

procedure TDIBFeatures.SetItem(Index: Integer; Value: TDIBFeatureItem);
begin
  inherited SetItem(Index, Value);
end;

procedure TDIBFeatures.Update(Item: TCollectionItem);
begin
  inherited Update(Item);
end;

procedure TDIBFeatures.WndProc(var Message: TMessage;
  var Handled: Boolean);
var
  X: Integer;
begin
  for X := 0 to Count - 1 do 
  begin
    with Items[X] do
      WndProc(Message, Handled);
    if Handled then break;
  end;
end;

{ TMoveableDIB }

procedure TMoveableDIB.AssignTo(Dest: TPersistent);
begin
  if Dest is TMoveableDIB then
    with TMoveableDIB(Dest) do
    begin
      AllowHorizontal := Self.AllowHorizontal;
      AllowVertical := Self.AllowVertical;
      BorderSize := Self.BorderSize;
      MouseButtons := Self.MouseButtons;
      SnapSize := Self.SnapSize;
    end;
  inherited;
end;

constructor TMoveableDIB.Create(AOwner: TComponent);
begin
  inherited;
  AllowVertical := True;
  AllowHorizontal := True;
  SnapSize := 1;
  MouseButtons := [mbLeft];
end;

procedure TMoveableDIB.DoKeyDown(Message: TWMKey);
begin
  with Message, Control do 
  begin
    case CharCode of
      VK_UP: if AllowVertical then Top := Top - SnapSize;
      VK_DOWN: if AllowVertical then Top := Top + SnapSize;
      VK_Left: if AllowHorizontal then Left := Left - SnapSize;
      VK_RIGHT: if AllowHorizontal then Left := Left + SnapSize;
    end;
  end;
end;

procedure TMoveableDIB.DoMouseDown(Message: TMessage);
begin
  if Control = nil then exit;
  with TWMMouse(Message) do 
  begin
    if ((FX >= BorderSize) or
      (FX <= Control.Width - BorderSize)) and
      ((FY >= BorderSize) or
      (FY <= Control.Height - BorderSize)) then
    begin
      FMoving := True;
      FX := XPos;
      FY := YPos;
    end;
  end;
  with Control do 
  begin
    FOrigX := Left;
    FOrigY := Top;
  end;
end;

procedure TMoveableDIB.DoMouseMove(Message: TMessage);
var
  DX, DY: Integer;
begin
  if FMoving then with TWMMouse(Message) do 
    begin
      if AllowHorizontal then
        DX := (XPos - FX)
      else
        DX := 0;
      if AllowVertical then
        DY := (YPos - FY)
      else
        DY := 0;
      if SnapSize > 1 then 
      begin
        DX := DX div SnapSize * SnapSize;
        DY := DY div SnapSize * SnapSize;
      end;
      if Control <> nil then with Control do 
        begin
          SetBounds(Left + DX, Top + DY, Width, Height);
        end;
    end;
end;

procedure TMoveableDIB.DoMouseUp;
begin
  FMoving := False;
end;

class function TMoveableDIB.GetDisplayName: string;
begin
  Result := 'Moveable DIB';
end;

procedure TMoveableDIB.WndProc(var Message: TMessage;
  var Handled: Boolean);
begin
  if Message.Msg = WM_KeyDown then DoKeyDown(TWMKey(Message));
  if FMoving then
    case Message.Msg of
      WM_MouseMove: DoMouseMove(Message);
      WM_RButtonUp: if FMouseButton = mbRight then DoMouseUp;
      WM_LButtonUp: if FMouseButton = mbLeft then DoMouseUp;
      WM_MButtonUp: if FMouseButton = mbMiddle then DoMouseUp;
    end
  else if (Message.Msg = WM_LButtonDown) or (Message.Msg = WM_MButtonDown) or
    (Message.Msg = WM_RButtonDown) then
  begin
    case Message.Msg of
      WM_LButtonDown: FMouseButton := mbLeft;
      WM_MButtonDown: FMouseButton := mbMiddle;
      WM_RButtonDown: FMouseButton := mbRight;
    end;
    if FMouseButton in MouseButtons then DoMouseDown(Message);
  end;
end;
{ TDIBFeature }

procedure TDIBFeature.AssignTo(Dest: TPersistent);
begin
  if not (Dest is TDIBFeature) then inherited;
end;

class function TDIBFeature.CanApplyTo(aComponent: TPersistent): Boolean;
begin
  Result := True;
end;

class function TDIBFeature.GetDisplayName: string;
begin
  Result := 'Unknown feature';
end;

function TDIBFeature.GetOwner: TPersistent;
begin
  Result := FControl;
end;

{ THighlightDIB }

procedure THighlightDIB.AssignTo(Dest: TPersistent);
begin
  if Dest is THighlightDIB then
    with THighlightDIB(Dest) do
    begin
      HighlightOpacity := Self.HighlightOpacity;
    end;
  inherited;
end;

class function THighlightDIB.CanApplyTo(aComponent: TPersistent): Boolean;
begin
  Result := (aComponent is TCustomDIBControl);
end;

constructor THighlightDIB.Create(AOwner: TComponent);
begin
  inherited;
  FHighlightOpacity := 255;
end;

class function THighlightDIB.GetDisplayName: string;
begin
  Result := 'Highlight dib';
end;

procedure THighlightDIB.WndProc(var Message: TMessage;
  var Handled: Boolean);
begin
  if Control is TCustomDIBControl then with THackDIBControl(Control) do 
    begin
      case Message.Msg of
        WM_SetFocus: if not Focused and not MouseInControl then
          begin
            FOrigOpacity := Opacity;
            Opacity := HighlightOpacity;
          end;

        WM_KillFocus: if Focused and not MouseInControl then
          begin
            Opacity := FOrigOpacity;
          end;

        CM_MouseEnter: if not Focused then
          begin
            if MouseCapture then exit;
            FOrigOpacity := Opacity;
            Opacity := HighlightOpacity;
          end;

        WM_LButtonUp:
          begin
            MouseCapture := False;
          end;

        CM_MouseLeave: if not Focused then
          begin
            if MouseCapture then exit;
            Opacity := FOrigOpacity;
          end;
      end;
    end;
end;


{ TControlItem }

procedure TControlItem.AssignTo(Dest: TPersistent);
begin
  if Dest is TControlItem then
    TControlItem(Dest).Control := FControl
  else
    inherited;
end;

function TControlItem.GetDisplayName: string;
begin
  if Control = nil then
    Result := inherited GetDisplayName
  else if Control.Name <> '' then
    Result := Control.Name
  else if Control.ClassName <> '' then
    Result := Control.ClassName
  else
    Result := inherited GetDisplayName;
end;

procedure TControlItem.SetControl(const Value: TControl);
var
  X: Integer;
begin
  if Value = nil then
    raise EFeatureError.Create('You cannot set Control to nil');
  for X := 0 to Collection.Count - 1 do
    if (TControlList(Collection).Items[X].Control = Value) and
      (Collection.Items[X] <> Self) then
      raise EFeatureError.Create('Control already exists in list.');
  FControl := Value;
end;

{ TShapeableDIB }

procedure TShapeableDIB.AssignTo(Dest: TPersistent);
begin
  if Dest is TShapeableDIB then
    with TShapeableDIB(Dest) do
    begin
      TransparentColor := Self.TransparentColor;
      TransparentMode := Self.TransparentMode;
      MaskLevel := Self.MaskLevel;
    end;
  inherited;
end;

procedure TShapeableDIB.CalculateRegion;
var
  CurrentView: TWinDIB;
  TransCol: TColor;
begin
  CurrentView := TWinDIB.Create(Control.Width, Control.Height);
  try
    CurrentView.QuickFill($00000000);
    THackDIBControl(Control).ControlDIB := CurrentView;
    THackDIBControl(Control).Paint;
    if FRegion <> 0 then DeleteObject(FRegion);
    if MaskLevel > 0 then
      FRegion := CurrentView.MakeRGN(MaskLevel)
    else
    begin
      if TransparentMode = tmAuto then
        TransCol := CurrentView.Canvas.Pixels[0, Control.Height - 1]
      else
        TransCol := TransparentColor;
      FRegion := CurrentView.MakeRGNFromColor(TransCol);
    end;
    FControlInvalidateTime := THackDIBControl(Control).LastInvalidateTime;
  finally
    CurrentView.Free;
    THackDIBControl(Control).ControlDIB := nil;
  end;
end;

class function TShapeableDIB.CanApplyTo(aComponent: TPersistent): Boolean;
begin
  Result := AComponent is TCustomDIBControl;
end;

constructor TShapeableDIB.Create(AOwner: TComponent);
begin
  inherited;
  FControlInvalidateTime := 1234;
  FRegion := 0;
end;

destructor TShapeableDIB.Destroy;
begin
  if FRegion <> 0 then DeleteObject(FRegion);
  inherited;
end;

class function TShapeableDIB.GetDisplayName: string;
begin
  Result := 'Shapeable DIB';
end;

procedure TShapeableDIB.WndProc(var Message: TMessage;
  var Handled: Boolean);
begin
  case Message.Msg of
    CM_HITTEST:
      begin
        Handled := True;
        if FControlInvalidateTime <> THackDIBControl(Control).LastInvalidateTime then
          CalculateRegion;
        with TCMHITTEST(Message) do
          if (FRegion = 0) or (PtInRegion(FRegion, XPos, YPos)) then
            Message.Result := HTCLIENT
        else
          Message.Result := HTNOWHERE;
      end;
  end;
end;

initialization
  RegisterDIBFeature(TMoveableDIB);
  RegisterDIBFeature(THighlightDIB);
  RegisterDIBFeature(TShapeableDIB);
end.

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
欧美国产乱子伦 | 国产精品国产三级国产普通话三级 | 国产在线乱码一区二区三区| av一区二区三区在线| 综合在线观看色| 精品国产三级电影在线观看| 一区二区三区波多野结衣在线观看| 欧美精品久久天天躁| 色噜噜夜夜夜综合网| 日本一区中文字幕| 久久久亚洲综合| 欧美绝品在线观看成人午夜影视| 国产成人激情av| 秋霞成人午夜伦在线观看| 亚洲欧美激情视频在线观看一区二区三区| 欧美日韩国产电影| 91视视频在线观看入口直接观看www | 经典三级一区二区| 91丝袜美女网| 毛片av一区二区| 欧美猛男超大videosgay| av亚洲精华国产精华精华| 极品销魂美女一区二区三区| 一区二区三区不卡在线观看| 国产精品久久二区二区| 国产欧美精品一区aⅴ影院| 日韩区在线观看| 91精品国产综合久久国产大片| 91视频91自| 91在线porny国产在线看| 日韩电影在线看| 一区二区激情小说| 一区二区成人在线| 成人不卡免费av| 国产福利一区二区| 亚洲国产成人高清精品| 亚洲日本一区二区三区| 欧洲精品一区二区| 91日韩一区二区三区| 成人午夜看片网址| 成人开心网精品视频| 国产v综合v亚洲欧| 久久福利资源站| 国内偷窥港台综合视频在线播放| 自拍av一区二区三区| 亚洲女人的天堂| 亚洲一区二区三区视频在线播放| 久久精品国产精品亚洲精品| 不卡一区在线观看| 日韩欧美一区二区在线视频| 国产精品白丝在线| 免费高清成人在线| 成人精品一区二区三区四区 | www国产成人免费观看视频 深夜成人网| 欧美经典三级视频一区二区三区| 亚州成人在线电影| 91丝袜国产在线播放| 国产婷婷一区二区| 久久99在线观看| 欧美日韩久久一区| 一区二区三区小说| 波多野洁衣一区| 欧美国产欧美综合| 国产ts人妖一区二区| 久久色.com| 国产乱码字幕精品高清av | 暴力调教一区二区三区| 欧美va在线播放| 亚洲一区二区三区在线播放| 精品午夜一区二区三区在线观看| 欧美日本一道本在线视频| 亚洲乱码国产乱码精品精可以看| 国产乱码精品一区二区三区五月婷| 欧美午夜影院一区| 亚洲最新视频在线观看| 91蜜桃在线免费视频| 自拍视频在线观看一区二区| 91无套直看片红桃| 国产精品久久久久久久久快鸭 | 91片黄在线观看| 亚洲欧洲在线观看av| 国产精品亚洲第一区在线暖暖韩国| 日韩欧美激情一区| 黄色日韩网站视频| 国产午夜精品一区二区三区嫩草| 国产精品一卡二卡在线观看| 国产婷婷色一区二区三区四区 | 在线区一区二视频| 亚洲第一在线综合网站| 56国语精品自产拍在线观看| 看电影不卡的网站| 一区二区中文字幕在线| 欧美日韩一区二区不卡| 久久精品噜噜噜成人av农村| 国产欧美一区二区精品久导航| 国产成人啪免费观看软件| 亚洲日穴在线视频| 欧美群妇大交群中文字幕| 国内一区二区视频| 亚洲乱码中文字幕| 欧美va天堂va视频va在线| 粗大黑人巨茎大战欧美成人| 亚洲一区二区在线免费观看视频| 日韩免费在线观看| 成人av网站大全| 亚洲18影院在线观看| 久久久久久久综合色一本| 欧美性一二三区| 国产成人一区二区精品非洲| 国产精品久久精品日日| 日韩片之四级片| 97se亚洲国产综合自在线| 蜜臂av日日欢夜夜爽一区| 自拍偷拍亚洲综合| 久久亚洲综合色一区二区三区| 色诱亚洲精品久久久久久| 国产麻豆精品一区二区| 天天综合网天天综合色| 国产精品久久久久久久久免费相片 | 欧美经典三级视频一区二区三区| 在线精品亚洲一区二区不卡| 黄色小说综合网站| 午夜成人免费视频| 国产精品久久久久一区二区三区| 欧美一区二区三区播放老司机 | 自拍偷拍国产精品| 精品99一区二区| 欧美熟乱第一页| 国产白丝网站精品污在线入口| 日日夜夜精品视频免费| 国产精品青草久久| 久久一区二区三区国产精品| 欧美一区三区四区| 欧美日韩国产高清一区| 一本一道久久a久久精品综合蜜臀| 国产乱妇无码大片在线观看| 久久国产精品一区二区| 日韩激情一区二区| 午夜国产精品影院在线观看| 亚洲综合免费观看高清完整版在线 | 久久蜜桃一区二区| 91精品国产91久久久久久一区二区| 色88888久久久久久影院野外 | 视频在线观看91| 亚洲国产一区二区三区青草影视| 亚洲区小说区图片区qvod| 国产精品色噜噜| 国产精品毛片大码女人| 欧美韩国一区二区| 亚洲国产精品二十页| 日本一区免费视频| 国产精品视频免费看| 亚洲国产精品成人综合色在线婷婷 | 国产精品丝袜久久久久久app| 国产日韩精品视频一区| 国产精品视频一二| 亚洲精品视频在线看| 亚洲欧洲综合另类在线| 亚洲综合小说图片| 视频一区视频二区在线观看| 美国十次了思思久久精品导航| 免费高清在线视频一区·| 国产一区二区中文字幕| 成人午夜短视频| 在线观看av一区二区| 69久久夜色精品国产69蝌蚪网| 精品av综合导航| 中文字幕日韩精品一区| 午夜久久久久久久久久一区二区| 日韩电影一区二区三区四区| 国产一区二区三区视频在线播放| 成人在线视频一区| 欧美三级韩国三级日本三斤| 日韩欧美一区二区三区在线| 久久久精品综合| 亚洲免费av在线| 久久精品国产成人一区二区三区| 国产成人综合在线| 91国产视频在线观看| 精品少妇一区二区三区免费观看 | 欧美电影免费观看高清完整版 | 日韩精品一区在线观看| 国产欧美精品一区| 亚洲影院理伦片| 激情欧美一区二区| 色婷婷激情一区二区三区| 欧美日韩成人综合在线一区二区| 日韩免费看的电影| 精品国产一区二区三区久久久蜜月 | 国产91精品精华液一区二区三区 | 久久av中文字幕片| 91传媒视频在线播放| 久久久亚洲午夜电影| 亚洲国产精品久久久久秋霞影院| 国产乱淫av一区二区三区| 欧美日韩黄色影视| 亚洲男人的天堂在线观看| 国精品**一区二区三区在线蜜桃| 欧美在线你懂得| 国产精品三级av|