home *** CD-ROM | disk | FTP | other *** search
/ Delphi 4 Bible / Delphi_4_Bible_Tom_Swan_IDG_Books_1998.iso / source / COLORDLG / COLORDLG.PAS < prev    next >
Pascal/Delphi Source File  |  1995-09-02  |  3KB  |  104 lines

  1. unit Colordlg;
  2.  
  3. interface
  4.  
  5. uses
  6.   SysUtils, WinTypes, WinProcs, Messages, Classes, Graphics, Controls,
  7.   Forms, Dialogs, StdCtrls, Buttons, ExtCtrls;
  8.  
  9. type
  10.   TColorDlgForm = class(TForm)
  11.     RedSB: TScrollBar;
  12.     GreenSB: TScrollBar;
  13.     BlueSB: TScrollBar;
  14.     RedLabel: TLabel;
  15.     GreenLabel: TLabel;
  16.     BlueLabel: TLabel;
  17.     RedEdit: TEdit;
  18.     GreenEdit: TEdit;
  19.     BlueEdit: TEdit;
  20.     ColorEdit: TEdit;
  21.     OkBitBtn: TBitBtn;
  22.     CancelBitBtn: TBitBtn;
  23.     Bevel1: TBevel;
  24.     procedure FormCreate(Sender: TObject);
  25.     procedure SBChange(Sender: TObject);
  26.     procedure EditChange(Sender: TObject);
  27.     procedure FormActivate(Sender: TObject);
  28.     procedure OkBitBtnClick(Sender: TObject);
  29.     procedure CancelBitBtnClick(Sender: TObject);
  30.   private
  31.     RedPos, GreenPos, BluePos: Integer;  { For undo }
  32.     EditControls: array[0 .. 2] of TEdit;
  33.     ScrollBars: array[0 .. 2] of TScrollBar;
  34.     procedure UpdateColor;
  35.   public
  36.     ColorResult: TColor;  { Selected color }
  37.   end;
  38.  
  39. var
  40.   ColorDlgForm: TColorDlgForm;
  41.  
  42. implementation
  43.  
  44. {$R *.DFM}
  45.  
  46. {- Update ColorResult using scrollbar positions }
  47. procedure TColorDlgForm.UpdateColor;
  48. begin
  49.   ColorResult := RGB(
  50.     RedSB.Position, GreenSB.Position, BlueSB.Position);
  51.   ColorEdit.Color := ColorResult;  { Show color }
  52. end;
  53.  
  54. {- Initialize TObject control arrays }
  55. procedure TColorDlgForm.FormCreate(Sender: TObject);
  56. begin
  57.   EditControls[0] := RedEdit;
  58.   EditControls[1] := GreenEdit;
  59.   EditControls[2] := BlueEdit;
  60.   ScrollBars[0] := RedSB;
  61.   ScrollBars[1] := GreenSB;
  62.   ScrollBars[2] := BlueSB;
  63. end;
  64.  
  65. {- Update values in Edit boxes for ScrollBar changes }
  66. procedure TColorDlgForm.SBChange(Sender: TObject);
  67. begin
  68.   with Sender as TScrollBar do
  69.     EditControls[Tag].Text := IntToStr(Position);
  70.   UpdateColor;
  71. end;
  72.  
  73. {- Update scrollbar positions for Edit box changes }
  74. procedure TColorDlgForm.EditChange(Sender: TObject);
  75. begin
  76.   with Sender as TEdit do
  77.     ScrollBars[Tag].Position := StrToInt(Text);
  78. end;
  79.  
  80. {- Save scrollbar positions for possible undo }
  81. procedure TColorDlgForm.FormActivate(Sender: TObject);
  82. begin
  83.   RedPos := RedSB.Position;
  84.   GreenPos := GreenSB.Position;
  85.   BluePos := BlueSB.Position;
  86. end;
  87.  
  88. {- Respond to OK button. Accept changes. }
  89. procedure TColorDlgForm.OkBitBtnClick(Sender: TObject);
  90. begin
  91.   ModalResult := mrOk; { Close Window. Color in ColorResult. }
  92. end;
  93.  
  94. {- Respond to Cancel button. Undo changes. }
  95. procedure TColorDlgForm.CancelBitBtnClick(Sender: TObject);
  96. begin
  97.   RedSB.Position := RedPos;
  98.   GreenSB.Position := GreenPos;
  99.   BlueSB.Position := BluePos;
  100.   ModalResult := mrCancel;
  101. end;
  102.  
  103. end.
  104.