145 lines
3.6 KiB
ObjectPascal

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.