unit ubarcodeform; interface uses Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms, Dialogs, StdCtrls, StBarC, ExtCtrls, ComCtrls, Typinfo; type TfmBarCodeForm = class(TForm) pnTop: TPanel; StBarCode1: TStBarCode; pnBottom: TPanel; sb: TStatusBar; pnB1: TPanel; lbValue: TLabel; edValue: TEdit; pnB2: TPanel; lbSize: TLabel; edSize: TEdit; udBarWidth: TUpDown; pnB3: TPanel; lbFormat: TLabel; coBarCodeType: TComboBox; coCode128Subsets: TComboBox; pnB4: TPanel; cbShowCode: TCheckBox; cbAddCheckChar: TCheckBox; pnBLast: TPanel; Button1: TButton; Label1: TLabel; edFontSize: TEdit; udFotnSize: TUpDown; procedure Button1Click(Sender: TObject); procedure edValueChange(Sender: TObject); procedure cbShowCodeClick(Sender: TObject); procedure edSizeChange(Sender: TObject); procedure FormResize(Sender: TObject); procedure FormCreate(Sender: TObject); procedure coBarCodeTypeChange(Sender: TObject); procedure cbAddCheckCharClick(Sender: TObject); procedure coCode128SubsetsChange(Sender: TObject); procedure edFontSizeChange(Sender: TObject); private { Déclarations privées } name : String; version : String; procedure buildBarCodeTypes(); procedure buildCode128Subsets(); public { Déclarations publiques } end; var fmBarCodeForm: TfmBarCodeForm; implementation uses StrUtils; {$R *.dfm} procedure TfmBarCodeForm.Button1Click(Sender: TObject); begin StBarCode1.CopyToClipboard ; end; procedure TfmBarCodeForm.edValueChange(Sender: TObject); var s : String; begin s := edValue.Text; { if (coBarCodeType.ItemIndex = ord(bcEAN_13)) and (length (s) < 12) or (length(s) > 13) then begin s := ''; end; } StBarCode1.Code := s; end; procedure TfmBarCodeForm.cbShowCodeClick(Sender: TObject); begin StBarCode1.ShowCode := (sender as TCheckBox).Checked; end; procedure TfmBarCodeForm.edSizeChange(Sender: TObject); begin StBarCode1.BarWidth := StrToFloat((sender as TEdit).Text); end; procedure TfmBarCodeForm.FormResize(Sender: TObject); begin self.Caption := self.name + ' - ' + IntToStr(StBarCode1.Width) + 'x' + IntToStr(StBarCode1.Height); end; procedure TfmBarCodeForm.coBarCodeTypeChange(Sender: TObject); var this : TComboBox; begin this := sender as TComboBox; sb.SimpleText := 'Selected ' + IntToStr(this.ItemIndex); coCode128Subsets.Visible := this.ItemIndex = ord(bcCode128); StBarCode1.BarCodeType := TStBarCodeType(this.ItemIndex); end; procedure TfmBarCodeForm.buildBarCodeTypes(); var i : Integer; s : String; begin for i := ord(low(TstBarCodeType)) to ord(high(TstBarCodeType)) do begin s := getEnumName(typeInfo(TStBarCodeType), i); s := Midstr(s, 3, 100); coBarCodeType.Items.Add(s); end; coBarCodeType.ItemIndex := ord(bcCode39); StBarCode1.BarCodeType := bcCode39; end; procedure TfmBarCodeForm.buildCode128Subsets(); var i : Integer; s : String; begin for i := ord(low(TStCode128CodeSubset)) to ord(high(TStCode128CodeSubset)) do begin s := getEnumName(typeInfo(TStCode128CodeSubset), i); s := Midstr(s, 3, 100); coCode128Subsets.Items.Add(s); end; coCode128Subsets.ItemIndex := ord(csCodeA); coCode128Subsets.Visible := FALSE; end; procedure TfmBarCodeForm.FormCreate(Sender: TObject); begin self.version := '$Id: ubarcodeform.pas,v 1.2 2009-04-16 13:30:36 marand Exp $'; self.name := 'OSInet barcode generator'; sb.SimplePanel := True; sb.SimpleText := self.name + ' - ' + self.version; buildBarCodeTypes; buildCode128Subsets; end; procedure TfmBarCodeForm.cbAddCheckCharClick(Sender: TObject); begin StBarCode1.AddCheckChar := (sender as TCheckBox).Checked; end; procedure TfmBarCodeForm.coCode128SubsetsChange(Sender: TObject); begin StBarCode1.Code128Subset := TStCode128CodeSubset((sender as TComboBox).ItemIndex); end; procedure TfmBarCodeForm.edFontSizeChange(Sender: TObject); begin StBarCode1.Font.Size := StrToInt(edFontSize.Text); end; end.