home *** CD-ROM | disk | FTP | other *** search
/ Chip 2001 October / Chip_2001-10_cd1.bin / zkuste / delphi / kolekce / d6 / FRCLX.ZIP / SOURCE / DBX / FR_DBXQueryParam.pas < prev    next >
Pascal/Delphi Source File  |  2001-07-08  |  4KB  |  184 lines

  1.  
  2. {******************************************}
  3. {                                          }
  4. {   FastReport CLX v2.4 - DBX components   }
  5. {           Query params editor            }
  6. {                                          }
  7. { Copyright (c) 1998-2001 by Tzyganenko A. }
  8. {                                          }
  9. {******************************************}
  10.  
  11. unit FR_DBXQueryParam;
  12.  
  13. interface
  14.  
  15. {$I FR.inc}
  16.  
  17. uses
  18.   Types, SysUtils, Classes, QGraphics, QControls, QForms, QDialogs,
  19.   QStdCtrls, FR_Ctrls, QExtCtrls, DB, DBXpress, SqlExpr, FR_DBXQuery;
  20.  
  21. type
  22.   TfrDBXParamsForm = class(TForm)
  23.     GroupBox1: TGroupBox;
  24.     Label2: TLabel;
  25.     ParamsLB: TListBox;
  26.     TypeCB: TComboBox;
  27.     ValueRB: TRadioButton;
  28.     AssignRB: TRadioButton;
  29.     Label1: TLabel;
  30.     ValueE: TfrComboEdit;
  31.     Button1: TButton;
  32.     Button2: TButton;
  33.     procedure FormShow(Sender: TObject);
  34.     procedure FormHide(Sender: TObject);
  35.     procedure ParamsLBClick(Sender: TObject);
  36.     procedure ValueEExit(Sender: TObject);
  37.     procedure TypeCBChange(Sender: TObject);
  38.     procedure ValueRBClick(Sender: TObject);
  39.     procedure AssignRBClick(Sender: TObject);
  40.     procedure FormCreate(Sender: TObject);
  41.     procedure VarSBClick(Sender: TObject);
  42.   private
  43.     { Private declarations }
  44.     FBusy: Boolean;
  45.     function CurParam: Integer;
  46.     procedure Localize;
  47.   public
  48.     { Public declarations }
  49.     Query: TSQLQuery;
  50.     QueryComp: TfrDBXQuery;
  51.   end;
  52.  
  53.  
  54. implementation
  55.  
  56. uses FR_Const, FR_Class, FR_DBUtils, FR_Utils;
  57.  
  58. {$R *.xfm}
  59.  
  60.  
  61. function TfrDBXParamsForm.CurParam: Integer;
  62. var
  63.   i: Integer;
  64.   s: String;
  65. begin
  66.   Result := 0;
  67.   s := ParamsLB.Items[ParamsLB.ItemIndex];
  68.   for i := 0 to Query.Params.Count - 1 do
  69.     if Query.Params[i].Name = s then
  70.     begin
  71.       Result := i;
  72.       break;
  73.     end;
  74. end;
  75.  
  76. procedure TfrDBXParamsForm.FormShow(Sender: TObject);
  77. var
  78.   i: Integer;
  79. begin
  80.   with Query.Params do
  81.   for i := 0 to Count - 1 do
  82.     if ParamsLB.Items.IndexOf(Items[i].Name) = -1 then
  83.       ParamsLB.Items.Add(Items[i].Name);
  84.   with TypeCB.Items do
  85.   begin
  86.     Clear;
  87.     Add(SParamType1);
  88.     Add(SParamType2);
  89.     Add(SParamType3);
  90.     Add(SParamType4);
  91.     Add(SParamType5);
  92.     Add(SParamType6);
  93.     Add(SParamType7);
  94.     Add(SParamType8);
  95.     Add(SParamType9);
  96.     Add(SParamType10);
  97.     Add(SParamType11);
  98.   end;
  99.   ParamsLB.ItemIndex := 0;
  100.   ParamsLBClick(nil);
  101. end;
  102.  
  103. procedure TfrDBXParamsForm.FormHide(Sender: TObject);
  104. begin
  105.   if ValueE.Enabled then ValueEExit(nil);
  106. end;
  107.  
  108. procedure TfrDBXParamsForm.ParamsLBClick(Sender: TObject);
  109. var
  110.   i: Integer;
  111. begin
  112.   TypeCB.ItemIndex := -1;
  113.   for i := 0 to 10 do
  114.     if Query.Params[CurParam].DataType = ParamTypes[i] then
  115.     begin
  116.       TypeCB.ItemIndex := i;
  117.       break;
  118.     end;
  119.   FBusy := True;
  120.   ValueE.Text := '';
  121.   ValueE.Enabled := False;
  122.   if QueryComp.ParamKind[CurParam] = pkValue then
  123.   begin
  124.     ValueE.Text := QueryComp.ParamText[CurParam];
  125.     ValueE.Enabled := True;
  126.     ValueRB.Checked := True;
  127.   end
  128.   else
  129.     AssignRB.Checked := True;
  130.   FBusy := False;
  131. end;
  132.  
  133. procedure TfrDBXParamsForm.ValueEExit(Sender: TObject);
  134. begin
  135.   QueryComp.ParamText[CurParam] := ValueE.Text;
  136. end;
  137.  
  138. procedure TfrDBXParamsForm.TypeCBChange(Sender: TObject);
  139. begin
  140.   Query.Params[CurParam].DataType := ParamTypes[TypeCB.ItemIndex];
  141.   if ValueE.Enabled then
  142.     ValueEExit(nil);
  143. end;
  144.  
  145. procedure TfrDBXParamsForm.ValueRBClick(Sender: TObject);
  146. begin
  147.   if FBusy then Exit;
  148.   ValueE.Enabled := True;
  149.   QueryComp.ParamKind[CurParam] := pkValue;
  150. end;
  151.  
  152. procedure TfrDBXParamsForm.AssignRBClick(Sender: TObject);
  153. begin
  154.   if FBusy then Exit;
  155.   ValueE.Text := '';
  156.   ValueE.Enabled := False;
  157.   QueryComp.ParamKind[CurParam] := pkAssignFromMaster;
  158. end;
  159.  
  160. procedure TfrDBXParamsForm.Localize;
  161. begin
  162.   GroupBox1.Caption := S56110;
  163.   Label2.Caption := S56111;
  164.   Label1.Caption := S56112;
  165.   ValueRB.Caption := S56113;
  166.   AssignRB.Caption := S56115;
  167.   ValueE.ButtonHint := S53575;
  168.   Button1.Caption := (SOk);
  169.   Button2.Caption := (SCancel);
  170. end;
  171.  
  172. procedure TfrDBXParamsForm.FormCreate(Sender: TObject);
  173. begin
  174.   Localize;
  175. end;
  176.  
  177. procedure TfrDBXParamsForm.VarSBClick(Sender: TObject);
  178. begin
  179.   ValueE.Text := frDesigner.InsertExpression;
  180. end;
  181.  
  182. end.
  183.  
  184.