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

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

?? vrraster.pas

?? 作工控的好控件
?? PAS
字號:
{*****************************************************}
{                                                     }
{     Varian Component Workshop                       }
{                                                     }
{     Varian Software NL (c) 1996-2000                }
{     All Rights Reserved                             }
{                                                     }
{*****************************************************}

unit VrRaster;

{$I VRLIB.INC}

interface

uses
  Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs,
  VrTypes, VrClasses, VrControls, VrSysUtils;

type
  TVrCustomRaster = class;

  TVrRasterLed = class(TVrCollectionItem)
  private
    FActive: Boolean;
    procedure SetActive(Value: Boolean);
  public
    constructor Create(Collection: TVrCollection); override;
    property Active: Boolean read FActive write SetActive;
  end;

  TVrRasterLeds = class(TVrCollection)
  private
    FOwner: TVrCustomRaster;
    function GetItem(Index: Integer): TVrRasterLed;
  protected
    procedure Update(Item: TVrCollectionItem); override;
  public
    constructor Create(AOwner: TVrCustomRaster);
    property Items[Index: Integer]: TVrRasterLed read GetItem;
  end;

  TVrRasterStyle = (rsRaised, rsLowered, rsNone, rsFlat);

  TVrCustomRaster = class(TVrGraphicImageControl)
  private
    FColumns: TVrColInt;
    FRows: TVrRowInt;
    FPalette: TVrPalette;
    FStyle: TVrRasterStyle;
    FPlainColors: Boolean;
    FMultiSelect: Boolean;
    FSpacing: Integer;
    FBevel: TVrBevel;
    ViewPort: TRect;
    CellXSize: Integer;
    CellYSize: Integer;
    Collection: TVrRasterLeds;
    function GetCount: Integer;
    function GetItem(Index: Integer): TVrRasterLed;
    procedure SetColumns(Value: TVrColInt);
    procedure SetRows(Value: TVrRowInt);
    procedure SetStyle(Value: TVrRasterStyle);
    procedure SetPlainColors(Value: Boolean);
    procedure SetMultiSelect(Value: Boolean);
    procedure SetSpacing(Value: Integer);
    procedure SetPalette(Value: TVrPalette);
    procedure SetBevel(Value: TVrBevel);
    procedure PaletteModified(Sender: TObject);
    procedure BevelChanged(Sender: TObject);
    procedure SetActiveState(Origin: Integer; State: Boolean);
  protected
    procedure CreateObjects;
    procedure GetItemRect(Index: Integer; var R: TRect);
    procedure CalcPaintParams;
    procedure UpdateLed(Index: Integer);
    procedure UpdateLeds;
    procedure Paint; override;
    property Columns: TVrColInt read FColumns write SetColumns default 5;
    property Rows: TVrRowInt read FRows write SetRows default 5;
    property Style: TVrRasterStyle read FStyle write SetStyle default rsLowered;
    property Palette: TVrPalette read FPalette write SetPalette;
    property PlainColors: boolean read FPlainColors write SetPlainColors default true;
    property MultiSelect: Boolean read FMultiSelect write SetMultiSelect default True;
    property Spacing: Integer read FSpacing write SetSpacing default 2;
    property Bevel: TVrBevel read FBevel write SetBevel;
  public
    constructor Create(AOwner: TComponent); override;
    destructor Destroy; override;
    property Count: Integer read GetCount;
    property Items[Index: Integer]: TVrRasterLed read GetItem;
  end;

  TVrRaster = class(TVrCustomRaster)
    property Columns;
    property Rows;
    property Style;
    property Palette;
    property PlainColors;
    property MultiSelect;
    property Spacing;
    property Bevel;
{$IFDEF VER110}
    property Anchors;
    property Constraints;
{$ENDIF}
    property Color;
    property Cursor;
    property DragMode;
{$IFDEF VER110}
    property DragKind;
{$ENDIF}
    property DragCursor;
    property ParentColor default True;
    property ParentShowHint;
    property ShowHint;
    property Visible;
    property OnClick;
{$IFDEF VER130}
    property OnContextPopup;
{$ENDIF}    
    property OnDblClick;
    property OnMouseMove;
    property OnMouseDown;
    property OnMouseUp;
    property OnDragOver;
    property OnDragDrop;
{$IFDEF VER110}
    property OnEndDock;
{$ENDIF}
    property OnEndDrag;
{$IFDEF VER110}
    property OnStartDock;
{$ENDIF}
    property OnStartDrag;
  end;


implementation


{ TVrRasterLed }

constructor TVrRasterLed.Create(Collection: TVrCollection);
begin
  FActive := false;
  inherited Create(Collection);
end;

procedure TVrRasterLed.SetActive(Value: Boolean);
begin
  if FActive <> Value then
  begin
    FActive := Value;
    Changed(false);
  end;
