Files
lazarus-ccr/components/industrialstuff/Example/AnalogSensor/analogsensor_unit.pas

144 lines
3.4 KiB
ObjectPascal
Raw Normal View History

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.