home *** CD-ROM | disk | FTP | other *** search
/ Chip 2002 September / Chip_2002-09_cd1.bin / zkuste / delphi / kompon / d23456 / SDFDATA.ZIP / Unit1.pas < prev   
Pascal/Delphi Source File  |  2002-05-27  |  4KB  |  159 lines

  1. unit Unit1;
  2.  
  3. interface
  4.  
  5. uses
  6.   Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs,
  7.   Grids, DBGrids, StdCtrls, ExtCtrls, DBCtrls, Db, SdfData;
  8.  
  9. type
  10.   TForm1 = class(TForm)
  11.     DBNavigator1: TDBNavigator;
  12.     BtnActiveGrid: TButton;
  13.     GrdEdit: TDBGrid;
  14.     PnlOptions: TPanel;
  15.     MemoFile: TMemo;
  16.     MemoSchema: TMemo;
  17.     SdfDataSet: TSdfDataSet;
  18.     FixedDataSet: TFixedFormatDataSet;
  19.     DataSource: TDataSource;
  20.     PnlFile: TPanel;
  21.     BtnLoadFile: TButton;
  22.     PnlSchema: TPanel;
  23.     BtnLoadSchema: TButton;
  24.     RGrpFormat: TRadioGroup;
  25.     PnlCSVOptions: TPanel;
  26.     Label1: TLabel;
  27.     EdtDelimiter: TEdit;
  28.     ChkFirstLineSchema: TCheckBox;
  29.     OpenDialog: TOpenDialog;
  30.     LblNote: TLabel;
  31.     ChkFilter: TCheckBox;
  32.     CBxFieldList: TComboBox;
  33.     EdtValue: TEdit;
  34.     ChkCase: TCheckBox;
  35.     ChkPartial: TCheckBox;
  36.     BtnFind: TButton;
  37.     procedure BtnLoadFileClick(Sender: TObject);
  38.     procedure BtnActiveGridClick(Sender: TObject);
  39.     procedure RGrpFormatClick(Sender: TObject);
  40.     procedure FixedDataSetFilterRecord(DataSet: TDataSet;
  41.       var Accept: Boolean);
  42.     procedure ChkFilterClick(Sender: TObject);
  43.     procedure BtnFindClick(Sender: TObject);
  44.   private
  45.     { Private declarations }
  46.   public
  47.     { Public declarations }
  48.   end;
  49.  
  50. var
  51.   Form1: TForm1;
  52.  
  53. implementation
  54.  
  55. {$R *.DFM}
  56. const
  57.   TEMP_FILENAME = '.\TempFile.txt'; //Temporal file -- avoid changing real data on demo
  58.  
  59. procedure TForm1.BtnLoadFileClick(Sender: TObject);
  60. begin
  61.   with Sender as TButton do
  62.   begin
  63.     case Tag of
  64.       1: OpenDialog.Title := 'Open Text File';
  65.       2: OpenDialog.Title := 'Open Schema';
  66.     else
  67.       exit;
  68.     end;
  69.     if OpenDialog.Execute then
  70.       case Tag of
  71.         1: MemoFile.Lines.LoadFromFile(OpenDialog.FileName);
  72.         2: MemoSchema.Lines.LoadFromFile(OpenDialog.FileName);
  73.       end;
  74.   end;
  75. end;
  76.  
  77. procedure TForm1.BtnActiveGridClick(Sender: TObject);
  78. var
  79.   NewState : Boolean;
  80. begin
  81.   NewState := not (Assigned(DataSource.DataSet) and DataSource.DataSet.Active);
  82.   ChkFilter.Checked := FALSE;
  83.   if NewState then
  84.   begin
  85.     case (RGrpFormat.ItemIndex) of
  86.       0 : DataSource.DataSet := FixedDataSet;
  87.       1 : begin
  88.             DataSource.DataSet := SdfDataSet;
  89.             SdfDataSet.FirstLineAsSchema := ChkFirstLineSchema.Checked;
  90.             SdfDataSet.Delimiter := EdtDelimiter.Text[1];
  91.           end;
  92.     else
  93.       raise EInvalidOp.Create('You must select a Column Format');
  94.     end;
  95.     TFixedFormatDataSet(DataSource.DataSet).Schema.Text := MemoSchema.Lines.Text;
  96.     MemoFile.Lines.SaveToFile(TEMP_FILENAME);
  97.   end;
  98.   DataSource.DataSet.Active := NewState;
  99.   NewState := not DataSource.DataSet.Active;
  100.   // Enable options
  101.   PnlOptions.Enabled :=  NewState;
  102.   ChkFilter.Enabled := not NewState;
  103.   CBxFieldList.Enabled := not NewState;
  104.   EdtValue.Enabled := not NewState;
  105.   BtnFind.Enabled := not NewState;
  106.   ChkCase.Enabled := not NewState;
  107.   ChkPartial.Enabled := not NewState;
  108.  
  109.   if NewState then
  110.   begin // not active
  111.     BtnActiveGrid.Caption := '&Open';
  112.     MemoFile.Lines.LoadFromFile(TEMP_FILENAME);
  113.     CBxFieldList.Clear;
  114.     EdtValue.Clear;
  115.   end
  116.   else
  117.   begin // dataset is open
  118.     MemoSchema.Lines.Text := TFixedFormatDataSet(DataSource.DataSet).Schema.Text;
  119.     BtnActiveGrid.Caption := '&Close';
  120.     CBxFieldList.Items.CommaText := DataSource.DataSet.FieldDefList.CommaText;
  121.     CBxFieldList.ItemIndex := 0;
  122.   end;
  123. end;
  124.  
  125. procedure TForm1.RGrpFormatClick(Sender: TObject);
  126. begin
  127.   PnlCSVOptions.Visible := RGrpFormat.ItemIndex = 1;
  128. end;
  129.  
  130. procedure TForm1.FixedDataSetFilterRecord(DataSet: TDataSet;
  131.   var Accept: Boolean);
  132. begin
  133.   Accept := (DataSet.RecNo mod 2) = 0;
  134. end;
  135.  
  136. procedure TForm1.ChkFilterClick(Sender: TObject);
  137. begin
  138.   DataSource.DataSet.Filtered := ChkFilter.Checked;
  139.   DataSource.DataSet.Refresh;
  140. end;
  141.  
  142. procedure TForm1.BtnFindClick(Sender: TObject);
  143. var
  144.   LocateOpts : TLocateOptions;
  145. begin
  146.   LocateOpts := [];
  147.   if ChkCase.Checked then
  148.     LocateOpts := LocateOpts + [loCaseInsensitive];
  149.   if ChkPartial.Checked then
  150.     LocateOpts := LocateOpts + [loPartialKey];
  151.  
  152.   if DataSource.DataSet.Locate(CBxFieldList.Text, EdtValue.Text, LocateOpts) then
  153.     Refresh
  154.   else
  155.     MessageDlg('Not Found!', mtWarning, [mbOk], 0);
  156. end;
  157.  
  158. end.
  159.