end;

{ TVrRasterLeds }

constructor TVrRasterLeds.Create(AOwner: TVrCustomRaster);
begin
  inherited Create;
  FOwner := AOwner;
end;

function TVrRasterLeds.GetItem(Index: Integer): TVrRasterLed;
begin
  Result := TVrRasterLed(inherited Items[Index]);
end;

procedure TVrRasterLeds.Update(Item: TVrCollectionItem);
begin
  if Item <> nil then
    FOwner.UpdateLed(Item.Index) else
    FOwner.UpdateLeds;
end;

{TVrCustomRaster}

constructor TVrCustomRaster.Create(AOwner: TComponent);
begin
  inherited Create(AOwner);
  ControlStyle := ControlStyle + [csOpaque, csReplicatable];
  Width := 145;
  Height := 70;
  ParentColor := true;
  FStyle := rsLowered;
  FMultiSelect := true;
  FSpacing := 2;
  FPalette := TVrPalette.Create;
  FPalette.OnChange := PaletteModified;
  FPlainColors := true;
  FColumns := 5;
  FRows := 5;
  FBevel := TVrBevel.Create;
  with FBevel do
  begin
    InnerStyle := bsNone;
    InnerWidth := 1;
    InnerSpace := 0;
    InnerColor := clBlack;
    OnChange := BevelChanged;
  end;
  Collection := TVrRasterLeds.Create(Self);
  CreateObjects;
end;

destructor TVrCustomRaster.Destroy;
begin
  FPalette.Free;
  FBevel.Free;
  Collection.Free;
  inherited Destroy;
end;

procedure TVrCustomRaster.CreateObjects;
var
  I, N: Integer;
begin
  Collection.Clear;
  N := FColumns * FRows;
  for I := 0 to Pred(N) do
    TVrRasterLed.Create(Collection);
end;

function TVrCustomRaster.GetCount: Integer;
begin
  Result := Collection.Count;
end;

function TVrCustomRaster.GetItem(Index: Integer): TVrRasterLed;
begin
  Result := Collection.Items[Index];
end;

procedure TVrCustomRaster.PaletteModified(Sender: TObject);
begin
  UpdateControlCanvas;
end;

procedure TVrCustomRaster.BevelChanged(Sender: TObject);
var
  R: TRect;
begin
  if not Loading then
  begin
    R := ClientRect;
    FBevel.GetVisibleArea(R);
    InflateRect(ViewPort, R.Left, R.Top);
    BoundsRect := Bounds(Left, Top, WidthOf(ViewPort),
      HeightOf(ViewPort));
  end;
  UpdateControlCanvas;
end;

procedure TVrCustomRaster.SetActiveState(Origin: Integer; State: Boolean);
var
  I: Integer;
begin
  for I := 0 to Pred(Count) do
    if I <> Origin then Collection.Items[I].Active := State;
end;

procedure TVrCustomRaster.UpdateLed(Index: Integer);
var
  R: TRect;
  Item: TVrRasterLed;

  function GetCurrentColor(Value: Boolean): TColor;
  begin
    Result := FPalette.Low;
    if Value then Result := FPalette.High;
  end;

begin
  Item := Collection.Items[Index];

  if (Item.Active) and (not FMultiSelect) then
    SetActiveState(Index, false);

  GetItemRect(Index, R);
  InflateRect(R, -FSpacing, -FSpacing);
  case FStyle of
    rsRaised:
      begin
        DrawOutline3D(DestCanvas, R, clBlack, clBlack, 1);
        if not FPlainColors then
          DrawOutline3D(DestCanvas, R, GetCurrentColor(Item.Active), clBlack, 1)
        else
        begin
          if not Item.Active then
            DrawOutline3D(DestCanvas, R, FPalette.High, FPalette.Low, 1)
          else DrawOutline3D(DestCanvas, R, clBtnHighlight, FPalette.High, 1);
        end;
      end;
    rsLowered:
      begin
        DrawOutline3D(DestCanvas, R, clBtnShadow, clBtnHighlight, 1);
        DrawOutline3D(DestCanvas, R, clBlack, clBlack, 1);
      end;
    rsFlat:
      DrawOutline3D(DestCanvas, R, clBlack, clBlack, 1);
    rsNone:;
  end;

  with DestCanvas do
  begin
    if FPlainColors then
    begin
      Brush.Style := bsSolid;
      Brush.Color := GetCurrentColor(Item.Active);
      FillRect(R);
    end
    else DrawGradient(DestCanvas, R,
      GetCurrentColor(Item.Active), clBlack, voVertical, 1);
  end;
end;

procedure TVrCustomRaster.UpdateLeds;
var
  I: Integer;
begin
  for I := 0 to Count - 1 do
    UpdateLed(I);
end;

procedure TVrCustomRaster.Paint;
var
  R: TRect;
