home *** CD-ROM | disk | FTP | other *** search
- unit Unit1;
-
- interface
-
- uses
- Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs,
- Grids, DBGrids, StdCtrls, ExtCtrls, DBCtrls, Db, SdfData;
-
- type
- TForm1 = class(TForm)
- DBNavigator1: TDBNavigator;
- BtnActiveGrid: TButton;
- GrdEdit: TDBGrid;
- PnlOptions: TPanel;
- MemoFile: TMemo;
- MemoSchema: TMemo;
- SdfDataSet: TSdfDataSet;
- FixedDataSet: TFixedFormatDataSet;
- DataSource: TDataSource;
- PnlFile: TPanel;
- BtnLoadFile: TButton;
- PnlSchema: TPanel;
- BtnLoadSchema: TButton;
- RGrpFormat: TRadioGroup;
- PnlCSVOptions: TPanel;
- Label1: TLabel;
- EdtDelimiter: TEdit;
- ChkFirstLineSchema: TCheckBox;
- OpenDialog: TOpenDialog;
- LblNote: TLabel;
- ChkFilter: TCheckBox;
- CBxFieldList: TComboBox;
- EdtValue: TEdit;
- ChkCase: TCheckBox;
- ChkPartial: TCheckBox;
- BtnFind: TButton;
- procedure BtnLoadFileClick(Sender: TObject);
- procedure BtnActiveGridClick(Sender: TObject);
- procedure RGrpFormatClick(Sender: TObject);
- procedure FixedDataSetFilterRecord(DataSet: TDataSet;
- var Accept: Boolean);
- procedure ChkFilterClick(Sender: TObject);
- procedure BtnFindClick(Sender: TObject);
- private
- { Private declarations }
- public
- { Public declarations }
- end;
-
- var
- Form1: TForm1;
-
- implementation
-
- {$R *.DFM}
- const
- TEMP_FILENAME = '.\TempFile.txt'; //Temporal file -- avoid changing real data on demo
-
- procedure TForm1.BtnLoadFileClick(Sender: TObject);
- begin
- with Sender as TButton do
- begin
- case Tag of
- 1: OpenDialog.Title := 'Open Text File';
- 2: OpenDialog.Title := 'Open Schema';
- else
- exit;
- end;
- if OpenDialog.Execute then
- case Tag of
- 1: MemoFile.Lines.LoadFromFile(OpenDialog.FileName);
- 2: MemoSchema.Lines.LoadFromFile(OpenDialog.FileName);
- end;
- end;
- end;
-
- procedure TForm1.BtnActiveGridClick(Sender: TObject);
- var
- NewState : Boolean;
- begin
- NewState := not (Assigned(DataSource.DataSet) and DataSource.DataSet.Active);
- ChkFilter.Checked := FALSE;
- if NewState then
- begin
- case (RGrpFormat.ItemIndex) of
- 0 : DataSource.DataSet := FixedDataSet;
- 1 : begin
- DataSource.DataSet := SdfDataSet;
- SdfDataSet.FirstLineAsSchema := ChkFirstLineSchema.Checked;
- SdfDataSet.Delimiter := EdtDelimiter.Text[1];
- end;
- else
- raise EInvalidOp.Create('You must select a Column Format');
- end;
- TFixedFormatDataSet(DataSource.DataSet).Schema.Text := MemoSchema.Lines.Text;
- MemoFile.Lines.SaveToFile(TEMP_FILENAME);
- end;
- DataSource.DataSet.Active := NewState;
- NewState := not DataSource.DataSet.Active;
- // Enable options
- PnlOptions.Enabled := NewState;
- ChkFilter.Enabled := not NewState;
- CBxFieldList.Enabled := not NewState;
- EdtValue.Enabled := not NewState;
- BtnFind.Enabled := not NewState;
- ChkCase.Enabled := not NewState;
- ChkPartial.Enabled := not NewState;
-
- if NewState then
- begin // not active
- BtnActiveGrid.Caption := '&Open';
- MemoFile.Lines.LoadFromFile(TEMP_FILENAME);
- CBxFieldList.Clear;
- EdtValue.Clear;
- end
- else
- begin // dataset is open
- MemoSchema.Lines.Text := TFixedFormatDataSet(DataSource.DataSet).Schema.Text;
- BtnActiveGrid.Caption := '&Close';
- CBxFieldList.Items.CommaText := DataSource.DataSet.FieldDefList.CommaText;
- CBxFieldList.ItemIndex := 0;
- end;
- end;
-
- procedure TForm1.RGrpFormatClick(Sender: TObject);
- begin
- PnlCSVOptions.Visible := RGrpFormat.ItemIndex = 1;
- end;
-
- procedure TForm1.FixedDataSetFilterRecord(DataSet: TDataSet;
- var Accept: Boolean);
- begin
- Accept := (DataSet.RecNo mod 2) = 0;
- end;
-
- procedure TForm1.ChkFilterClick(Sender: TObject);
- begin
- DataSource.DataSet.Filtered := ChkFilter.Checked;
- DataSource.DataSet.Refresh;
- end;
-
- procedure TForm1.BtnFindClick(Sender: TObject);
- var
- LocateOpts : TLocateOptions;
- begin
- LocateOpts := [];
- if ChkCase.Checked then
- LocateOpts := LocateOpts + [loCaseInsensitive];
- if ChkPartial.Checked then
- LocateOpts := LocateOpts + [loPartialKey];
-
- if DataSource.DataSet.Locate(CBxFieldList.Text, EdtValue.Text, LocateOpts) then
- Refresh
- else
- MessageDlg('Not Found!', mtWarning, [mbOk], 0);
- end;
-
- end.
-