ScrollF.pas
上传用户:fh681027
上传日期:2022-07-23
资源大小:1959k
文件大小:5k
源码类别:

Delphi控件源码

开发平台:

Delphi

  1. unit ScrollF;
  2. interface
  3. uses
  4.   SysUtils, Windows, Messages, Classes, Graphics, Controls,
  5.   Forms, Dialogs, StdCtrls, ComCtrls, ExtCtrls, Buttons;
  6. type
  7.   TFormScroll = class(TForm)
  8.     ScrollBarRed: TScrollBar;
  9.     ScrollBarGreen: TScrollBar;
  10.     ScrollBarBlue: TScrollBar;
  11.     LabelRed: TLabel;
  12.     LabelGreen: TLabel;
  13.     LabelBlue: TLabel;
  14.     Shape1: TShape;
  15.     Shape2: TShape;
  16.     Shape3: TShape;
  17.     Label1: TLabel;
  18.     Label2: TLabel;
  19.     LabelScroll: TLabel;
  20.     TrackBar1: TTrackBar;
  21.     Panel1: TPanel;
  22.     sbRed: TSpeedButton;
  23.     sbBlue: TSpeedButton;
  24.     sbGreen: TSpeedButton;
  25.     BitBtn1: TBitBtn;
  26.     BitBtn2: TBitBtn;
  27.     spApplication: TSpeedButton;
  28.     procedure ScrollBarsScroll(Sender: TObject; ScrollCode: TScrollCode;
  29.       var ScrollPos: Integer);
  30.     procedure TrackBar1Change(Sender: TObject);
  31.     procedure FormClose(Sender: TObject; var Action: TCloseAction);
  32.     procedure sbRedClick(Sender: TObject);
  33.     procedure sbBlueClick(Sender: TObject);
  34.     procedure sbGreenClick(Sender: TObject);
  35.     procedure spApplicationClick(Sender: TObject);
  36.   private
  37.     procedure SetSelColor (Col: TColor);
  38.     function GetSelColor: TColor;
  39.   public
  40.     procedure ApplyClick (Sender: TObject);
  41.     property SelectedColor: TColor
  42.       read GetSelColor write SetSelColor;
  43.   end;
  44. // extern DLL functions declarations
  45. function GetColor (Col: LongInt): LongInt; stdcall;
  46. procedure ShowColor (Col: LongInt); stdcall;
  47. implementation
  48. {$R *.DFM}
  49. procedure TFormScroll.ScrollBarsScroll(Sender: TObject;
  50.   ScrollCode: TScrollCode; var ScrollPos: Integer);
  51. begin
  52.   (Sender as TScrollBar).Hint := IntToStr(ScrollPos);
  53.   Shape1.Brush.Color := RGB (ScrollBarRed.Position,
  54.     ScrollBarGreen.Position, ScrollBarBlue.Position);
  55.   Shape2.Pen.Color := RGB (ScrollBarRed.Position,
  56.     ScrollBarGreen.Position, ScrollBarBlue.Position);
  57. end;
  58. procedure TFormScroll.TrackBar1Change(Sender: TObject);
  59. begin
  60.   LabelScroll.Caption := 'Scroll by ' + IntToStr(TrackBar1.Position);
  61.   ScrollBarGreen.LargeChange := TrackBar1.Position;
  62.   ScrollBarRed.LargeChange := TrackBar1.Position;
  63.   ScrollBarBlue.LargeChange := TrackBar1.Position;
  64. end;
  65. procedure TFormScroll.FormClose(Sender: TObject; var Action: TCloseAction);
  66. begin
  67.   // used by the modeless form
  68.   Action := caFree;
  69. end;
  70. procedure TFormScroll.ApplyClick(Sender: TObject);
  71. begin
  72.   // access to the main form directly
  73.   Application.MainForm.Color := SelectedColor;
  74. end;
  75. procedure TFormScroll.sbRedClick(Sender: TObject);
  76. begin
  77.   SelectedColor := clRed;
  78. end;
  79. // set and get properties
  80. function TFormScroll.GetSelColor: TColor;
  81. begin
  82.   Result := RGB (ScrollBarRed.Position,
  83.     ScrollBarGreen.Position, ScrollBarBlue.Position);
  84. end;
  85. procedure TFormScroll.SetSelColor (Col: TColor);
  86. var
  87.   RGBCol: Integer;
  88. begin
  89.   RGBCol := ColorToRGB (Col);
  90.   ScrollBarRed.Position := GetRValue (RGBCol);
  91.   ScrollBarGreen.Position := GetGValue (RGBCol);
  92.   ScrollBarBlue.Position := GetBValue (RGBCol);
  93.   Shape1.Brush.Color := Col;
  94.   Shape2.Pen.Color := Col;
  95. end;
  96. procedure TFormScroll.sbBlueClick(Sender: TObject);
  97. begin
  98.   SelectedColor := clBlue;
  99. end;
  100. procedure TFormScroll.sbGreenClick(Sender: TObject);
  101. begin
  102.   SelectedColor := clGreen;
  103. end;
  104. procedure TFormScroll.spApplicationClick(Sender: TObject);
  105. begin
  106.   ShowMessage ('Application Handle: ' +
  107.     IntToStr (Application.Handle));
  108. end;
  109. // extern DLL functions
  110. function GetColor (Col: LongInt): LongInt; stdcall;
  111. var
  112.   FormScroll: TFormScroll;
  113. begin
  114.   // default value
  115.   Result := Col;
  116.   try
  117.     FormScroll := TFormScroll.Create (Application);
  118.     try
  119.       // initialize the data
  120.       FormScroll.SelectedColor := Col;
  121.       // show the form
  122.       if FormScroll.ShowModal = mrOK then
  123.         Result := FormScroll.SelectedColor;
  124.     finally
  125.       FormScroll.Free;
  126.     end;
  127.   except
  128.     on E: Exception do
  129.       MessageDlg ('Error in FormDLL: ' +
  130.         E.Message, mtError, [mbOK], 0);
  131.   end;
  132. end;
  133. procedure ShowColor (Col: LongInt); stdcall;
  134. var
  135.   FormScroll: TFormScroll;
  136. begin
  137.   FormScroll := TFormScroll.Create (Application);
  138.   try
  139.     // initialize the data
  140.     FormScroll.SelectedColor := Col;
  141.     // initialzie the buttons
  142.     FormScroll.BitBtn1.Caption := 'Apply';
  143.     FormScroll.BitBtn1.OnClick := FormScroll.ApplyClick;
  144.     FormScroll.BitBtn2.Kind := bkClose;
  145.     // show the form
  146.     FormScroll.Show;
  147.   except
  148.     on E: Exception do
  149.     begin
  150.       MessageDlg ('Error in FormDLL: ' +
  151.         E.Message, mtError, [mbOK], 0);
  152.       FormScroll.Free;
  153.     end;
  154.   end;
  155. end;
  156. initialization
  157.   Application.CreateHandle;
  158. end.