VrGradient.pas
上传用户:hbszzs
上传日期:2008-08-20
资源大小:628k
文件大小:5k
源码类别:

Delphi控件源码

开发平台:

Delphi

  1. {*****************************************************}
  2. {                                                     }
  3. {     Varian Component Workshop                       }
  4. {                                                     }
  5. {     Varian Software NL (c) 1996-2000                }
  6. {     All Rights Reserved                             }
  7. {                                                     }
  8. {*****************************************************}
  9. unit VrGradient;
  10. {$I VRLIB.INC}
  11. interface
  12. uses
  13.   Windows, Messages, SysUtils, Classes, Graphics, Controls, Dialogs,
  14.   VrConst, VrTypes, VrClasses, VrControls, VrSysUtils;
  15. type
  16.   TVrCustomGradient = class(TVrGraphicImageControl)
  17.   private
  18.     FStartColor: TColor;
  19.     FEndColor: TColor;
  20.     FColorWidth: Integer;
  21.     FDirection: TVrGradDirection;
  22.     FSwapColors: Boolean;
  23.     FFormDrag: Boolean;
  24.     procedure SetColorWidth(Value: Integer);
  25.     procedure SetDirection(Value: TVrGradDirection);
  26.     procedure SetStartColor(Value: TColor);
  27.     procedure SetEndColor(Value: TColor);
  28.     procedure SetSwapColors(Value: Boolean);
  29.     procedure WMLButtonDown(var Msg: TWMLBUTTONDOWN); message WM_LBUTTONDOWN;
  30.   protected
  31.     procedure Paint; override;
  32.     function GetPalette: HPalette; override;
  33.     property ColorWidth: Integer read FColorWidth write SetColorWidth default 1;
  34.     property Direction: TVrGradDirection read FDirection write SetDirection default gdUpDown;
  35.     property StartColor: TColor read FStartColor write SetStartColor default clLime;
  36.     property EndColor: TColor read FEndColor write SetEndColor default clBlack;
  37.     property SwapColors: Boolean read FSwapColors write SetSwapColors default false;
  38.     property FormDrag: Boolean read FFormDrag write FFormDrag default false;
  39.   public
  40.     constructor Create(AOwner: TComponent); override;
  41.     destructor Destroy; override;
  42.   end;
  43.   TVrGradient = class(TVrCustomGradient)
  44.     property StartColor;
  45.     property EndColor;
  46.     property ColorWidth;
  47.     property Direction;
  48.     property FormDrag;
  49.     property SwapColors;
  50. {$IFDEF VER110}
  51.     property Anchors;
  52.     property Constraints;
  53. {$ENDIF}
  54.     property Align;
  55.     property DragCursor;
  56. {$IFDEF VER110}
  57.     property DragKind;
  58. {$ENDIF}
  59.     property DragMode;
  60.     property Hint;
  61.     property ParentShowHint;
  62.     property PopupMenu;
  63.     property ShowHint;
  64.     property Visible;
  65.     property OnClick;
  66. {$IFDEF VER130}
  67.     property OnContextPopup;
  68. {$ENDIF}    
  69.     property OnDblClick;
  70.     property OnDragDrop;
  71.     property OnDragOver;
  72. {$IFDEF VER110}
  73.     property OnEndDock;
  74. {$ENDIF}
  75.     property OnEndDrag;
  76.     property OnMouseDown;
  77.     property OnMouseMove;
  78.     property OnMouseUp;
  79. {$IFDEF VER110}
  80.     property OnStartDock;
  81. {$ENDIF}
  82.     property OnStartDrag;
  83.   end;
  84. implementation
  85. {TVrGradient}
  86. constructor TVrCustomGradient.Create(AOwner: TComponent);
  87. begin
  88.   inherited Create(AOwner);
  89.   ControlStyle := ControlStyle + [csOpaque, csReplicatable];
  90.   Width := 150;
  91.   Height := 150;
  92.   FColorWidth := 1;
  93.   FDirection := gdUpDown;
  94.   FStartColor := clLime;
  95.   FEndColor := clBlack;
  96.   FSwapColors := false;
  97.   FFormDrag := false;
  98. end;
  99. destructor TVrCustomGradient.Destroy;
  100. begin
  101.   inherited Destroy;
  102. end;
  103. function TVrCustomGradient.GetPalette: HPalette;
  104. begin
  105.   Result := BitmapImage.Palette;
  106. end;
  107. procedure TVrCustomGradient.Paint;
  108. var
  109.   Color1, Color2, TempColor: TColor;
  110. begin
  111.   Color1 := StartColor;
  112.   Color2 := EndColor;
  113.   if SwapColors then
  114.   begin
  115.     TempColor := Color1;
  116.     Color1 := Color2;
  117.     Color2 := TempColor;
  118.   end;
  119.   DrawGradientExt(BitmapCanvas, ClientRect, Color1,
  120.     Color2, Direction, ColorWidth);
  121.   inherited Paint;
  122. end;
  123. procedure TVrCustomGradient.SetColorWidth(Value: Integer);
  124. begin
  125.   if (FColorWidth <> Value) and (Value > 0) then
  126.   begin
  127.     FColorWidth := Value;
  128.     UpdateControlCanvas;
  129.   end;
  130. end;
  131. procedure TVrCustomGradient.SetDirection(Value: TVrGradDirection);
  132. begin
  133.   if FDirection <> Value then
  134.   begin
  135.     FDirection := Value;
  136.     UpdateControlCanvas;
  137.   end;
  138. end;
  139. procedure TVrCustomGradient.SetStartColor(Value: TColor);
  140. begin
  141.   if FStartColor <> Value then
  142.   begin
  143.     FStartColor := Value;
  144.     UpdateControlCanvas;
  145.   end;
  146. end;
  147. procedure TVrCustomGradient.SetEndColor(Value: TColor);
  148. begin
  149.   if FEndColor <> Value then
  150.   begin
  151.     FEndColor := Value;
  152.     UpdateControlCanvas;
  153.   end;
  154. end;
  155. procedure TVrCustomGradient.SetSwapColors(Value: Boolean);
  156. begin
  157.   if FSwapColors <> Value then
  158.   begin
  159.     FSwapColors := Value;
  160.     UpdateControlCanvas;
  161.   end;
  162. end;
  163. procedure TVrCustomGradient.WMLButtonDown(var Msg: TWMLBUTTONDOWN);
  164. var
  165.   AOwner: TComponent;
  166. begin
  167.   inherited;
  168.   if FFormDrag then
  169.   begin
  170.     ReleaseCapture;
  171.     AOwner := GetOwnerControl(Self);
  172.     if AOwner <> nil then
  173.       TWinControl(AOwner).Perform(WM_SYSCOMMAND, SC_DRAGMOVE, 0);
  174.   end;
  175. end;
  176. end.