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 FormActivate(Sender: TObject);
  33.     procedure sbRedClick(Sender: TObject);
  34.     procedure sbBlueClick(Sender: TObject);
  35.     procedure sbGreenClick(Sender: TObject);
  36.     procedure spApplicationClick(Sender: TObject);
  37.   private
  38.     FormHandle: THandle;
  39.     MsgBack: Integer;
  40.     procedure SetSelColor (Col: TColor);
  41.     function GetSelColor: TColor;
  42.   public
  43.     procedure ApplyClick (Sender: TObject);
  44.     property SelectedColor: TColor
  45.       read GetSelColor write SetSelColor;
  46.   end;
  47. // extern DLL functions declarations
  48. function GetColor (Col: LongInt): LongInt; stdcall;
  49. procedure ShowColor (Col: LongInt;
  50.   FormHandle: THandle; MsgBack: Integer); stdcall;
  51. procedure SyncApp (AppHandle: THandle); stdcall;
  52. implementation
  53. {$R *.DFM}
  54. procedure TFormScroll.ScrollBarsScroll(Sender: TObject;
  55.   ScrollCode: TScrollCode; var ScrollPos: Integer);
  56. begin
  57.   (Sender as TScrollBar).Hint := IntToStr(ScrollPos);
  58.   Shape1.Brush.Color := RGB (ScrollBarRed.Position,
  59.     ScrollBarGreen.Position, ScrollBarBlue.Position);
  60.   Shape2.Pen.Color := RGB (ScrollBarRed.Position,
  61.     ScrollBarGreen.Position, ScrollBarBlue.Position);
  62. end;
  63. procedure TFormScroll.TrackBar1Change(Sender: TObject);
  64. begin
  65.   LabelScroll.Caption := 'Scroll by ' + IntToStr(TrackBar1.Position);
  66.   ScrollBarGreen.LargeChange := TrackBar1.Position;
  67.   ScrollBarRed.LargeChange := TrackBar1.Position;
  68.   ScrollBarBlue.LargeChange := TrackBar1.Position;
  69. end;
  70. procedure TFormScroll.FormClose(Sender: TObject; var Action: TCloseAction);
  71. begin
  72.   // used by the modeless form
  73.   Action := caFree;
  74. end;
  75. procedure TFormScroll.FormActivate(Sender: TObject);
  76. begin
  77.   // change buttons for modeless form
  78.   if FormHandle <> 0 then
  79.   begin
  80.     BitBtn1.Caption := 'Apply';
  81.     BitBtn1.OnClick := ApplyClick;
  82.     BitBtn2.Kind := bkClose;
  83.   end;
  84. end;
  85. procedure TFormScroll.ApplyClick(Sender: TObject);
  86. begin
  87.   // notify to the main form
  88.   SendMessage (FormHandle, MsgBack, SelectedColor, 0);
  89. end;
  90. procedure TFormScroll.sbRedClick(Sender: TObject);
  91. begin
  92.   SelectedColor := clRed;
  93. end;
  94. // set and get properties
  95. function TFormScroll.GetSelColor: TColor;
  96. begin
  97.   Result := RGB (ScrollBarRed.Position,
  98.     ScrollBarGreen.Position, ScrollBarBlue.Position);
  99. end;
  100. procedure TFormScroll.SetSelColor (Col: TColor);
  101. var
  102.   RGBCol: Integer;
  103. begin
  104.   RGBCol := ColorToRGB (Col);
  105.   ScrollBarRed.Position := GetRValue (RGBCol);
  106.   ScrollBarGreen.Position := GetGValue (RGBCol);
  107.   ScrollBarBlue.Position := GetBValue (RGBCol);
  108.   Shape1.Brush.Color := Col;
  109.   Shape2.Pen.Color := Col;
  110. end;
  111. procedure TFormScroll.sbBlueClick(Sender: TObject);
  112. begin
  113.   SelectedColor := clBlue;
  114. end;
  115. procedure TFormScroll.sbGreenClick(Sender: TObject);
  116. begin
  117.   SelectedColor := clGreen;
  118. end;
  119. procedure TFormScroll.spApplicationClick(Sender: TObject);
  120. begin
  121.   ShowMessage ('Application Handle: ' +
  122.     IntToStr (Application.Handle));
  123. end;
  124. // extern DLL functions
  125. function GetColor (Col: LongInt): LongInt; stdcall;
  126. var
  127.   FormScroll: TFormScroll;
  128. begin
  129.   // default value
  130.   Result := Col;
  131.   try
  132.     FormScroll := TFormScroll.Create (Application);
  133.     try
  134.       // initialize the data
  135.       FormScroll.SelectedColor := Col;
  136.       // show the form
  137.       if FormScroll.ShowModal = mrOK then
  138.         Result := FormScroll.SelectedColor;
  139.     finally
  140.       FormScroll.Free;
  141.     end;
  142.   except
  143.     on E: Exception do
  144.       MessageDlg ('Error in FormDLL: ' +
  145.         E.Message, mtError, [mbOK], 0);
  146.   end;
  147. end;
  148. procedure ShowColor (Col: LongInt;
  149.   FormHandle: THandle; MsgBack: Integer); stdcall;
  150. var
  151.   FormScroll: TFormScroll;
  152. begin
  153.   FormScroll := TFormScroll.Create (Application);
  154.   try
  155.     // initialize the data
  156.     FormScroll.FormHandle := FormHandle;
  157.     FormScroll.MsgBack := MsgBack;
  158.     FormScroll.SelectedColor := Col;
  159.     // show the form
  160.     FormScroll.Show;
  161.   except
  162.     on E: Exception do
  163.     begin
  164.       MessageDlg ('Error in FormDLL: ' +
  165.         E.Message, mtError, [mbOK], 0);
  166.       FormScroll.Free;
  167.     end;
  168.   end;
  169. end;
  170. procedure SyncApp (AppHandle: THandle); stdcall;
  171. begin
  172.   Application.Handle := AppHandle;
  173. end;
  174. end.