/Components/FastReport3/Source/frxBarcodeEditor.pas
Pascal | 246 lines | 193 code | 37 blank | 16 comment | 20 complexity | 8ca457bd04d79a2be17bf6ceb311d7f3 MD5 | raw file
Possible License(s): AGPL-3.0
- {******************************************}
- { }
- { FastReport v3.0 }
- { Barcode design editor }
- { }
- { Copyright (c) 1998-2004 }
- { by Alexander Tzyganenko, }
- { Fast Reports Inc. }
- { }
- {******************************************}
- unit frxBarcodeEditor;
- interface
- uses
- Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs,
- StdCtrls, Menus, ExtCtrls, Buttons, frxClass, frxBarcode, frxCustomEditors,
- frxBarcod, frxCtrls, ComCtrls
- {$IFDEF Delphi6}
- , Variants
- {$ENDIF};
-
- type
- TfrxBarcodeEditor = class(TfrxViewEditor)
- public
- function Edit: Boolean; override;
- function HasEditor: Boolean; override;
- procedure GetMenuItems; override;
- function Execute(Tag: Integer; Checked: Boolean): Boolean; override;
- end;
- TfrxBarcodeEditorForm = class(TForm)
- CancelB: TButton;
- OkB: TButton;
- CodeE: TfrxComboEdit;
- CodeLbl: TLabel;
- TypeCB: TComboBox;
- TypeLbl: TLabel;
- ZoomLbl: TLabel;
- CalcCheckSumCB: TCheckBox;
- ViewTextCB: TCheckBox;
- ZoomE: TEdit;
- Rotation0RB: TRadioButton;
- Rotation90RB: TRadioButton;
- Rotation180RB: TRadioButton;
- Rotation270RB: TRadioButton;
- OptionsLbl: TLabel;
- Bevel3: TBevel;
- RotationLbl: TLabel;
- Bevel1: TBevel;
- ExampleBvl: TBevel;
- ExamplePB: TPaintBox;
- UpDown1: TUpDown;
- procedure ExprBtnClick(Sender: TObject);
- procedure UpBClick(Sender: TObject);
- procedure DownBClick(Sender: TObject);
- procedure ExamplePBPaint(Sender: TObject);
- procedure FormShow(Sender: TObject);
- procedure FormHide(Sender: TObject);
- procedure FormCreate(Sender: TObject);
- private
- { Private declarations }
- FBarcode: TfrxBarcodeView;
- public
- { Public declarations }
- property Barcode: TfrxBarcodeView read FBarcode write FBarcode;
- end;
- implementation
- uses frxDsgnIntf, frxRes, frxUtils;
- {$R *.DFM}
- const
- cbDefaultText = '12345678';
- { TfrxBarcodeEditor }
- function TfrxBarcodeEditor.HasEditor: Boolean;
- begin
- Result := True;
- end;
- function TfrxBarcodeEditor.Edit: Boolean;
- begin
- with TfrxBarcodeEditorForm.Create(Designer) do
- begin
- Barcode := TfrxBarcodeView(Component);
- Result := ShowModal = mrOk;
- Free;
- end;
- end;
- function TfrxBarcodeEditor.Execute(Tag: Integer; Checked: Boolean): Boolean;
- var
- i: Integer;
- c: TfrxComponent;
- v: TfrxBarcodeView;
- begin
- Result := inherited Execute(Tag, Checked);
- for i := 0 to Designer.SelectedObjects.Count - 1 do
- begin
- c := Designer.SelectedObjects[i];
- if (c is TfrxBarcodeView) and not (rfDontModify in c.Restrictions) then
- begin
- v := TfrxBarcodeView(c);
- if Tag = 1 then
- v.CalcCheckSum := Checked
- else if Tag = 2 then
- v.ShowText := Checked;
- Result := True;
- end;
- end;
- end;
- procedure TfrxBarcodeEditor.GetMenuItems;
- var
- v: TfrxBarcodeView;
- begin
- v := TfrxBarcodeView(Component);
- AddItem(frxResources.Get('bcCalcChecksum'), 1, v.CalcCheckSum);
- AddItem(frxResources.Get('bcShowText'), 2, v.ShowText);
- inherited;
- end;
- { TfrxBarcodeEditorForm }
- procedure TfrxBarcodeEditorForm.FormShow(Sender: TObject);
- var
- i: TfrxBarcodeType;
- begin
- TypeCB.Items.Clear;
- for i := bcCode_2_5_interleaved to bcCodeEAN128C do
- TypeCB.Items.Add(bcData[i].Name);
- CodeE.Text := FBarcode.Text;
- TypeCB.ItemIndex := Integer(FBarcode.BarType);
- CalcCheckSumCB.Checked := FBarcode.CalcCheckSum;
- ViewTextCB.Checked := FBarcode.ShowText;
- ZoomE.Text := FloatToStr(FBarcode.Zoom);
- case FBarcode.Rotation of
- 90: Rotation90RB.Checked := True;
- 180: Rotation180RB.Checked := True;
- 270: Rotation270RB.Checked := True;
- else Rotation0RB.Checked := True;
- end;
- ExamplePBPaint(nil);
- end;
- procedure TfrxBarcodeEditorForm.FormHide(Sender: TObject);
- begin
- if ModalResult = mrOk then
- begin
- FBarcode.Text := CodeE.Text;
- FBarcode.BarType := TfrxBarcodeType(TypeCB.ItemIndex);
- FBarcode.CalcCheckSum := CalcCheckSumCB.Checked;
- FBarcode.ShowText := ViewTextCB.Checked;
- FBarcode.Zoom := frxStrToFloat(ZoomE.Text);
- if Rotation90RB.Checked then
- FBarcode.Rotation := 90
- else if Rotation180RB.Checked then
- FBarcode.Rotation := 180
- else if Rotation270RB.Checked then
- FBarcode.Rotation := 270
- else
- FBarcode.Rotation := 0;
- end;
- end;
- procedure TfrxBarcodeEditorForm.ExprBtnClick(Sender: TObject);
- var
- s: String;
- begin
- s := TfrxCustomDesigner(Owner).InsertExpression(CodeE.Text);
- if s <> '' then
- CodeE.Text := s;
- end;
- procedure TfrxBarcodeEditorForm.UpBClick(Sender: TObject);
- var
- i: Double;
- begin
- i := frxStrToFloat(ZoomE.Text);
- i := i + 0.1;
- ZoomE.Text := FloatToStr(i);
- end;
- procedure TfrxBarcodeEditorForm.DownBClick(Sender: TObject);
- var
- i: Double;
- begin
- i := frxStrToFloat(ZoomE.Text);
- i := i - 0.1;
- if i <= 0 then i := 1;
- ZoomE.Text := FloatToStr(i);
- end;
- procedure TfrxBarcodeEditorForm.ExamplePBPaint(Sender: TObject);
- var
- Barcode: TfrxBarcode;
- begin
- Barcode := TfrxBarcode.Create(Self);
- Barcode.Typ := TfrxBarcodeType(TypeCB.ItemIndex);
- Barcode.Text := '12345678';
- if Rotation0RB.Checked then
- Barcode.Angle := 0
- else if Rotation90RB.Checked then
- Barcode.Angle := 90
- else if Rotation180RB.Checked then
- Barcode.Angle := 180
- else
- Barcode.Angle := 270;
- Barcode.CheckSum := CalcCheckSumCB.Checked;
- with ExamplePB.Canvas do
- begin
- Brush.Color := clWhite;
- FillRect(Rect(0, 0, ExamplePB.Width, ExamplePB.Height));
- Barcode.DrawBarcode(ExamplePB.Canvas, Rect(40, 20, ExamplePB.Width - 40, 200),
- ViewTextCB.Checked);
- end;
- Barcode.Free;
- end;
- procedure TfrxBarcodeEditorForm.FormCreate(Sender: TObject);
- begin
- frxResources.LocalizeForm(Self);
- end;
- initialization
- frxComponentEditors.Register(TfrxBarcodeView, TfrxBarcodeEditor);
- end.