begin
  CalcPaintParams;
  ClearBitmapCanvas;
  DestCanvas := BitmapCanvas;
  try
    R := ClientRect;
    FBevel.Paint(DestCanvas, R);
    UpdateLeds;
    inherited Paint;
  finally
    DestCanvas := Self.Canvas;
  end;
end;

procedure TVrCustomRaster.CalcPaintParams;
var
  NewWidth, NewHeight: Integer;
begin
  ViewPort := ClientRect;
  FBevel.GetVisibleArea(ViewPort);

  CellXSize := WidthOf(ViewPort) div FColumns;
  CellYSize := HeightOf(ViewPort) div FRows;
  NewWidth := (ViewPort.Left * 2) + (CellXSize * FColumns);
  NewHeight := (ViewPort.Top * 2) + (CellYSize * FRows);

  if (NewWidth <> Width) or (NewHeight <> Height) then
    BoundsRect := Bounds(Left, Top, NewWidth, NewHeight);
end;

procedure TVrCustomRaster.GetItemRect(Index: Integer; var R: TRect);
var
  X, Y: Integer;
begin
  X := (Index mod FColumns) * CellXSize;
  Y := (Index div FColumns) * CellYSize;
  R := Bounds(ViewPort.Left + X, ViewPort.Top + Y, CellXSize, CellYSize);
end;

procedure TVrCustomRaster.SetPalette(Value: TVrPalette);
begin
  FPalette.Assign(Value);
end;

procedure TVrCustomRaster.SetBevel(Value: TVrBevel);
begin
  FBevel.Assign(Value);
end;

procedure TVrCustomRaster.SetColumns(Value: TVrColInt);
begin
  if (FColumns <> Value) then
  begin
    FColumns := Value;
    CreateObjects;
    UpdateControlCanvas;
  end;
end;

procedure TVrCustomRaster.SetRows(Value: TVrRowInt);
begin
  if (FRows <> Value) then
  begin
    FRows := Value;
    CreateObjects;
    UpdateControlCanvas;
  end;
end;

procedure TVrCustomRaster.SetStyle(Value: TVrRasterStyle);
begin
  if FStyle <> Value then
  begin
    FStyle := Value;
    UpdateControlCanvas;
  end;
end;

procedure TVrCustomRaster.SetMultiSelect(Value: Boolean);
begin
  if FMultiSelect <> Value then
  begin
    FMultiSelect := Value;
    if not Value then SetActiveState(-1, false)
      else UpdateLeds;
  end;
end;

procedure TVrCustomRaster.SetPlainColors(Value: Boolean);
begin
  if FPlainColors <> Value then
  begin
    FPlainColors := Value;
    UpdateControlCanvas;
  end;
end;

procedure TVrCustomRaster.SetSpacing(Value: Integer);
begin
  if (FSpacing <> Value) and (Value >= 0) then
  begin
    FSpacing := Value;
    UpdateControlCanvas;
  end;
end;


