Files
lazarus-ccr/components/industrialstuff/Example/LCDDisplay/Properties/untMain.pas
2022-06-19 21:29:11 +00:00

252 lines
6.7 KiB
ObjectPascal

unit untMain;
{$mode objfpc}{$H+}
interface
uses
Classes, SysUtils, Forms, Controls, Graphics, Dialogs, ExtCtrls, StdCtrls,
Spin, indLCDDisplay;
type
{ TfrmMain }
TfrmMain = class(TForm)
Bevel1: TBevel;
btnSaveCharDefs: TButton;
btnLoadCharDefs: TButton;
cbAutoSize: TCheckBox;
cbCharSpace: TCheckBox;
cbtFrameColor: TColorButton;
cbtBoardColor: TColorButton;
cbtDotONColor: TColorButton;
cbtDotOFFColor: TColorButton;
cbColorSchemes: TComboBox;
lblDotSize: TLabel;
lblLinesText: TLabel;
lblDotSpace: TLabel;
lblFrameSize: TLabel;
lblDisplayLineCount: TLabel;
lblWidth: TLabel;
lblHeight: TLabel;
lblDisplayCharCount: TLabel;
lblColorScheme: TLabel;
lblCustomColors: TLabel;
mmText: TMemo;
pnlProperties: TPanel;
pnlLCD: TPanel;
rgFrameStyle: TRadioGroup;
rgFrameColorStyle: TRadioGroup;
rgDotShape: TRadioGroup;
rgFrameHeight: TRadioGroup;
seDotSize: TSpinEdit;
seFrameSize: TSpinEdit;
seDotsSpace: TSpinEdit;
seDisplayCharCount: TSpinEdit;
seWidth: TSpinEdit;
seHeigth: TSpinEdit;
seDisplayLineCount: TSpinEdit;
procedure btnLoadCharDefsClick(Sender: TObject);
procedure btnSaveCharDefsClick(Sender: TObject);
procedure cbAutoSizeChange(Sender: TObject);
procedure cbCharSpaceChange(Sender: TObject);
procedure cbColorSchemesChange(Sender: TObject);
procedure cbtFrameColorColorChanged(Sender: TObject);
procedure cbtBoardColorColorChanged(Sender: TObject);
procedure cbtDotONColorColorChanged(Sender: TObject);
procedure cbtDotOFFColorColorChanged(Sender: TObject);
procedure FormCreate(Sender: TObject);
procedure FormShow(Sender: TObject);
procedure mmTextChange(Sender: TObject);
procedure rgFrameStyleClick(Sender: TObject);
procedure rgFrameColorStyleClick(Sender: TObject);
procedure rgDotShapeClick(Sender: TObject);
procedure rgFrameHeightClick(Sender: TObject);
procedure seDisplayCharCountChange(Sender: TObject);
procedure seDotSizeChange(Sender: TObject);
procedure seDotsSpaceChange(Sender: TObject);
procedure seFrameSizeChange(Sender: TObject);
procedure seHeigthChange(Sender: TObject);
procedure seDisplayLineCountChange(Sender: TObject);
procedure seWidthChange(Sender: TObject);
private
LCDDisplay: TLCDDisplay;
public
end;
var
frmMain: TfrmMain;
implementation
{$R *.lfm}
{ TfrmMain }
procedure TfrmMain.cbtFrameColorColorChanged(Sender: TObject);
begin
LCDDisplay.FrameColor := cbtFrameColor.ButtonColor;
end;
procedure TfrmMain.cbtBoardColorColorChanged(Sender: TObject);
begin
LCDDisplay.BoardColor := cbtBoardColor.ButtonColor;
end;
procedure TfrmMain.cbtDotONColorColorChanged(Sender: TObject);
begin
LCDDisplay.DotColorON := cbtDotONColor.ButtonColor;
end;
procedure TfrmMain.cbtDotOFFColorColorChanged(Sender: TObject);
begin
LCDDisplay.DotColorOFF := cbtDotOFFColor.ButtonColor;
end;
procedure TfrmMain.FormCreate(Sender: TObject);
var
i: Integer;
begin
LCDDisplay := TLCDDisplay.Create(self);
with LCDDisplay do
begin
Left := 24;
Height := 101;
Top := 16;
Width := 290;
AutoSize := True;
DotColorOn := 5162664;
DotColorOff := 2900284;
DisplayCharCount := 0;
Lines.Add('TLCDDisplay');
ColorScheme := csInvGreen;
Parent := pnlLCD;
AnchorSideLeft.Control := Parent;
AnchorSideLeft.Side := asrCenter;
BorderSpacing.Around := 6;
end;
// Fix TLabel transparency issue in Laz 2.2.2+
for i := 0 to ComponentCount-1 do
if Components[i] is TLabel then
TLabel(Components[i]).Transparent := true;
end;
procedure TfrmMain.FormShow(Sender: TObject);
begin
mmText.Lines := LCDDisplay.Lines;
seDisplayLineCount.Value := LCDDisplay.DisplayLineCount;
seDisplayCharCount.Value := LCDDisplay.DisplayCharCount;
seFrameSize.Value := LCDDisplay.FrameSize;
seDotSize.Value := LCDDisplay.DotSize;
seDotsSpace.Value := LCDDisplay.DotsSpace;
seWidth.Value := LCDDisplay.Width;
seHeigth.Value := LCDDisplay.Height;
cbAutoSize.Checked := LCDDisplay.AutoSize;
cbCharSpace.Checked := LCDDisplay.CharSpace;
cbtFrameColor.ButtonColor := LCDDisplay.FrameColor;
cbtBoardColor.ButtonColor := LCDDisplay.BoardColor;
cbtDotONColor.ButtonColor := LCDDisplay.DotColorOn;
cbtDotOFFColor.ButtonColor := LCDDisplay.DotColorOff;
rgFrameStyle.ItemIndex := integer(LCDDisplay.FrameStyle);
rgFrameColorStyle.ItemIndex := integer(LCDDisplay.FrameColorStyle);
rgDotShape.ItemIndex := integer(LCDDisplay.DotShape);
rgFrameHeight.ItemIndex := integer(LCDDisplay.FrameHeight);
cbColorSchemes.ItemIndex:= integer(LCDDisplay.ColorScheme);
end;
procedure TfrmMain.cbAutoSizeChange(Sender: TObject);
begin
LCDDisplay.AutoSize := cbAutoSize.Checked;
if not cbAutoSize.Checked then
begin
LCDDisplay.Width := seWidth.Value;
LCDDisplay.Height := seHeigth.Value;
end;
end;
procedure TfrmMain.btnSaveCharDefsClick(Sender: TObject);
begin
LCDDisplay.CharDefs.SaveToFile('default.xml');
end;
procedure TfrmMain.btnLoadCharDefsClick(Sender: TObject);
begin
LCDDisplay.CharDefs.LoadFromFile('default.xml');
end;
procedure TfrmMain.cbCharSpaceChange(Sender: TObject);
begin
LCDDisplay.CharSpace := cbCharSpace.Checked;
end;
procedure TfrmMain.cbColorSchemesChange(Sender: TObject);
begin
LCDDisplay.ColorScheme := TColorScheme(cbColorSchemes.ItemIndex);
end;
procedure TfrmMain.mmTextChange(Sender: TObject);
begin
LCDDisplay.Lines.Assign(mmText.Lines);
end;
procedure TfrmMain.rgFrameStyleClick(Sender: TObject);
begin
LCDDisplay.FrameStyle := TFrameStyle(rgFrameStyle.ItemIndex);
end;
procedure TfrmMain.rgFrameColorStyleClick(Sender: TObject);
begin
LCDDisplay.FrameColorStyle := TFrameColorStyle(rgFrameColorStyle.ItemIndex);
end;
procedure TfrmMain.rgDotShapeClick(Sender: TObject);
begin
LCDDisplay.DotShape := TDotShape(rgDotShape.ItemIndex);
end;
procedure TfrmMain.rgFrameHeightClick(Sender: TObject);
begin
LCDDisplay.FrameHeight := TFrameHeight(rgFrameHeight.ItemIndex);
end;
procedure TfrmMain.seDisplayCharCountChange(Sender: TObject);
begin
LCDDisplay.DisplayCharCount := seDisplayCharCount.Value;
end;
procedure TfrmMain.seDotSizeChange(Sender: TObject);
begin
LCDDisplay.DotSize := seDotSize.Value;
end;
procedure TfrmMain.seDotsSpaceChange(Sender: TObject);
begin
LCDDisplay.DotsSpace := seDotsSpace.Value;
end;
procedure TfrmMain.seFrameSizeChange(Sender: TObject);
begin
LCDDisplay.FrameSize := seFrameSize.Value;
end;
procedure TfrmMain.seHeigthChange(Sender: TObject);
begin
LCDDisplay.Height := seHeigth.Value;
end;
procedure TfrmMain.seDisplayLineCountChange(Sender: TObject);
begin
LCDDisplay.DisplayLineCount := seDisplayLineCount.Value;
end;
procedure TfrmMain.seWidthChange(Sender: TObject);
begin
LCDDisplay.Width := seWidth.Value;
end;
end.