home *** CD-ROM | disk | FTP | other *** search
/ Chip 2002 September / Chip_2002-09_cd1.bin / zkuste / delphi / kompon / d456 / EKRTF.ZIP / MainDemo / Unit1.pas < prev    next >
Pascal/Delphi Source File  |  2002-03-19  |  9KB  |  328 lines

  1. unit Unit1;
  2.  
  3. interface
  4.  
  5. uses
  6.   Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs,
  7.   StdCtrls, EkRtf, Db, Grids, DBGrids, ekfunc;
  8.  
  9. type
  10.   TMainForm = class(TForm)
  11.     CustInvRtf: TEkRtf;
  12.     InvRtf: TEkRtf;
  13.     CustBtn: TButton;
  14.     InvBtn: TButton;
  15.     Label1: TLabel;
  16.     Label3: TLabel;
  17.     Label4: TLabel;
  18.     Button2: TButton;
  19.     Button3: TButton;
  20.     Label5: TLabel;
  21.     VenBtn: TButton;
  22.     Button4: TButton;
  23.     VenRtf: TEkRtf;
  24.     Label6: TLabel;
  25.     InvScanBtn: TButton;
  26.     Button5: TButton;
  27.     InvScan: TEkRTF;
  28.     Label7: TLabel;
  29.     Label8: TLabel;
  30.     StRTF: TEkRTF;
  31.     StBtn: TButton;
  32.     Button6: TButton;
  33.     Button1: TButton;
  34.     InvFn: TEkUDFList;
  35.     Label2: TLabel;
  36.     procedure CustBtnClick(Sender: TObject);
  37.     procedure InvBtnClick(Sender: TObject);
  38.     procedure Button2Click(Sender: TObject);
  39.     procedure Button3Click(Sender: TObject);
  40.     procedure VenBtnClick(Sender: TObject);
  41.     procedure Button4Click(Sender: TObject);
  42.     procedure FormCreate(Sender: TObject);
  43.     procedure CustInvRtfScanBefore(ScanInfo: TEkScanInfo);
  44.     procedure CustInvRtfScanEof(ScanInfo: TEkScanInfo);
  45.     procedure CustInvRtfScanRecord(ScanInfo: TEkScanInfo);
  46.     procedure InvScanBtnClick(Sender: TObject);
  47.     procedure InvScanScanBefore(ScanInfo: TEkScanInfo);
  48.     procedure InvScanScanEof(ScanInfo: TEkScanInfo);
  49.     procedure InvScanScanRecord(ScanInfo: TEkScanInfo);
  50.     procedure Button5Click(Sender: TObject);
  51.     procedure Button6Click(Sender: TObject);
  52.     procedure StBtnClick(Sender: TObject);
  53.     procedure Button1Click(Sender: TObject);
  54.     procedure InvFnFunctions0Calculate(Sender: TObject; Args: TEkUDFArgs;
  55.       ArgCount: Integer; UDFResult: TObject);
  56.     procedure Label2Click(Sender: TObject);
  57.   private
  58.     { Private declarations }
  59.   public
  60.     { Public declarations }
  61.   end;
  62.  
  63. var
  64.   MainForm: TMainForm;
  65.  
  66. implementation
  67.  
  68. uses Unit2, UCustSel, UGauge, URedit, DlgInfU, ShellAPI;
  69.  
  70. {$R *.DFM}
  71.  
  72. function RunFile(const FileName, Params, DefaultDir: string;
  73.   ShowCmd: Integer): THandle;
  74. var
  75.   zFileName, zParams, zDir: array[0..250] of Char;
  76. begin
  77.  Result := ShellExecute(Application.MainForm.Handle, nil,
  78.    StrPCopy(zFileName, FileName), StrPCopy(zParams, Params),
  79.    StrPCopy(zDir, DefaultDir), ShowCmd);
  80. end;
  81.  
  82.  
  83.  
  84. function getnumber:string;
  85. begin
  86. result:=FormatDateTime('hhnnss',Now());
  87. end;
  88.  
  89. procedure TMainForm.CustBtnClick(Sender: TObject);
  90. begin
  91.   with DM do
  92.   begin
  93.     CustInvRtf.OutFile:=ExtractFilePath(Paramstr(0))+'\cu'+getnumber+'.rtf';
  94.     CustSel.DSCust.DataSet:=CustByLastInvQuery;
  95.     CustByLastInvQuery.Open;
  96.        if CustSel.showmodal=mrOk then
  97.        begin
  98.           application.processmessages;
  99.           if CustSel.CustGrid.SelectedRows.Count>0 then
  100.              //Execute report
  101.              CustInvRtf.ExecuteOpen([CustByLastInvQuery],SW_SHOW)
  102.                          else showmessage('Customers not selected.');
  103.        end;//if
  104.     CustByLastInvQuery.Close;
  105.   end;
  106. end;
  107.  
  108. procedure TMainForm.CustInvRtfScanBefore(ScanInfo: TEkScanInfo);
  109. begin
  110.    With ScanInfo do
  111.    begin
  112.       if Number=1 then  //if first scan in the report
  113.       begin
  114.          //Use Rows selected for the report in the grid
  115.          UseSelectedRows:=true;
  116.          SelectedRows:=CustSel.CustGrid.SelectedRows;
  117.          FGauge.Bar.Max:=SelectedRows.count;
  118.          FGauge.Bar.Position:=0;
  119.          FGauge.Bar.Step:=1;
  120.          FGauge.Show;
  121.       end;
  122.    end;//with
  123. end;
  124.  
  125. procedure TMainForm.CustInvRtfScanRecord(ScanInfo: TEkScanInfo);
  126. begin
  127.    With ScanInfo do
  128.    begin
  129.       if Number=1 then  //if first scan in the report
  130.       begin
  131.          FGauge.Bar.StepIt;
  132.          application.ProcessMessages;
  133.       end;
  134.    end;//with
  135. end;
  136.  
  137. procedure TMainForm.CustInvRtfScanEof(ScanInfo: TEkScanInfo);
  138. begin
  139.   //if first scan in the report
  140.    application.ProcessMessages;
  141.    With ScanInfo do if Number=1 then FGauge.Close;
  142. end;
  143.  
  144. procedure TMainForm.InvBtnClick(Sender: TObject);
  145. var custno:integer;
  146. begin
  147. if DlgInv.ShowModal=mrOk then
  148.      begin
  149.      DM.items.Filter:='OrderNo='+DM.Orders.FieldByName('OrderNo').AsString;
  150.      DM.items.filtered:=true;
  151.  
  152.      custno:=Dm.orders.fieldbyname('custno').AsInteger;
  153.      Dm.cust.Locate('CustNo',custno,[]);
  154.      InvRtf.OutFile:=ExtractFilePath(Paramstr(0))+'\in'+getnumber+'.rtf';
  155.  
  156.      //Add variable to varlist
  157.      InvRtf.ClearVars;
  158.      InvRtf.CreateVar('Freight',Dm.Orders.FieldByName('Freight').AsFloat);
  159.  
  160.      //Generate report
  161.      InvRtf.ExecuteOpen([DM.Cust,DM.Orders,DM.Items], SW_SHOW);
  162.      end;
  163. end;
  164.  
  165. procedure TMainForm.InvFnFunctions0Calculate(Sender: TObject;
  166.   Args: TEkUDFArgs; ArgCount: Integer; UDFResult: TObject);
  167. begin
  168.   //InvRTF - MyTotal code **************************
  169.  
  170.  With UDFResult As TEkReportVariable do begin
  171.   AsFloat:=TEkReportVariable(Args[0]).AsFloat+
  172.            TEkReportVariable(Args[1]).AsFloat;
  173.  end;//with
  174. end;
  175.  
  176.  
  177. procedure TMainForm.Button2Click(Sender: TObject);
  178. begin
  179. RunFile('CustList.doc','','',SW_SHOW);
  180. end;
  181.  
  182. procedure TMainForm.Button3Click(Sender: TObject);
  183. begin
  184. RunFile('InvRpt.doc','','',SW_SHOW);
  185. end;
  186.  
  187. procedure TMainForm.VenBtnClick(Sender: TObject);
  188. begin
  189.     VenRtf.FalseValue:=''; //Nothing if false;
  190.     VenRtf.TrueValue:=#252; //Symbol will be in column "preferred" if true
  191.     VenRtf.OutFile:=ExtractFilePath(Paramstr(0))+'\vn'+getnumber+'.rtf';
  192.     VenRTF.ExecuteOpen([DM.Vendor],SW_SHOW);
  193. end;
  194.  
  195. procedure TMainForm.Button4Click(Sender: TObject);
  196. begin
  197. RunFile('Vendor.doc','','',SW_SHOW);
  198. end;
  199.  
  200. procedure TMainForm.FormCreate(Sender: TObject);
  201. begin
  202.   if not FileExists(ExtractFilePath(Paramstr(0))+'\vendor.rtf') then
  203.          showmessage('Some of Input files not found!. Place your compiled exe file into project source directory.');
  204. end;
  205.  
  206.  
  207. procedure TMainForm.InvScanBtnClick(Sender: TObject);
  208. begin
  209.   with DM do
  210.   begin
  211.     InvScan.OutFile:=ExtractFilePath(Paramstr(0))+'\in'+getnumber+'.rtf';
  212.     CustSel.DSCust.DataSet:=CustByCompany;
  213.     CustByCompany.Open;
  214.        if CustSel.showmodal=mrOk then
  215.        begin
  216.           application.processmessages;
  217.           if CustSel.CustGrid.SelectedRows.Count>0 then
  218.              //Execute report
  219.              begin
  220.              InvScan.VarList.Clear;
  221.                try
  222.                InvScan.ExecuteOpen([DM.CustByCompany, DM.Orders, DM.items],SW_SHOW);
  223.                finally
  224.                FGauge.Close;
  225.                end;
  226.              end  else showmessage('Customers not selected.');
  227.        end;//if
  228.     CustByCompany.Close;
  229.   end;
  230. end;
  231.  
  232. procedure TMainForm.InvScanScanBefore(ScanInfo: TEkScanInfo);
  233. begin
  234.    With ScanInfo do
  235.    begin
  236.       case Number of
  237.       1: // scan(a)
  238.       begin
  239.          //Use Rows selected for the report in the grid
  240.          UseSelectedRows:=true;
  241.          SelectedRows:=CustSel.CustGrid.SelectedRows;
  242.          FGauge.Bar.Max:=SelectedRows.count;
  243.          FGauge.Bar.Position:=0;
  244.          FGauge.Bar.Step:=1;
  245.          FGauge.Show;
  246.       end;
  247.  
  248.       end; //case
  249.    end;//with
  250.  
  251. end;
  252.  
  253. procedure TMainForm.InvScanScanRecord(ScanInfo: TEkScanInfo);
  254. begin
  255.    With ScanInfo do
  256.    begin
  257.       case Number of
  258.       1:  // scan(a) - customers
  259.       begin
  260.          DM.Orders.Filter:='CustNo='+DM.CustByCompany.FieldbyName('CustNo').AsString;
  261.          DM.Orders.Filtered:=true;
  262.          FGauge.Bar.StepIt;
  263.          application.ProcessMessages;
  264.       end;
  265.       2: // scan(orders) record
  266.         begin
  267.           DM.items.Filter:='OrderNo='+DM.Orders.FieldByName('OrderNo').AsString;
  268.           DM.items.filtered:=true;
  269.         end;
  270.       end;//case
  271.    end;//with
  272.  
  273. end;
  274.  
  275. procedure TMainForm.InvScanScanEof(ScanInfo: TEkScanInfo);
  276. begin
  277.   //if first scan in the report
  278.    application.ProcessMessages;
  279.    With ScanInfo do
  280.     case Number of
  281.     1:  //scan(a) eof
  282.      begin
  283.       DM.orders.filtered:=false;
  284.       DM.orders.filter:='';
  285.       DM.items.Filtered:=false;
  286.       DM.items.filter:='';
  287.      end;
  288.  
  289.     end;//case
  290. end;
  291.  
  292.  
  293. procedure TMainForm.Button5Click(Sender: TObject);
  294. begin
  295. RunFile('Inv_scan.doc','','',SW_SHOW);
  296. end;
  297.  
  298. procedure TMainForm.Button6Click(Sender: TObject);
  299. begin
  300. RunFile('stream.doc','','',SW_SHOW);
  301. end;
  302.  
  303. procedure TMainForm.StBtnClick(Sender: TObject);
  304. var S:TMemoryStream;
  305. begin
  306.   S:=TMemoryStream.create;
  307.   StRTF.ExecuteStream([DM.Vendor],S);
  308.   FRedit.REdit.Lines.LoadFromStream(s);
  309.   S.Free;
  310.   FRedit.show;
  311. end;
  312.  
  313. procedure TMainForm.Button1Click(Sender: TObject);
  314. begin
  315. Close;
  316. end;
  317.  
  318. procedure TMainForm.Label2Click(Sender: TObject);
  319. begin
  320.  try
  321.  RunFile('http://ekrtf.code.net.ru/help/albumframe.html','','',SW_SHOW);
  322.  except
  323.    showmessage('Sorry, can''t open http://ekrtf.code.net.ru/help/albumframe.html in your browser.');
  324.  end;
  325. end;
  326.  
  327. end.
  328.