lazarus/components/lazreport/source/lr_fmted.pas

207 lines
5.1 KiB
ObjectPascal

{*****************************************}
{ }
{ FastReport v2.3 }
{ Format editor }
{ }
{ Copyright (c) 1998-99 by Tzyganenko A. }
{ }
{*****************************************}
unit LR_fmted;
interface
{$I LR_Vers.inc}
uses
Classes, SysUtils, LResources,
Forms, Controls, Graphics, Dialogs,
Buttons, StdCtrls,ExtCtrls, ButtonPanel,LR_Class;
type
{ TfrFmtForm }
TfrFmtForm = class(TForm)
ButtonPanel1: TButtonPanel;
GroupBox2: TGroupBox;
ComboBox1: TComboBox;
ComboBox2: TComboBox;
Panel1: TPanel;
Label5: TLabel;
Label6: TLabel;
SplEdit: TEdit;
Panel2: TPanel;
Edit1: TEdit;
Label1: TLabel;
Edit3: TEdit;
procedure ComboBox2Select(Sender: TObject);
procedure ComboBox1Change(Sender: TObject);
procedure SplEditEnter(Sender: TObject);
procedure ShowPanel1;
procedure ShowPanel2;
procedure FormCreate(Sender: TObject);
procedure frFmtFormShow(Sender: TObject);
private
fOldC1 : Integer;
FFormat: Integer;
FFormatStr:string;
function GetFormat: Integer;
function GetFormatStr: string;
procedure SetFormat(const AValue: Integer);
procedure SetFormatStr(const AValue: string);
public
{ Public declarations }
property EdFormat: Integer read GetFormat write SetFormat;
property EdFormatStr:string read GetFormatStr write SetFormatStr;
end;
var
frFmtForm: TfrFmtForm;
implementation
{$R *.lfm}
uses LR_Const;
{$WARNINGS OFF}
procedure TfrFmtForm.ComboBox2Select(Sender: TObject);
begin
ShowPanel2;
ShowPanel1;
end;
procedure TfrFmtForm.ShowPanel1;
begin
Panel1.Visible := (ComboBox1.ItemIndex = 1) and (not Panel2.Visible);
if Panel1.Visible then
begin
Edit3.Text := IntToStr((FFormat and $0000FF00) div $00000100);
SplEdit.Text := Chr(FFormat and $000000FF);
end;
end;
procedure TfrFmtForm.ShowPanel2;
begin
Panel2.Visible := ComboBox2.ItemIndex = 4;
end;
procedure TfrFmtForm.ComboBox1Change(Sender: TObject);
var
k: Integer;
begin
k := ComboBox1.ItemIndex;
if (k = -1) or (k=fOldC1) then Exit;
fOldC1:=k;
ComboBox2.Items.Clear;
Case k of
fmtText : ComboBox2.Items.Add(sFormat11);
fmtNumber : begin
ComboBox2.Items.Add(sFormat21);
ComboBox2.Items.Add(sFormat22);
ComboBox2.Items.Add(sFormat23);
ComboBox2.Items.Add(sFormat24);
ComboBox2.Items.Add(sFormat25);
end;
fmtDate : begin
ComboBox2.Items.Add(sFormat31);
ComboBox2.Items.Add(sFormat32);
ComboBox2.Items.Add(sFormat33);
ComboBox2.Items.Add(sFormat34);
ComboBox2.Items.Add(sFormat35);
end;
fmtTime : begin
ComboBox2.Items.Add(sFormat41);
ComboBox2.Items.Add(sFormat42);
ComboBox2.Items.Add(sFormat43);
ComboBox2.Items.Add(sFormat44);
ComboBox2.Items.Add(sFormat45);
end;
fmtBoolean: begin
ComboBox2.Items.Add(sFormat51);
ComboBox2.Items.Add(sFormat52);
ComboBox2.Items.Add(sFormat53);
ComboBox2.Items.Add(sFormat54);
ComboBox2.Items.Add(sFormat55);
end;
end;
ComboBox2.ItemIndex := 0;
if Sender <> nil then
begin
ComboBox2Select(nil);
ShowPanel1;
Edit1.Text := '';
end;
end;
procedure TfrFmtForm.SplEditEnter(Sender: TObject);
begin
SplEdit.SelectAll;
end;
{$WARNINGS ON}
procedure TfrFmtForm.FormCreate(Sender: TObject);
begin
fOldC1:=-1;
Caption := sFmtFormFrmtVar;
GroupBox2.Caption := sFmtFormVarFmt;
Label5.Caption := sFmtFormDeciD;
Label6.Caption := sFmtFormFrac;
Label1.Caption := sFmtFormFrmt;
SplEdit.Text := DefaultFormatSettings.DecimalSeparator;
end;
procedure TfrFmtForm.frFmtFormShow(Sender: TObject);
begin
Panel1.Hide;
Panel2.Hide;
ComboBox1.Items.Clear;
ComboBox1.Items.Add(sCateg1);
ComboBox1.Items.Add(sCateg2);
ComboBox1.Items.Add(sCateg3);
ComboBox1.Items.Add(sCateg4);
ComboBox1.Items.Add(sCateg5);
ComboBox1.ItemIndex := (FFormat and $0F000000) div $01000000;
ComboBox1Change(nil);
ComboBox2.ItemIndex := (FFormat and $00FF0000) div $00010000;
ShowPanel2;
ShowPanel1;
end;
procedure TfrFmtForm.SetFormat(const AValue: Integer);
begin
FFormat:=AValue;
end;
function TfrFmtForm.GetFormatStr: string;
begin
if Edit1.Enabled then
Result := Edit1.Text
else
Result := FFormatStr;
end;
procedure TfrFmtForm.SetFormatStr(const AValue: string);
begin
FFormatStr:=AValue;
Edit1.Text:=AValue;
end;
function TfrFmtForm.GetFormat: Integer;
var
c: Char;
begin
Result := ComboBox1.ItemIndex * $01000000 + ComboBox2.ItemIndex * $00010000 +
StrToIntDef(Edit3.Text, 0) * $00000100;
c := DefaultFormatSettings.DecimalSeparator;
if SplEdit.Text <> '' then
c := SplEdit.Text[1];
Result := Result + Ord(c);
end;
end.