unit AnalogSensor_Unit; {$mode objfpc}{$H+} interface uses Classes, SysUtils, Forms, Controls, Graphics, Dialogs, ExtCtrls, StdCtrls, Sensors; type { TForm1 } TForm1 = class(TForm) AnalogSensor1: TAnalogSensor; cbAnalogKind: TComboBox; cbShowText: TCheckBox; cbShowLevel: TCheckBox; clbValueFore: TColorButton; clbValueYellow: TColorButton; clbValueRed: TColorButton; clbBack: TColorButton; edCaption: TEdit; GroupBox1: TGroupBox; lblAnalogKind: TLabel; lblCaption: TLabel; SettingsPanel: TPanel; sbValue: TScrollBar; sbValueYellow: TScrollBar; sbValueRed: TScrollBar; procedure cbAnalogKindChange(Sender: TObject); procedure cbShowLevelChange(Sender: TObject); procedure cbShowTextChange(Sender: TObject); procedure clbValueForeColorChanged(Sender: TObject); procedure clbValueRedColorChanged(Sender: TObject); procedure clbValueYellowColorChanged(Sender: TObject); procedure clbBackClick(Sender: TObject); procedure edCaptionChange(Sender: TObject); procedure FormCreate(Sender: TObject); procedure sbValueYellowChange(Sender: TObject); procedure sbValueChange(Sender: TObject); procedure sbValueRedChange(Sender: TObject); private procedure UpdateColorState; public end; var Form1: TForm1; implementation {$R *.lfm} { TForm1 } procedure TForm1.cbAnalogKindChange(Sender: TObject); const lWIDTH: array[TAnalogKind] of Integer = (250, 250, 60); lHEIGHT: array[TAnalogKind] of Integer = (150, 70, 250); begin AnalogSensor1.AnalogKind := TAnalogKind(cbAnalogKind.ItemIndex); AnalogSensor1.Width := lWIDTH[AnalogSensor1.AnalogKind]; AnalogSensor1.Height := lHEIGHT[AnalogSensor1.AnalogKind]; end; procedure TForm1.cbShowLevelChange(Sender: TObject); begin AnalogSensor1.ShowLevel := cbShowLevel.Checked; end; procedure TForm1.cbShowTextChange(Sender: TObject); begin AnalogSensor1.ShowText := cbShowText.Checked; end; procedure TForm1.clbBackClick(Sender: TObject); begin AnalogSensor1.ColorBack := clbBack.ButtonColor; end; procedure TForm1.clbValueForeColorChanged(Sender: TObject); begin AnalogSensor1.ColorFore := clbValueFore.ButtonColor; UpdateColorState; end; procedure TForm1.clbValueRedColorChanged(Sender: TObject); begin AnalogSensor1.ColorRed := clbValueRed.ButtonColor; UpdateColorState; end; procedure TForm1.clbValueYellowColorChanged(Sender: TObject); begin AnalogSensor1.ColorYellow := clbValueYellow.ButtonColor; UpdateColorState; end; procedure TForm1.edCaptionChange(Sender: TObject); begin AnalogSensor1.Caption := edCaption.Text; UpdateColorState; end; procedure TForm1.FormCreate(Sender: TObject); begin UpdateColorState; end; procedure TForm1.sbValueChange(Sender: TObject); begin AnalogSensor1.Value := sbValue.Position; UpdateColorState; end; procedure TForm1.sbValueRedChange(Sender: TObject); begin AnalogSensor1.ValueRed := sbValueRed.Position; UpdateColorState; end; procedure TForm1.sbValueYellowChange(Sender: TObject); begin AnalogSensor1.ValueYellow := sbValueYellow.Position; UpdateColorState; end; procedure TForm1.UpdateColorState; begin if AnalogSensor1.Value < AnalogSensor1.ValueRed then AnalogSensor1.SetColorState(slRED) else if AnalogSensor1.Value > AnalogSensor1.ValueYellow then AnalogSensor1.SetColorState(slYELLOW) else AnalogSensor1.SetColorState(slUNKNOWN); end; end.