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