end.

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
亚洲成人自拍一区| 黄一区二区三区| 日本欧美韩国一区三区| 国产乱码精品一区二区三区忘忧草| 久久精品国产99国产| 成人免费的视频| 欧美精品久久99久久在免费线| 久久久久青草大香线综合精品| 亚洲欧洲国产日本综合| 五月激情六月综合| 黄色精品一二区| 91黄色免费网站| 久久精品亚洲一区二区三区浴池| 亚洲码国产岛国毛片在线| 五月天久久比比资源色| 成人的网站免费观看| 制服丝袜亚洲播放| 中文字幕五月欧美| 亚洲国产视频一区| 高清久久久久久| 在线综合视频播放| 一区在线播放视频| 国产一区二区三区免费在线观看| 国产美女精品人人做人人爽| 欧美日韩一级片在线观看| 久久久久久电影| 亚洲已满18点击进入久久| 成人精品小蝌蚪| 日韩一区二区麻豆国产| 夜夜嗨av一区二区三区网页| 国产一区二区精品久久91| 欧美高清性hdvideosex| 欧美videossexotv100| 国产精品乱码人人做人人爱| 免费看欧美女人艹b| 欧美日韩黄视频| 亚洲麻豆国产自偷在线| 久久99久久精品| 欧美日韩五月天| 亚洲一区二区三区三| 99视频热这里只有精品免费| 国产欧美日韩在线看| 国内精品久久久久影院色| 69堂国产成人免费视频| 亚洲成av人在线观看| 一本大道久久a久久综合婷婷| 国产日韩欧美a| 国产精品77777| 久久久久久久久99精品| 国产中文一区二区三区| 精品处破学生在线二十三| 麻豆国产精品官网| 91精品国产免费| 免费在线成人网| 51久久夜色精品国产麻豆| 亚洲国产成人porn| 欧美另类久久久品| 美女视频黄频大全不卡视频在线播放| 91福利精品视频| 亚洲一区二区三区免费视频| 欧美中文字幕一区二区三区亚洲 | 欧美白人最猛性xxxxx69交| 亚洲福利一区二区| 欧美日韩国产a| 日韩影院在线观看| 欧美日韩一区二区在线观看视频| 洋洋成人永久网站入口| 欧美视频在线一区二区三区 | 欧美一二三四在线| 亚洲成人综合视频| 日韩视频免费观看高清完整版在线观看| 国产精品福利av| 色综合久久久久久久| 亚洲国产综合91精品麻豆| 欧美日韩一区二区欧美激情 | 日本视频在线一区| 日韩一区二区三区观看| 紧缚捆绑精品一区二区| 国产精品久久久久久久久图文区| 色婷婷精品久久二区二区蜜臀av| 亚洲精品国产视频| 91精品国产综合久久久久久久| 美国三级日本三级久久99| 蜜桃视频一区二区三区在线观看| 2020国产精品久久精品美国| 在线精品亚洲一区二区不卡| 国产精品亚洲一区二区三区在线| 亚洲第一福利视频在线| 国产午夜精品福利| 欧美一区二区成人| 欧美在线免费播放| 99综合影院在线| 韩国女主播成人在线观看| 午夜a成v人精品| 亚洲视频一区二区免费在线观看| 欧美一区二区三区免费| 欧洲精品视频在线观看| 97精品久久久久中文字幕| 高清国产一区二区| 九九视频精品免费| 另类人妖一区二区av| 亚洲日本va在线观看| 麻豆精品视频在线观看免费| 国产日韩欧美精品在线| 国产精品中文欧美| 午夜a成v人精品| 亚洲图片一区二区| 日韩高清欧美激情| 亚洲综合激情另类小说区| 91国在线观看| 色婷婷亚洲精品| 色婷婷精品久久二区二区蜜臀av| 成人免费视频一区| 懂色av噜噜一区二区三区av| 激情综合五月天| 麻豆91免费看| 免费在线一区观看| 日本女人一区二区三区| 天天av天天翘天天综合网 | 日本高清不卡一区| 一本色道久久综合精品竹菊| a级高清视频欧美日韩| 成人网页在线观看| 成人午夜在线视频| www.欧美色图| 一本大道久久a久久精品综合| 欧美在线制服丝袜| 91精品免费观看| 精品剧情在线观看| 国产欧美日韩在线视频| 国产精品麻豆一区二区| 亚洲人成伊人成综合网小说| 亚洲一区在线视频| 日韩和欧美的一区| 激情综合网av| 成人黄色国产精品网站大全在线免费观看| 国产成人精品三级| 91在线观看下载| 欧美色图在线观看| 日韩免费一区二区三区在线播放| 久久精品一区二区三区av| 国产精品欧美久久久久一区二区| 日韩美女视频一区二区| 亚洲chinese男男1069| 国精产品一区一区三区mba桃花| 高清在线成人网| 欧美吞精做爰啪啪高潮| 精品国产99国产精品| 国产精品护士白丝一区av| 亚欧色一区w666天堂| 精品午夜一区二区三区在线观看| 成人黄色av电影| 91精品国产欧美一区二区18 | 欧美mv日韩mv国产网站app| 欧美极品少妇xxxxⅹ高跟鞋 | 精品一区二区在线视频| 99久久久久久| 91精品国产综合久久精品| 国产精品天干天干在观线| 亚洲国产一二三| 国产成人福利片| 欧美丰满高潮xxxx喷水动漫| 国产欧美va欧美不卡在线 | 亚洲日本中文字幕区| 日韩在线一区二区三区| 成人美女在线视频| 日韩视频不卡中文| 依依成人综合视频| 丁香亚洲综合激情啪啪综合| 欧美肥大bbwbbw高潮| 亚洲人精品午夜| 成人综合在线观看| 日韩精品一区二区三区视频播放| 一二三四区精品视频| 成人白浆超碰人人人人| xfplay精品久久| 视频一区二区欧美| 91视频在线看| 青青草国产成人av片免费| 欧美一区二区在线看| 色婷婷av一区| 色哟哟精品一区| 2020国产精品| 日韩av一区二区在线影视| 亚洲一区中文在线| 亚洲综合激情网| 日韩视频永久免费| 婷婷中文字幕综合| 91蜜桃婷婷狠狠久久综合9色| 中文字幕av一区二区三区高| 国产在线观看一区二区| 日韩欧美国产一区二区在线播放| 午夜久久久影院| 国产精品国产自产拍高清av | 精品视频一区 二区 三区| 亚洲国产电影在线观看| 丁香网亚洲国际| 国产午夜亚洲精品午夜鲁丝片| 欧美日本一区二区三区四区| 国产一区久久久|