?? unit1.pas
字號:
// //Now, creating the field defs. // Similar required.
// kbmMemTable1.FieldDefs.Clear; //We dont need this line, but it does not hurt either.
// kbmMemTable1.FieldDefs.Add('Period', ftInteger, 0, False);
// kbmMemTable1.FieldDefs.Add('Value', ftInteger, 0, False);
// kbmMemTable1.FieldDefs.Add('Color', ftInteger, 0, False);
// kbmMemTable1.FieldDefs.Add('Calc', FtString, 20, False);
// kbmMemTable1.FieldDefs.Add('Date', ftDate, 0, False);
//
// // Define index fields. // Optional.
// kbmMemTable1.IndexDefs.Add('Index1','Value',[]);
//
// // Finally create the table according to definitions. // Required.
// kbmMemTable1.CreateTable;
//
// //Since this is a run-time created one, we have to assign the following here.
// DataSource1.DataSet := kbmMemTable1;
//
// // Optionel. IndexFields and SortFields must be assigned AFTER CreateTable
// kbmMemTable1.IndexFields := 'Value';
// kbmMemTable1.SortFields := 'Value';
//
procedure TForm1.Button1Click(Sender: TObject);
var
i,j:integer;
begin
j:=strtoint(eRecordCount.text);
with kbmMemTable1 do
begin
Close;
DisableControls;
try
Open;
for i:=1 to j do
begin
//OutputDebugString(Pchar('i='+inttostr(i)));
Append;
FieldByName('PERIOD').asinteger:=i;
FieldByName('VALUE').asinteger:=(j-i) * 2;
if chbRandomColor.Checked then
FieldByName('COLOR').asinteger:=Random(j)
else
FieldByName('COLOR').asinteger:=i*4;
FieldByName('Date').AsDateTime:=Now+i-1;
FieldByName('String').AsString:='String:'+inttostr(i);
FieldByName('WideString').Value:='WideString:'+inttostr(i);
if chbGenerateMemos.Checked then
FieldByName('Memo').AsString:='This is a memo'+#10+DateTimeToStr(Now)+' '+inttostr(i);
Post;
end;
// Check if not updated indexes, rebuild and reenable updates of the indexes.
if EnableIndexes=false then
begin
// Rebuild indexes.
UpdateIndexes;
EnableIndexes:=true;
chbEnableIndexes.Checked:=true;
end;
finally
EnableControls;
end;
end;
end;
procedure TForm1.Button2Click(Sender: TObject);
var
fmt:TkbmCustomStreamFormat;
begin
if BinarySave.Checked then
begin
if chbSaveIndexDef.Checked then sfBinary.sfIndexDef:=[sfSaveIndexDef];
if chbSaveDeltas.Checked then
begin
sfBinary.sfDeltas:=[sfSaveDeltas];
sfBinary.sfDontFilterDeltas:=[sfSaveDontFilterDeltas];
end;
fmt:=sfBinary;
end
else
begin
if chbSaveIndexDef.Checked then sfCSV.sfIndexDef:=[sfSaveIndexDef];
if chbSaveDeltas.Checked then
begin
sfCSV.sfDeltas:=[sfSaveDeltas];
sfCSV.sfDontFilterDeltas:=[sfSaveDontFilterDeltas];
end;
if chbNoQuotes.Checked then
begin
sfCSV.CSVQuote:=#0;
sfCSV.CSVRecordDelimiter:=#0;
end
else
begin
sfCSV.CSVQuote:='"';
sfCSV.CSVRecordDelimiter:=',';
end;
fmt:=sfCSV;
end;
if BinarySave.Checked then
kbmMemTable1.SaveToFileViaFormat('c:\test.bin',fmt)
else
kbmMemTable1.SaveToFileViaFormat('c:\test.csv',fmt);
end;
procedure TForm1.Button3Click(Sender: TObject);
begin
if chbNoQuotes.Checked then
begin
sfCSV.CSVQuote:=#0;
sfCSV.CSVRecordDelimiter:=#0;
end
else
begin
sfCSV.CSVQuote:='"';
sfCSV.CSVRecordDelimiter:=',';
end;
if BinarySave.Checked then
kbmMemTable1.LoadFromFileViaFormat('c:\test.bin',sfBinary)
else
kbmMemTable1.LoadFromFileViaFormat('c:\test.csv',sfCSV);
end;
procedure TForm1.MemTable1CalcFields(DataSet: TDataSet);
var
i:integer;
s:string;
begin
if kbmMemTable1.Fields[0].IsNull then
kbmMemTable1.FieldByName('CALC').AsString:='NULL'
else
begin
i:=kbmMemTable1.Fields[0].AsInteger;
s:=LongMonthNames[(i mod 12) + 1];
kbmMemTable1.Fieldbyname('CALC').AsString := kbmMemTable1.Fields[0].AsString + '-' + s;
end;
end;
procedure TForm1.Button4Click(Sender: TObject);
begin
Memo1.Lines.Text:=kbmMemTable1.CommaText;
end;
procedure TForm1.Button5Click(Sender: TObject);
begin
kbmMemTable1.CommaText:=Memo1.Lines.Text;
end;
// Dynamically define a set of fields.
{$DEFINE CALC}
procedure TForm1.Button6Click(Sender: TObject);
begin
with kbmMemTable1 do
begin
Close;
MasterSource:=nil;
// Define data fields.
with kbmMemTable1.FieldDefs do
begin
Clear;
Add('Period', ftInteger, 0, false);
Add('VALUE', ftInteger, 0, false);
Add('String', ftString, 30, false);
Add('BytesField', ftBytes, 20, false);
Add('Color', ftInteger, 0, false);
Add('Date', ftDate, 0, false);
Add('Bool', ftBoolean, 0, false);
Add('Memo', ftMemo, 0, false);
Add('AutoInc', ftAutoInc,0,false);
Add('Currency',ftCurrency,0,false);
Add('BCD',ftBCD,4,false);
Add('WideString',ftWideString,40,false);
end;
// Define index fields.
with kbmMemTable1.IndexDefs do
begin
Clear;
Add('Period','PERIOD',[]);
Add('Index1','VALUE',[ixdescending]);
Add('StringIndex','String',[]);
Add('combined','PERIOD;VALUE',[]);
Add('descending','PERIOD',[ixDescending]);
// Add('Index2','Color;Period',[]);
end;
// Create the table according to definitions.
CreateTable;
TCurrencyField(FieldByName('Currency')).DisplayFormat:='$###0.00';
// Setup eventhandlers for dynamically created bytefield.
with FieldByName('BytesField') do
begin
OnSetText:=kbmMemTable1BytesFieldSetText;
OnGetText:=kbmMemTable1BytesFieldGetText;
end;
// Define sorting and index.
IndexFieldNames := 'VALUE';
end;
{$IFDEF CALC}
// Define calculated field.
CalcField:=TStringField.Create(self);
CalcField.FieldKind:=fkCalculated;
CalcField.Size:=20;
CalcField.FieldName:='CALC';
CalcField.DataSet:=kbmMemTable1;
{$ENDIF}
// Setup other dataaware controls.
DBEdit1.DataSource:=DataSource1;
DBEdit1.DataField:='BytesField';
DBMemo1.DataSource:=DataSource1;
DBMemo1.DataField:='Memo';
end;
procedure TForm1.Button7Click(Sender: TObject);
begin
kbmMemTable1.Open;
end;
procedure TForm1.Button8Click(Sender: TObject);
begin
kbmMemTable1.Close;
end;
procedure TForm1.Button9Click(Sender: TObject);
begin
with ClientDataset1 do
begin
LoadFromFile('biolife.cds');
end;
with kbmMemTable1 do
begin
IndexFieldNames:='';
SortFields:='';
MasterSource:=nil;
DBImage1.DataField:='';
DBMemo1.DataField:='';
DBEdit1.DataSource:=nil;
{ DBImage1.DataField:='graphic';
DBImage1.DataSource:=DataSource1;
DBMemo1.DataField:='Notes';
DBMemo1.DataSource:=DataSource1;
}
// LoadFromDataSet(Table1, [mtcpoStructure,mtcpoProperties]);
LoadFromDataSet(ClientDataset1, [mtcpoStructure,mtcpoProperties]);
DBImage1.DataSource:=DataSource1;
DBImage1.DataField:='graphic';
DBMemo1.DataSource:=DataSource1;
DBMemo1.DataField:='Notes';
end;
end;
procedure TForm1.Button11Click(Sender: TObject);
var
Options:TkbmMemTableCompareOptions;
begin
Options := [];
if chbDescending.Checked then Options:=Options + [mtcoDescending];
if chbCaseInsensitive.Checked then Options:=Options + [mtcoCaseInsensitive];
kbmMemTable1.SortOn(cbSortField.Text, Options);
end;
procedure TForm1.kbmMemTable1FilterRecord(DataSet: TDataSet; var Accept: Boolean);
begin
// Example of runtime fast filtering. Only select records where period>10.
// Accept:=DataSet.FieldByName('Period').AsInteger > 10;
end;
procedure TForm1.TableFilteredCheckBoxClick(Sender: TObject);
begin
DataSource1.DataSet.Filtered:=TCheckBox(Sender).Checked;
end;
procedure TForm1.btnLocatePeriodClick(Sender: TObject);
begin
if DataSource1.DataSet.Locate('PERIOD', eSearch.Text, []) then
ShowMessage('Found')
else
ShowMessage('Not found');
end;
procedure TForm1.btnLocateCalcClick(Sender: TObject);
var
Options:TLocateOptions;
begin
Options:=[];
if chbCaseInsensitive.Checked then Include(Options,loCaseInsensitive);
if chbPartialKey.Checked then Include(Options,loPartialKey);
DataSource1.DataSet.Locate('CALC', eSearch.Text, Options);
end;
procedure TForm1.btnLocateValueClick(Sender: TObject);
begin
DataSource1.DataSet.Locate('VALUE', eSearch.Text, []);
end;
procedure TForm1.btnLookupCalcClick(Sender: TObject);
begin
eResult.Text:=VarToStr(DataSource1.DataSet.Lookup('PERIOD', eSearch.Text, 'CALC'));
end;
procedure TForm1.Button12Click(Sender: TObject);
begin
// Prepare a memorytable for detail.
with kbmMemTable1 do
begin
// Remove non used fields currently wired to the memorytable which will not be used for the master/detail demo.
DBMemo1.DataSource:=nil;
DBEdit1.DataSource:=nil;
DBImage1.DataSource:=nil;
LoadFromDataset(tDetailTemplate, [mtcpoStructure,mtcpoProperties]);
// Dynamically build index.
// AddIndex('iCustNo','CustNo',[]);
// UpdateIndexes;
// Setup index.
tMaster.Active:=true;
DetailFields:='CustNo';
MasterSource:=dsMaster;
MasterFields:='CustNo';
end;
kbmMemTable1.Active:=true;
end;
procedure TForm1.kbmMemTable1CompressBlobStream(Dataset:TkbmCustomMemTable; UnCompressedStream,
?? 快捷鍵說明
復制代碼
Ctrl + C
搜索代碼
Ctrl + F
全屏模式
F11
切換主題
Ctrl + Shift + D
顯示快捷鍵
?
增大字號
Ctrl + =
減小字號
Ctrl + -