unit Unit1; {$mode objfpc}{$H+} interface uses Classes, SysUtils, FileUtil, LResources, Forms, Controls, Graphics, Dialogs, StdCtrls, ComCtrls, Windows, ExtCtrls; type { TForm1 } TForm1 = class(TForm) Button1: TButton; Button2: TButton; Button3: TButton; Edit1: TEdit; Edit2: TEdit; Edit3: TEdit; Edit4: TEdit; Edit5: TEdit; Edit6: TEdit; Label1: TLabel; Label2: TLabel; Label3: TLabel; Label4: TLabel; ProgressBar1: TProgressBar; ProgressBar2: TProgressBar; ProgressBar3: TProgressBar; ScrollBar1: TScrollBar; ScrollBar2: TScrollBar; ScrollBar3: TScrollBar; ScrollBar4: TScrollBar; Timer1: TTimer; Timer2: TTimer; TrackBar1: TTrackBar; TrackBar2: TTrackBar; TrackBar3: TTrackBar; TrackBar4: TTrackBar; procedure Button1Click(Sender: TObject); procedure Button2Click(Sender: TObject); procedure Button3Click(Sender: TObject); procedure Edit1KeyPress(Sender: TObject; var Key: char); procedure Edit2KeyPress(Sender: TObject; var Key: char); procedure Edit3KeyPress(Sender: TObject; var Key: char); procedure FormCreate(Sender: TObject); procedure ScrollBar1Change(Sender: TObject); procedure ScrollBar2Change(Sender: TObject); procedure ScrollBar3Change(Sender: TObject); procedure ScrollBar4Change(Sender: TObject); procedure Timer1Timer(Sender: TObject); procedure Timer2Timer(Sender: TObject); procedure TrackBar1Change(Sender: TObject); procedure TrackBar2Change(Sender: TObject); procedure TrackBar3Change(Sender: TObject); procedure TrackBar4Change(Sender: TObject); private { private declarations } public { public declarations } end; var Form1: TForm1; var G,R,B: integer; implementation procedure colorsform; begin Form1.Edit1.Text:=IntToStr(R); Form1.Edit2.Text:=IntToStr(G); Form1.Edit3.Text:=IntToStr(B); Form1.color:=(256*B+G)*256+R; Form1.Edit5.Text:=IntToStr((256*B+G)*256+R); Form1.TrackBar1.Position:=R; Form1.ProgressBar1.Position:=R; Form1.TrackBar2.Position:=G; Form1.ProgressBar2.Position:=G; Form1.TrackBar3.Position:=B; Form1.ProgressBar3.Position:=B; Form1.Edit6.Text:='#'; case (R div 16) of 0..9: Form1.Edit6.Text:=Form1.Edit6.Text+IntToStr(R div 16); 10: Form1.Edit6.Text:=Form1.Edit6.Text+'A'; 11: Form1.Edit6.Text:=Form1.Edit6.Text+'B'; 12: Form1.Edit6.Text:=Form1.Edit6.Text+'C'; 13: Form1.Edit6.Text:=Form1.Edit6.Text+'D'; 14: Form1.Edit6.Text:=Form1.Edit6.Text+'E'; 15: Form1.Edit6.Text:=Form1.Edit6.Text+'F'; end; case (R mod 16) of 0..9: Form1.Edit6.Text:=Form1.Edit6.Text+IntToStr(R mod 16); 10: Form1.Edit6.Text:=Form1.Edit6.Text+'A'; 11: Form1.Edit6.Text:=Form1.Edit6.Text+'B'; 12: Form1.Edit6.Text:=Form1.Edit6.Text+'C'; 13: Form1.Edit6.Text:=Form1.Edit6.Text+'D'; 14: Form1.Edit6.Text:=Form1.Edit6.Text+'E'; 15: Form1.Edit6.Text:=Form1.Edit6.Text+'F'; end; case (G div 16) of 0..9: Form1.Edit6.Text:=Form1.Edit6.Text+IntToStr(G div 16); 10: Form1.Edit6.Text:=Form1.Edit6.Text+'A'; 11: Form1.Edit6.Text:=Form1.Edit6.Text+'B'; 12: Form1.Edit6.Text:=Form1.Edit6.Text+'C'; 13: Form1.Edit6.Text:=Form1.Edit6.Text+'D'; 14: Form1.Edit6.Text:=Form1.Edit6.Text+'E'; 15: Form1.Edit6.Text:=Form1.Edit6.Text+'F'; end; case (G mod 16) of 0..9: Form1.Edit6.Text:=Form1.Edit6.Text+IntToStr(G mod 16); 10: Form1.Edit6.Text:=Form1.Edit6.Text+'A'; 11: Form1.Edit6.Text:=Form1.Edit6.Text+'B'; 12: Form1.Edit6.Text:=Form1.Edit6.Text+'C'; 13: Form1.Edit6.Text:=Form1.Edit6.Text+'D'; 14: Form1.Edit6.Text:=Form1.Edit6.Text+'E'; 15: Form1.Edit6.Text:=Form1.Edit6.Text+'F'; end; case (B div 16) of 0..9: Form1.Edit6.Text:=Form1.Edit6.Text+IntToStr(B div 16); 10: Form1.Edit6.Text:=Form1.Edit6.Text+'A'; 11: Form1.Edit6.Text:=Form1.Edit6.Text+'B'; 12: Form1.Edit6.Text:=Form1.Edit6.Text+'C'; 13: Form1.Edit6.Text:=Form1.Edit6.Text+'D'; 14: Form1.Edit6.Text:=Form1.Edit6.Text+'E'; 15: Form1.Edit6.Text:=Form1.Edit6.Text+'F'; end; case (B mod 16) of 0..9: Form1.Edit6.Text:=Form1.Edit6.Text+IntToStr(B mod 16); 10: Form1.Edit6.Text:=Form1.Edit6.Text+'A'; 11: Form1.Edit6.Text:=Form1.Edit6.Text+'B'; 12: Form1.Edit6.Text:=Form1.Edit6.Text+'C'; 13: Form1.Edit6.Text:=Form1.Edit6.Text+'D'; 14: Form1.Edit6.Text:=Form1.Edit6.Text+'E'; 15: Form1.Edit6.Text:=Form1.Edit6.Text+'F'; end; end; { TForm1 } procedure TForm1.ScrollBar1Change(Sender: TObject); begin R:=ScrollBar1.Position; colorsform; end; procedure TForm1.ScrollBar2Change(Sender: TObject); begin G:=ScrollBar2.Position; colorsform; end; procedure TForm1.ScrollBar3Change(Sender: TObject); begin B:=ScrollBar3.Position; colorsform; end; procedure TForm1.TrackBar1Change(Sender: TObject); begin ScrollBar1.Position:=TrackBar1.Position; end; procedure TForm1.TrackBar2Change(Sender: TObject); begin ScrollBar2.Position:=TrackBar2.Position; end; procedure TForm1.TrackBar3Change(Sender: TObject); begin ScrollBar3.Position:=TrackBar3.Position; end; procedure TForm1.Edit1KeyPress(Sender: TObject; var Key: char); begin case Key of '0'..'9': ; #8: ; #13: begin ScrollBar1.Position:=StrToInt(Edit1.Text); Edit1.Text:=IntToStr(ScrollBar1.Position); ScrollBar2.Position:=StrToInt(Edit2.Text); Edit2.Text:=IntToStr(ScrollBar2.Position); ScrollBar3.Position:=StrToInt(Edit3.Text); Edit3.Text:=IntToStr(ScrollBar3.Position); Edit2.SetFocus; end; else Key:=Chr(0); end; end; procedure TForm1.Edit2KeyPress(Sender: TObject; var Key: char); begin case Key of '0'..'9': ; #8: ; #13: begin ScrollBar1.Position:=StrToInt(Edit1.Text); Edit1.Text:=IntToStr(ScrollBar1.Position); ScrollBar2.Position:=StrToInt(Edit2.Text); Edit2.Text:=IntToStr(ScrollBar2.Position); ScrollBar3.Position:=StrToInt(Edit3.Text); Edit3.Text:=IntToStr(ScrollBar3.Position); Edit3.SetFocus; end; else Key:=Chr(0); end; end; procedure TForm1.Edit3KeyPress(Sender: TObject; var Key: char); begin case Key of '0'..'9': ; #8: ; #13: begin ScrollBar1.Position:=StrToInt(Edit1.Text); Edit1.Text:=IntToStr(ScrollBar1.Position); ScrollBar2.Position:=StrToInt(Edit2.Text); Edit2.Text:=IntToStr(ScrollBar2.Position); ScrollBar3.Position:=StrToInt(Edit3.Text); Edit3.Text:=IntToStr(ScrollBar3.Position); Edit1.SetFocus; end; else Key:=Chr(0); end; end; procedure TForm1.Button1Click(Sender: TObject); begin Timer1.Enabled:=true; end; procedure TForm1.Timer1Timer(Sender: TObject); begin Timer1.Interval:=ScrollBar4.Position; Randomize(); R:= Random(256); G:= Random(256); B:= Random(256); ScrollBar1.Position:=R; ScrollBar2.Position:=G; ScrollBar3.Position:=B; end; procedure TForm1.Button3Click(Sender: TObject); begin R:=255; G:=0; B:=0; Timer2.Enabled:=true; Timer1.Enabled:=false; end; procedure TForm1.Timer2Timer(Sender: TObject); begin Timer2.Interval:=1; if (R=255) and (B=0) and (G>=0) and (G<255) then G:=G+1; if (G=255) and (B=0) and (R>0) and (R<=255) then R:=R-1; if (R=0) and (G=255) and (B>=0) and (B<255) then B:=B+1; if (R=0) and (B=255) and (G>0) and (G<=255) then G:=G-1; if (G=0) and (B=255) and (R>=0) and (R<255) then R:=R+1; if (R=255) and (G=0) and (B>0) and (B<=255) then B:=B-1; ScrollBar1.Position:=R; ScrollBar2.Position:=G; ScrollBar3.Position:=B; end; procedure TForm1.Button2Click(Sender: TObject); begin Timer1.Enabled:=false; Timer2.Enabled:=false; end; procedure TForm1.ScrollBar4Change(Sender: TObject); begin TrackBar4.Position:=ScrollBar4.Position; Edit4.Text:=IntToStr(ScrollBar4.Position); end; procedure TForm1.TrackBar4Change(Sender: TObject); begin ScrollBar4.Position:=TrackBar4.Position; end; procedure TForm1.FormCreate(Sender: TObject); begin R:=0; G:=0; B:=0; Edit1.Text:=IntToStr(R); Edit2.Text:=IntToStr(G); Edit3.Text:=IntToStr(B); Form1.color:=(256*B+G)*256+R; Edit5.Text:=IntToStr((256*B+G)*256+R); ScrollBar1.Position:=R; ScrollBar2.Position:=G; ScrollBar3.Position:=B; TrackBar1.Position:=R; TrackBar2.Position:=G; TrackBar3.Position:=B; ProgressBar1.Position:=R; ProgressBar2.Position:=G; ProgressBar3.Position:=B; end; initialization {$I unit1.lrs} end.