unit Unit1;

interface

uses
  Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
  Dialogs, StdCtrls, ExtCtrls, RM_System, RM_Common, RM_Class,
  RM_GridReport;

type
  TForm1 = class(TForm)
    GroupBox1: TGroupBox;
    Edit1: TEdit;
    Edit2: TEdit;
    Edit3: TEdit;
    Edit10: TEdit;
    Label1: TLabel;
    Label2: TLabel;
    Label3: TLabel;
    Label4: TLabel;
    Memo1: TMemo;
    Panel1: TPanel;
    Button1: TButton;
    Button2: TButton;
    Button3: TButton;
    Image1: TImage;
    OpenDialog1: TOpenDialog;
    SaveDialog1: TSaveDialog;
    GroupBox2: TGroupBox;
    Edit4: TEdit;
    Edit5: TEdit;
    Edit6: TEdit;
    Edit7: TEdit;
    Edit8: TEdit;
    Edit9: TEdit;
    Label5: TLabel;
    Label6: TLabel;
    Label7: TLabel;
    Label8: TLabel;
    Label9: TLabel;
    Label10: TLabel;
    Label11: TLabel;
    Button4: TButton;
    RM1: TRMGridReport;
    procedure Button1Click(Sender: TObject);
    procedure Button2Click(Sender: TObject);
    procedure FormCreate(Sender: TObject);
    procedure Button3Click(Sender: TObject);
    procedure Button4Click(Sender: TObject);
  private
    { Private declarations }
    CurrentDir:string;
  public
    { Public declarations }
  end;


TMakebar = procedure(ucData:pchar;nDataLen:integer;nErrLevel:integer;nMask:integer;nBarEdition:integer;szBmpFileName:pchar;nScale:integer);stdcall;
TMixtext = procedure( szSrcBmpFileName:PChar;szDstBmpFileName:PChar;sztext:PChar;fontsize,txtheight,hmargin,vmargin,txtcntoneline:integer);stdcall;
//TSetColorDepth = procedure(  ndepth:integer);stdcall;
//TGetColorDepth = procedure();stdcall;
//(PCHAR ucData, long nDataLen, char* szBmpFileName,
// long nClumn, long , long );
var
  Form1: TForm1;

implementation


{$R *.dfm}

procedure TForm1.Button1Click(Sender: TObject);
var
  Moudle: THandle;
  Makebar:TMakebar;
  Mixtext:TMixtext;
  //SetColorDepth:TSetColorDepth;
  //GetColorDepth:TGetColorDepth;
  strsz,StrPt,FilePt:PChar;

  Txt,Txt1:String;
begin
  Moudle:=LoadLibrary('MakeQRBarcode.dll');
  @Makebar:=GetProcAddress(Moudle,'Make');
  @Mixtext:=GetProcAddress(Moudle,'MixText');
//@SetColorDepth:=getprocaddress(Moudle, 'SetColorDepth');
//@GetColorDepth:=getprocaddress(Moudle, 'GetColorDepth');
  Txt:=Memo1.Lines.Text;
  Txt1:=Edit5.Text;
  StrPt:=PChar(Txt);
  strsz:=PChar(Txt1);
  FilePt:=PChar(String('temp.bmp'));
//SetColorDepth(StrToInt(Edit10.Text));
  Makebar(StrPt,Length(Txt),StrToInt(Edit2.Text),StrToInt(Edit1.Text),
  StrToInt(Edit10.Text),FilePt,StrToInt(Edit3.Text));
 //GetColorDepth;
  Mixtext( FilePt,FilePt,strsz,StrToInt(Edit6.Text),StrToInt(Edit8.Text),StrToInt(Edit7.Text),StrToInt(Edit9.Text),StrToInt(Edit4.Text));
  Image1.Picture.LoadFromFile('temp.bmp');
end;

procedure TForm1.Button2Click(Sender: TObject);
var
  Moudle: THandle;
  Makebar:TMakebar;
  Mixtext:TMixtext;
 // SetColorDepth:TSetColorDepth;
 // GetColorDepth:TGetColorDepth;
  strsz,StrPt,FilePt:PChar;
  Txt,Txt1:string;

begin
   //CurrentDir := GetCurrentDir();
   OpenDialog1.InitialDir := CurrentDir;
   //CreateDir(CurrentDir+'\\bmp\\');
   if OpenDialog1.Execute then
      Memo1.Lines.LoadFromFile(OpenDialog1.FileName)
   else
      Memo1.Lines.Clear;
   Moudle:=LoadLibrary('MakeQRBarcode.dll');
   @Makebar:=GetProcAddress(Moudle,'Make');
   @Mixtext:=GetProcAddress(Moudle,'MixText');
  // @SetColorDepth:=getprocaddress(Moudle, 'SetColorDepth');
  // @GetColorDepth:=getprocaddress(Moudle, 'GetColorDepth');
   Txt:=Memo1.Lines.Text;
   Txt1:=Edit5.Text;
   StrPt:=PChar(Txt);
   strsz:=PChar(Txt1);
   FilePt:=PChar(String('temp.bmp'));
  // SetColorDepth(StrToInt(Edit10.Text));
   Makebar(StrPt,Length(Txt),StrToInt(Edit2.Text),StrToInt(Edit1.Text),
StrToInt(Edit10.Text),FilePt,StrToInt(Edit3.Text));
  // GetColorDepth;
   Mixtext( FilePt,FilePt,strsz,StrToInt(Edit6.Text),StrToInt(Edit8.Text),StrToInt(Edit7.Text),StrToInt(Edit9.Text),StrToInt(Edit4.Text));
   Image1.Picture.LoadFromFile('temp.bmp');

end;

procedure TForm1.FormCreate(Sender: TObject);
begin
   CurrentDir := GetCurrentDir();
end;

procedure TForm1.Button3Click(Sender: TObject);
var
   //CurrentDir:string;
   NewFile: TFileStream;
   OldFile: TFileStream;
   PImg:string;

begin
   //CurrentDir := GetCurrentDir();
   CreateDir(CurrentDir+'\\bmp\\');
   SaveDialog1.InitialDir := CurrentDir + '\\bmp\\';
   SaveDialog1.FileName := 'barcode.bmp';
   SaveDialog1.Filter := '位图文件 (*.bmp)|*.bmp|所有文件 (*.*)|*.*||';
   SaveDialog1.Title := '另存为';
   if (SaveDialog1.Execute()) then
   begin
      OldFile := TFileStream.Create(CurrentDir+'\\temp.bmp', fmOpenRead);
      try
         NewFile := TFileStream.Create(SaveDialog1.FileName, fmCreate);
         try
            NewFile.CopyFrom(OldFile, OldFile.Size);
         finally
            FreeAndNil(NewFile);
         end;
      finally
         FreeAndNil(OldFile);
      end;
   end;

end;

procedure TForm1.Button4Click(Sender: TObject);
var
   //CurrentDir:string;
   NewFile: TFileStream;
   OldFile: TFileStream;
   PImg:string;

begin

  PImg:='D:\RT2012.bmp';
      OldFile := TFileStream.Create(CurrentDir+'\\temp.bmp', fmOpenRead);
      try
         NewFile := TFileStream.Create(PImg, fmCreate);
         try
            NewFile.CopyFrom(OldFile, OldFile.Size);
             DeleteFile(PImg);
         finally
            FreeAndNil(NewFile);
         end;
      finally
         FreeAndNil(OldFile);
      end;
      RMVariables['PImg'] :=trim(PImg);
      RM1.LoadFromFile(ExtractFilePath(Application.ExeName) + 'Report\图片显示.rmf');
      RM1.ShowReport;


end;

end.
