home *** CD-ROM | disk | FTP | other *** search
/ Chip 2001 October / Chip_2001-10_cd1.bin / zkuste / delphi / kolekce / d456 / DCSLIB25.ZIP / DCADOCtrl.pas < prev    next >
Encoding:
Pascal/Delphi Source File  |  2001-06-25  |  3.4 KB  |  143 lines

  1. {
  2.  BUSINESS CONSULTING
  3.  s a i n t - p e t e r s b u r g
  4.  
  5.          Components Library for Borland Delphi 4.x, 5.x
  6.          Copyright (c) 1998-2000 Alex'EM
  7.  
  8. }
  9. unit DCADOCtrl;
  10.  
  11. interface
  12. {$I DCConst.inc}
  13.  
  14. {$IFDEF DELPHI_V5UP}
  15.  
  16. uses SysUtils, db, ADOdb, DCConst, DCChoice;
  17.  
  18. type
  19.   TDCADOGridEdit = class(TDCCustomGridEdit)
  20.   private
  21.     procedure SetParameters(const Value: TParameters);
  22.     function GetParameters: TParameters;
  23.     function GetConnection: TADOConnection;
  24.     procedure SetConnection(const Value: TADOConnection);
  25.   protected
  26.     procedure SetInternalDataSet(const Value: TDataSet; var DataSet: TDataSet); override;
  27.     procedure SetInternalSQLText(const Value: string; var SQLText: string); override;
  28.     function CreateQuery: TDataSet; override;
  29.     procedure DoInitQuery(Mode: integer); override;
  30.     function GetQueryText: string; override;
  31.     procedure PrepareDataSet; override;
  32.   public
  33.     property ButtonEnabled;
  34.   published
  35.     property DrawStyle;
  36.     property CheckGlyph;
  37.     property CheckTag;
  38.     property ReadOnly;
  39.     property Parameters: TParameters read GetParameters write SetParameters;
  40.     property Connection: TADOConnection read  GetConnection write SetConnection;
  41.     property EditMask;
  42.   end;
  43.  
  44. {$ENDIF}
  45.  
  46. implementation
  47. {$IFDEF DELPHI_V5UP}
  48.  
  49. { TDCADOGridEdit }
  50. function TDCADOGridEdit.CreateQuery: TDataSet;
  51. begin
  52.   Result := TADOQuery.Create(Self);
  53. end;
  54.  
  55. procedure TDCADOGridEdit.DoInitQuery(Mode: integer);
  56. begin
  57.   with TADOQuery(Query) do
  58.   begin
  59.     SQL.Text := GetPreparedQueryText(Mode, SQL.Text);
  60.     Open;
  61.   end;
  62. end;
  63.  
  64. function TDCADOGridEdit.GetConnection: TADOConnection;
  65. begin
  66.   Result := TADOQuery(Query).Connection;
  67. end;
  68.  
  69. function TDCADOGridEdit.GetParameters: TParameters;
  70. begin
  71.   Result := TADOQuery(Query).Parameters;
  72. end;
  73.  
  74. function TDCADOGridEdit.GetQueryText: string;
  75.  var
  76.   i: integer;
  77. begin
  78.   Result := '';
  79.   for i := 0 to TADOQuery(Query).SQL.Count -1 do
  80.   begin
  81.     if Result <> '' then Result := Result+ #10;
  82.     Result := Result + TADOQuery(Query).SQL.Strings[i];
  83.   end;
  84. end;
  85.  
  86. procedure TDCADOGridEdit.PrepareDataSet;
  87.  var
  88.   AParams: TParameters;
  89. begin
  90.   AParams := TParameters.Create(Self, TParameter);
  91.   try
  92.     AParams.Assign(Parameters);
  93.     with TADOQuery(Query) do
  94.     begin
  95.       Close;
  96.       SQL.Clear;
  97.       SQL.Text := SQLText;
  98.       Parameters.Assign(AParams);
  99.     end;
  100.   finally
  101.     AParams.Free;
  102.   end;
  103. end;
  104.  
  105. procedure TDCADOGridEdit.SetConnection(const Value: TADOConnection);
  106. begin
  107.   TADOQuery(Query).Connection := Value;
  108. end;
  109.  
  110. procedure TDCADOGridEdit.SetInternalDataSet(const Value: TDataSet; var DataSet: TDataSet);
  111. begin
  112.   DataSet := Value;
  113.   if Query.Active then Query.Close;
  114.   if (DataSet is TADOQuery) and not ListBoxEnabled then
  115.     SetSQLTextPermanet(TADOQuery(DataSet).SQL.Text)
  116.   else
  117.     if not QueryDataSet then SetSQLTextPermanet('');
  118.  
  119.   if not QueryDataSet then
  120.   begin
  121.     if (DataSet <> nil) and DataSet.Active then
  122.       SetGridValues
  123.     else
  124.       Values.Clear;
  125.   end
  126. end;
  127.  
  128. procedure TDCADOGridEdit.SetInternalSQLText(const Value: string;
  129.   var SQLText: string);
  130. begin
  131.   if TADOQuery(Query).Active then TADOQuery(Query).Close;
  132.   if Value <> '' then TADOQuery(Query).SQL.Text := SQLText;
  133. end;
  134.  
  135. procedure TDCADOGridEdit.SetParameters(const Value: TParameters);
  136. begin
  137.   TADOQuery(Query).Parameters.AssignValues(Value);
  138. end;
  139.  
  140. {$ENDIF}
  141.  
  142. end.
  143.