home
***
CD-ROM
|
disk
|
FTP
|
other
***
search
/
Chip 2002 November
/
Chip_2002-11_cd1.bin
/
zkuste
/
delphi
/
kompon
/
d123456
/
JBDBF.ZIP
/
TESTDBF1.PAS
< prev
Wrap
Pascal/Delphi Source File
|
2001-12-05
|
4KB
|
156 lines
unit Testdbf1;
interface
uses
SysUtils, WinTypes, WinProcs, Messages, Classes, Graphics, Controls,
Forms, Dialogs, StdCtrls, jbDbf, Gauges, ExtCtrls, jbEdit, FileCtrl;
type
TForm1 = class(TForm)
Button1: TButton;
DBF1: TjbDBF;
Button2: TButton;
Button3: TButton;
Edit1: TPubEdit;
Panel1: TPanel;
Panel2: TPanel;
Panel3: TPanel;
Gauge1: TGauge;
Label1: TLabel;
ListBox1: TListBox;
RadioButton1: TRadioButton;
RadioButton2: TRadioButton;
Edit2: TEdit;
Label2: TLabel;
Bevel1: TBevel;
procedure Button1Click(Sender: TObject);
procedure Button2Click(Sender: TObject);
procedure Button3Click(Sender: TObject);
procedure DBF1Found(Sender: TObject);
procedure FormCreate(Sender: TObject);
procedure DBF1Progress(Sender: TObject; const Operace: ShortString;
Progress: Integer);
procedure DBF1Query(Sender: TObject; const IdxName, IdxField,
Key: ShortString; var Accept, Cancel: Boolean);
private
{ Private declarations }
N:Integer;
public
{ Public declarations }
end;
var
Form1: TForm1;
implementation
{$R *.DFM}
procedure TForm1.Button1Click(Sender: TObject);
begin
Close
end;
Const
jmspoub='test_y.dbf';
procedure TForm1.Button2Click(Sender: TObject);
Var
I:Integer;
begin
{zrus predchozi}
SysUtils.DeleteFile(Edit2.Text+'test_y.dbf');
SysUtils.DeleteFile(Edit2.Text+'cislo.idx');
SysUtils.DeleteFile(Edit2.Text+'test.idx');
{vyrob novou tabulku s indexy}
With DBF1 Do Begin
MakeField(1,'cislo','n',10,0,'cislo.idx',dbfUnique,dbfDescending);
MakeField(2,'test','c',50,0,'test.idx',dbfDuplicates,dbfAscending);
CreateDB(Edit2.Text+jmspoub,10+50,2);
FileName := Edit2.Text+jmspoub;
{make some fields}
If Open Then Begin
For I := 1 To 100 Do Begin
Store('cislo',IntToStr(I));
Store('test','Ahojky '+IntToStr(I));
NewRecord;
End;
{preindexuj}
Reindex;
{RemoveIndexes(1);}
Gauge1.Progress:=0;
Panel2.Caption:='';
Close;
Button3.Enabled:=True;
End;
End;
end;
procedure TForm1.Button3Click(Sender: TObject);
begin
N:=0;
{find proc}
With DBF1 Do Begin
FileName:=Edit2.Text+jmspoub;
If Open Then Begin
Find('cislo.idx','cislo'); {hledej pres Found+Query}
Gauge1.Progress:=0;
Panel2.Caption:='';
Close
End;
End;
end;
procedure TForm1.DBF1Found(Sender: TObject);
begin
//find
{standardni hlasky}
If Radiobutton1.Checked Then Begin
Label1.Caption:='Found ('+DBF1.Load('cislo')+'):';
Edit1.Text:=DBF1.Load('test');
End
Else Begin
Inc(N);
Label1.Caption:='Found '+IntToStr(N)+' fields:';
ListBox1.Items.Add(DBF1.Load('cislo')+' -- '+DBF1.Load('test'));
end;
end;
procedure TForm1.FormCreate(Sender: TObject);
begin
Edit2.Text := 'c:\_testdbf\';{toto je cesta k souboru}
//make directory when doesn't exists
ForceDirectories(Edit2.Text);
Edit1.Text := '';
Label1.Caption:='';
N:=0;
ListBox1.Clear;
end;
procedure TForm1.DBF1Progress(Sender: TObject; const Operace: ShortString;
Progress: Integer);
begin
Gauge1.Progress:=Progress;
Panel2.Caption:=Operace;
Application.ProcessMessages
end;
procedure TForm1.DBF1Query(Sender: TObject; const IdxName, IdxField,
Key: ShortString; var Accept, Cancel: Boolean);
begin
{zde realizace dotazu a accept/cancel}
If Key<>'' Then
If Radiobutton1.Checked Then Begin
If StrToInt(Key)=42 Then Begin
Accept:=True; {tento si vezmi}
Cancel:=True; {ale dalsi jiz odmitni}
End;
End
Else Begin
If (StrToInt(Key)>44) And (StrToInt(Key)<56) Then Accept:=True;
End;
end;
end.