unit Unit1; {$mode objfpc}{$H+} interface uses Classes, SysUtils, Forms, Controls, Graphics, Dialogs, ExtCtrls, StdCtrls, db, DBGrids, ColorBox, EditBtn, Spin, rxmemds, rxdbgrid, rxtooledit; type { TForm1 } TForm1 = class(TForm) CheckBox1: TCheckBox; CheckBox2: TCheckBox; CheckBox3: TCheckBox; CheckBox4: TCheckBox; CheckBox5: TCheckBox; ColorBox1: TColorBox; ColorBox2: TColorBox; dsData: TDataSource; EditButton1: TEditButton; FontDialog1: TFontDialog; Label1: TLabel; Label2: TLabel; Label3: TLabel; Label4: TLabel; Label5: TLabel; Panel1: TPanel; rxData: TRxMemoryData; rxDataCaption: TStringField; rxDataEditDate: TDateTimeField; rxDataID: TLongintField; RxDBGrid1: TRxDBGrid; SpinEdit1: TSpinEdit; procedure CheckBox1Change(Sender: TObject); procedure EditButton1ButtonClick(Sender: TObject); procedure FormCreate(Sender: TObject); private procedure LoadFontParams; public end; var Form1: TForm1; implementation uses math; {$R *.lfm} { TForm1 } procedure TForm1.FormCreate(Sender: TObject); var i: Integer; begin rxData.Open; for i:=1 to 12 do rxData.AppendRecord([i, 'Line '+IntToStr(i) + ' ('+DefaultFormatSettings.LongMonthNames[i] +')', RandomRange(1, 100000) + Random]); rxData.First; LoadFontParams; end; procedure TForm1.LoadFontParams; begin SpinEdit1.OnChange:=nil; CheckBox2.OnChange:=nil; CheckBox3.OnChange:=nil; CheckBox4.OnChange:=nil; CheckBox5.OnChange:=nil; ColorBox1.OnChange:=nil; ColorBox2.OnChange:=nil; EditButton1.Text:=RxDBGrid1.SelectedFont.Name; SpinEdit1.Value:=RxDBGrid1.SelectedFont.Size; CheckBox2.Checked:=fsBold in RxDBGrid1.SelectedFont.Style; CheckBox3.Checked:=fsItalic in RxDBGrid1.SelectedFont.Style; CheckBox4.Checked:=fsUnderline in RxDBGrid1.SelectedFont.Style; CheckBox5.Checked:=fsStrikeOut in RxDBGrid1.SelectedFont.Style; ColorBox2.Selected:=RxDBGrid1.SelectedFont.Color; ColorBox1.Selected:=RxDBGrid1.SelectedColor; SpinEdit1.OnChange:=@CheckBox1Change; CheckBox2.OnChange:=@CheckBox1Change; CheckBox3.OnChange:=@CheckBox1Change; CheckBox4.OnChange:=@CheckBox1Change; CheckBox5.OnChange:=@CheckBox1Change; ColorBox1.OnChange:=@CheckBox1Change; ColorBox2.OnChange:=@CheckBox1Change; end; procedure TForm1.CheckBox1Change(Sender: TObject); begin if CheckBox1.Checked then RxDBGrid1.Options:=RxDBGrid1.Options + [dgRowSelect] else RxDBGrid1.Options:=RxDBGrid1.Options - [dgRowSelect]; RxDBGrid1.SelectedColor:=ColorBox1.Selected; if CheckBox2.Checked then RxDBGrid1.SelectedFont.Style:=RxDBGrid1.SelectedFont.Style + [fsBold] else RxDBGrid1.SelectedFont.Style:=RxDBGrid1.SelectedFont.Style - [fsBold]; if CheckBox3.Checked then RxDBGrid1.SelectedFont.Style:=RxDBGrid1.SelectedFont.Style + [fsItalic] else RxDBGrid1.SelectedFont.Style:=RxDBGrid1.SelectedFont.Style - [fsItalic]; if CheckBox4.Checked then RxDBGrid1.SelectedFont.Style:=RxDBGrid1.SelectedFont.Style + [fsUnderline] else RxDBGrid1.SelectedFont.Style:=RxDBGrid1.SelectedFont.Style - [fsUnderline]; if CheckBox5.Checked then RxDBGrid1.SelectedFont.Style:=RxDBGrid1.SelectedFont.Style + [fsStrikeOut] else RxDBGrid1.SelectedFont.Style:=RxDBGrid1.SelectedFont.Style - [fsStrikeOut]; RxDBGrid1.SelectedFont.Color:=ColorBox2.Selected; RxDBGrid1.SelectedFont.Size:=SpinEdit1.Value; LoadFontParams; end; procedure TForm1.EditButton1ButtonClick(Sender: TObject); begin FontDialog1.Font:=RxDBGrid1.SelectedFont; if FontDialog1.Execute then begin RxDBGrid1.SelectedFont:=FontDialog1.Font; LoadFontParams; end; end; end.