2022-06-15 10:19:47 +00:00
|
|
|
unit untMain;
|
|
|
|
|
|
|
|
{$mode objfpc}{$H+}
|
|
|
|
|
|
|
|
interface
|
|
|
|
|
|
|
|
uses
|
|
|
|
Classes, SysUtils, Forms, Controls, Graphics, Dialogs, ExtCtrls, StdCtrls,
|
|
|
|
Spin, indLCDDisplay;
|
|
|
|
|
|
|
|
type
|
|
|
|
|
|
|
|
{ TfrmMain }
|
|
|
|
|
|
|
|
TfrmMain = class(TForm)
|
2022-06-19 21:29:11 +00:00
|
|
|
Bevel1: TBevel;
|
2022-06-15 20:50:14 +00:00
|
|
|
btnSaveCharDefs: TButton;
|
|
|
|
btnLoadCharDefs: TButton;
|
2022-06-15 10:19:47 +00:00
|
|
|
cbAutoSize: TCheckBox;
|
|
|
|
cbCharSpace: TCheckBox;
|
|
|
|
cbtFrameColor: TColorButton;
|
|
|
|
cbtBoardColor: TColorButton;
|
|
|
|
cbtDotONColor: TColorButton;
|
|
|
|
cbtDotOFFColor: TColorButton;
|
|
|
|
cbColorSchemes: TComboBox;
|
2022-06-19 21:29:11 +00:00
|
|
|
lblDotSize: TLabel;
|
|
|
|
lblLinesText: TLabel;
|
|
|
|
lblDotSpace: TLabel;
|
|
|
|
lblFrameSize: TLabel;
|
|
|
|
lblDisplayLineCount: TLabel;
|
|
|
|
lblWidth: TLabel;
|
|
|
|
lblHeight: TLabel;
|
|
|
|
lblDisplayCharCount: TLabel;
|
|
|
|
lblColorScheme: TLabel;
|
|
|
|
lblCustomColors: TLabel;
|
2022-06-15 10:19:47 +00:00
|
|
|
mmText: TMemo;
|
2022-06-19 21:29:11 +00:00
|
|
|
pnlProperties: TPanel;
|
|
|
|
pnlLCD: TPanel;
|
2022-06-15 10:19:47 +00:00
|
|
|
rgFrameStyle: TRadioGroup;
|
|
|
|
rgFrameColorStyle: TRadioGroup;
|
|
|
|
rgDotShape: TRadioGroup;
|
|
|
|
rgFrameHeight: TRadioGroup;
|
|
|
|
seDotSize: TSpinEdit;
|
|
|
|
seFrameSize: TSpinEdit;
|
|
|
|
seDotsSpace: TSpinEdit;
|
|
|
|
seDisplayCharCount: TSpinEdit;
|
|
|
|
seWidth: TSpinEdit;
|
|
|
|
seHeigth: TSpinEdit;
|
|
|
|
seDisplayLineCount: TSpinEdit;
|
2022-06-15 20:50:14 +00:00
|
|
|
procedure btnLoadCharDefsClick(Sender: TObject);
|
|
|
|
procedure btnSaveCharDefsClick(Sender: TObject);
|
2022-06-15 10:19:47 +00:00
|
|
|
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
|
2022-06-15 15:32:44 +00:00
|
|
|
LCDDisplay: TLCDDisplay;
|
2022-06-15 10:19:47 +00:00
|
|
|
|
|
|
|
public
|
|
|
|
|
|
|
|
end;
|
|
|
|
|
|
|
|
var
|
|
|
|
frmMain: TfrmMain;
|
|
|
|
|
|
|
|
implementation
|
|
|
|
|
|
|
|
{$R *.lfm}
|
|
|
|
|
|
|
|
{ TfrmMain }
|
|
|
|
|
|
|
|
procedure TfrmMain.cbtFrameColorColorChanged(Sender: TObject);
|
|
|
|
begin
|
2022-06-15 15:32:44 +00:00
|
|
|
LCDDisplay.FrameColor := cbtFrameColor.ButtonColor;
|
2022-06-15 10:19:47 +00:00
|
|
|
end;
|
|
|
|
|
|
|
|
procedure TfrmMain.cbtBoardColorColorChanged(Sender: TObject);
|
|
|
|
begin
|
2022-06-15 15:32:44 +00:00
|
|
|
LCDDisplay.BoardColor := cbtBoardColor.ButtonColor;
|
2022-06-15 10:19:47 +00:00
|
|
|
end;
|
|
|
|
|
|
|
|
procedure TfrmMain.cbtDotONColorColorChanged(Sender: TObject);
|
|
|
|
begin
|
2022-06-15 15:32:44 +00:00
|
|
|
LCDDisplay.DotColorON := cbtDotONColor.ButtonColor;
|
2022-06-15 10:19:47 +00:00
|
|
|
end;
|
|
|
|
|
|
|
|
procedure TfrmMain.cbtDotOFFColorColorChanged(Sender: TObject);
|
|
|
|
begin
|
2022-06-15 15:32:44 +00:00
|
|
|
LCDDisplay.DotColorOFF := cbtDotOFFColor.ButtonColor;
|
2022-06-15 10:19:47 +00:00
|
|
|
end;
|
|
|
|
|
|
|
|
procedure TfrmMain.FormCreate(Sender: TObject);
|
2022-06-19 21:29:11 +00:00
|
|
|
var
|
|
|
|
i: Integer;
|
2022-06-15 10:19:47 +00:00
|
|
|
begin
|
2022-06-15 15:32:44 +00:00
|
|
|
LCDDisplay := TLCDDisplay.Create(self);
|
|
|
|
with LCDDisplay do
|
2022-06-15 10:19:47 +00:00
|
|
|
begin
|
|
|
|
Left := 24;
|
|
|
|
Height := 101;
|
|
|
|
Top := 16;
|
|
|
|
Width := 290;
|
|
|
|
AutoSize := True;
|
|
|
|
DotColorOn := 5162664;
|
|
|
|
DotColorOff := 2900284;
|
|
|
|
DisplayCharCount := 0;
|
2022-06-15 15:32:44 +00:00
|
|
|
Lines.Add('TLCDDisplay');
|
2022-06-15 10:19:47 +00:00
|
|
|
ColorScheme := csInvGreen;
|
2022-06-19 21:29:11 +00:00
|
|
|
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;
|
2022-06-15 10:19:47 +00:00
|
|
|
end;
|
|
|
|
|
|
|
|
procedure TfrmMain.FormShow(Sender: TObject);
|
|
|
|
begin
|
2022-06-15 15:32:44 +00:00
|
|
|
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);
|
2022-06-15 10:19:47 +00:00
|
|
|
end;
|
|
|
|
|
|
|
|
procedure TfrmMain.cbAutoSizeChange(Sender: TObject);
|
|
|
|
begin
|
2022-06-15 15:32:44 +00:00
|
|
|
LCDDisplay.AutoSize := cbAutoSize.Checked;
|
2022-06-15 10:19:47 +00:00
|
|
|
if not cbAutoSize.Checked then
|
|
|
|
begin
|
2022-06-15 15:32:44 +00:00
|
|
|
LCDDisplay.Width := seWidth.Value;
|
|
|
|
LCDDisplay.Height := seHeigth.Value;
|
2022-06-15 10:19:47 +00:00
|
|
|
end;
|
|
|
|
end;
|
|
|
|
|
2022-06-15 20:50:14 +00:00
|
|
|
procedure TfrmMain.btnSaveCharDefsClick(Sender: TObject);
|
|
|
|
begin
|
|
|
|
LCDDisplay.CharDefs.SaveToFile('default.xml');
|
|
|
|
end;
|
|
|
|
|
|
|
|
procedure TfrmMain.btnLoadCharDefsClick(Sender: TObject);
|
|
|
|
begin
|
|
|
|
LCDDisplay.CharDefs.LoadFromFile('default.xml');
|
|
|
|
end;
|
|
|
|
|
2022-06-15 10:19:47 +00:00
|
|
|
procedure TfrmMain.cbCharSpaceChange(Sender: TObject);
|
|
|
|
begin
|
2022-06-15 15:32:44 +00:00
|
|
|
LCDDisplay.CharSpace := cbCharSpace.Checked;
|
2022-06-15 10:19:47 +00:00
|
|
|
end;
|
|
|
|
|
|
|
|
procedure TfrmMain.cbColorSchemesChange(Sender: TObject);
|
|
|
|
begin
|
2022-06-15 15:32:44 +00:00
|
|
|
LCDDisplay.ColorScheme := TColorScheme(cbColorSchemes.ItemIndex);
|
2022-06-15 10:19:47 +00:00
|
|
|
end;
|
|
|
|
|
|
|
|
procedure TfrmMain.mmTextChange(Sender: TObject);
|
|
|
|
begin
|
2022-06-15 15:32:44 +00:00
|
|
|
LCDDisplay.Lines.Assign(mmText.Lines);
|
2022-06-15 10:19:47 +00:00
|
|
|
end;
|
|
|
|
|
|
|
|
procedure TfrmMain.rgFrameStyleClick(Sender: TObject);
|
|
|
|
begin
|
2022-06-15 15:32:44 +00:00
|
|
|
LCDDisplay.FrameStyle := TFrameStyle(rgFrameStyle.ItemIndex);
|
2022-06-15 10:19:47 +00:00
|
|
|
end;
|
|
|
|
|
|
|
|
procedure TfrmMain.rgFrameColorStyleClick(Sender: TObject);
|
|
|
|
begin
|
2022-06-15 15:32:44 +00:00
|
|
|
LCDDisplay.FrameColorStyle := TFrameColorStyle(rgFrameColorStyle.ItemIndex);
|
2022-06-15 10:19:47 +00:00
|
|
|
end;
|
|
|
|
|
|
|
|
procedure TfrmMain.rgDotShapeClick(Sender: TObject);
|
|
|
|
begin
|
2022-06-15 15:32:44 +00:00
|
|
|
LCDDisplay.DotShape := TDotShape(rgDotShape.ItemIndex);
|
2022-06-15 10:19:47 +00:00
|
|
|
end;
|
|
|
|
|
|
|
|
procedure TfrmMain.rgFrameHeightClick(Sender: TObject);
|
|
|
|
begin
|
2022-06-15 15:32:44 +00:00
|
|
|
LCDDisplay.FrameHeight := TFrameHeight(rgFrameHeight.ItemIndex);
|
2022-06-15 10:19:47 +00:00
|
|
|
end;
|
|
|
|
|
|
|
|
procedure TfrmMain.seDisplayCharCountChange(Sender: TObject);
|
|
|
|
begin
|
2022-06-15 15:32:44 +00:00
|
|
|
LCDDisplay.DisplayCharCount := seDisplayCharCount.Value;
|
2022-06-15 10:19:47 +00:00
|
|
|
end;
|
|
|
|
|
|
|
|
procedure TfrmMain.seDotSizeChange(Sender: TObject);
|
|
|
|
begin
|
2022-06-15 15:32:44 +00:00
|
|
|
LCDDisplay.DotSize := seDotSize.Value;
|
2022-06-15 10:19:47 +00:00
|
|
|
end;
|
|
|
|
|
|
|
|
procedure TfrmMain.seDotsSpaceChange(Sender: TObject);
|
|
|
|
begin
|
2022-06-15 15:32:44 +00:00
|
|
|
LCDDisplay.DotsSpace := seDotsSpace.Value;
|
2022-06-15 10:19:47 +00:00
|
|
|
end;
|
|
|
|
|
|
|
|
procedure TfrmMain.seFrameSizeChange(Sender: TObject);
|
|
|
|
begin
|
2022-06-15 15:32:44 +00:00
|
|
|
LCDDisplay.FrameSize := seFrameSize.Value;
|
2022-06-15 10:19:47 +00:00
|
|
|
end;
|
|
|
|
|
|
|
|
procedure TfrmMain.seHeigthChange(Sender: TObject);
|
|
|
|
begin
|
2022-06-15 15:32:44 +00:00
|
|
|
LCDDisplay.Height := seHeigth.Value;
|
2022-06-15 10:19:47 +00:00
|
|
|
end;
|
|
|
|
|
|
|
|
procedure TfrmMain.seDisplayLineCountChange(Sender: TObject);
|
|
|
|
begin
|
2022-06-15 15:32:44 +00:00
|
|
|
LCDDisplay.DisplayLineCount := seDisplayLineCount.Value;
|
2022-06-15 10:19:47 +00:00
|
|
|
end;
|
|
|
|
|
|
|
|
procedure TfrmMain.seWidthChange(Sender: TObject);
|
|
|
|
begin
|
2022-06-15 15:32:44 +00:00
|
|
|
LCDDisplay.Width := seWidth.Value;
|
2022-06-15 10:19:47 +00:00
|
|
|
end;
|
|
|
|
|
|
|
|
end.
|