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.