2009年5月29日

Delphi 使用 DisableControls 加快對 DataSet 的操作

在 Form 上放一個 TTable、TDataSource、TDBGrid、TButton 和 TComboBox
在 Form Create 事件中加入

procedure TForm1.FormCreate(Sender: TObject);
begin
DataSource1.DataSet := Table1;
DBGrid1.DataSource := DataSource1;
Table1.DatabaseName := 'BCDEMOS';
Table1.TableName := 'BDESDD.DB';
Table1.Active := True;
end;

在 Button1 Click 事件中加入

procedure TForm1.Button1Click(Sender: TObject);
var
n: string;
begin
ComboBox1.Items.Clear;
with Table1 do
begin
DisableControls; // 讓 DataSource 等元件停止運作,可加快 Next 的運作
try
First;
while not Eof do
begin
n := FieldByName('NAME').AsString;
// 將所有不重複 NAME 的資料 加入 ComboBox1 中
// 判斷長度大於 0 而且尚未加入 ComboBox1 中
if (Length(n) > 0) and (ComboBox1.Items.IndexOf(n) = -1) then
begin
ComboBox1.Items.Add(n);
end;
// ...
Next;
end;
finally
EnableControls; // 讓 DataSource 等元件運作
end;
end;

end;

沒有留言:

網誌存檔