Time of Update: 2018-12-07
問題來源: http://www.cnblogs.com/del/archive/2007/12/18/1005161.html#1786227{ 函數 }function ToAlignString(const str: string; len: Integer): string;var i,n: Integer; s: string;begin if Abs(len) 0 then s := StringOfChar(' ', n); if Len > 0 then
Time of Update: 2018-12-07
索引的目的有三: 快速定位、排序、建立主從表. 下面是相關屬性與方法:IndexDefs; { }IndexFieldCount; { }IndexFieldNames; { }IndexFields[]; { }IndexName; { }AddIndex(); { }DeleteIndex(); { }GetIndexInfo(); { }GetIndexNames(); { }添加索引的方法有二:1、用
Time of Update: 2018-12-07
uses XMLDoc;procedure TForm1.FormCreate(Sender: TObject);begin with ClientDataSet1 do begin FieldDefs.Add('Text', ftString, 12); FieldDefs.Add('Num', ftInteger); CreateDataSet; AppendRecord(['ABC', 123]); end; Memo1.Text :=
Time of Update: 2018-12-07
TClientDataSet 中計算欄位有兩種: Calculated(計算欄位)、InternalCalc(內部計算欄位).兩者區別是: Calculated 在每次需要時都要重新計算; InternalCalc 只需要計算一次.Calculated 需要計算的時間, InternalCalc 需要存取的時間; 當然後者快.計算欄位不會被儲存到檔案.下面的例子先定義了兩個整數欄位: sum1、sum2; 又定義了兩個計算欄位: SUM(求和)、MUL(求積), 分別指定了
Time of Update: 2018-12-07
//先在表單上放置 ClientDataSet1、Button1 然後:{ 建表 }procedure TForm1.FormCreate(Sender: TObject);begin with ClientDataSet1 do begin { 定義表 } FieldDefs.Add('班級', ftWideString, 4); FieldDefs.Add('姓名', ftWideString, 8); FieldDefs.Add('年齡', ftByte);
Time of Update: 2018-12-07
動態建立(其中的 School 欄位是 Lookup 欄位)://先在表單上放置: DBGrid1、DataSource1、ClientDataSet1、ClientDataSet2; 其他全用代碼實現:procedure TForm1.FormCreate(Sender: TObject);begin { 關聯控制項 } DBGrid1.DataSource := DataSource1; DataSource1.DataSet := ClientDataSet1; { 把
Time of Update: 2018-12-07
Blob(Binary Large Object) 欄位包括:ftBlob, ftMemo, ftGraphic, ftFmtMemo, ftParadoxOle, ftDBaseOle, ftTypedBinary, ftCursor, ftFixedChar, ftWideString,ftLargeint, ftADT, ftArray, ftReference, ftDataSet, ftOraBlob, ftOraClob, ftVariant, ftInterface,
Time of Update: 2018-12-07
設計時實現的分組統計:運行時實現的分組統計://前期只需要添加 ClientDataSet1、DataSource1、DBGrid1; 事件只需要關聯表單的 OnCreateunit Unit1;interfaceuses Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms, Dialogs, Grids, DBGrids, DB, DBClient;type TForm1 =
Time of Update: 2018-12-07
方法有:1、Locate: 根據欄位列表和對應的欄位值尋找並定位, 找到返回 True.2、Lookup: 根據欄位列表和對應的欄位值尋找, 返回需要的欄位值.3、SetKey、GotoKey 或 SetKey、GotoNearest: 根據索引欄位的值尋找, 先切換狀態再根據條件定位.4、FindKey 或 FindNearest: 根據索引欄位的值尋找.其中的 GotoNearest、FindNearest 在找不到的情況下會定位到近似值.測試代碼://準備: 表單上放一個
Time of Update: 2018-12-07
unit Unit1;interfaceuses Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms, Dialogs, StdCtrls;type TForm1 = class(TForm) Button1: TButton; procedure FormCreate(Sender: TObject); procedure Button1Click(Sender:
Time of Update: 2018-12-07
本例用到:TClientDataSet.Fields[]; { 欄位集合; 它比 FieldList 有更多功能, 如可擷取嵌套欄位 }TClientDataSet.FieldList[]; { 欄位列表; 它比 Fields 輕便, 如果只是取值用它快一些 }TClientDataSet.FieldByName(); { 根據欄位名稱擷取欄位對象; 擷取一個欄位對象時它比上兩個快 }TClientDataSet.FindField();
Time of Update: 2018-12-07
方法有:1、Filter、Filtered2、OnFilterRecord3、SetRange、ApplyRange 或 SetRangeStart、SetRangeEnd、ApplyRange(Range 相關還有: CancelRange、EditRangeStart、EditRangeEnd、KeyExclusive、Ranged)下面三個例子測試前都要: 先在表單上放置 ClientDataSet1、DataSource1、DBGrid1 並關聯.Filter 測試:{ 準備測試資料 }
Time of Update: 2018-12-07
運行時://先在表單上放置: DBGrid1、DataSource1、ClientDataSet1 並關聯, 然後:procedure TForm1.FormCreate(Sender: TObject);begin //ClientDataSet1.ObjectView := True; { 這是預設的 } { 先定義兩個基本欄位 } with ClientDataSet1.FieldDefs.AddFieldDef do begin Name := 'ID';
Time of Update: 2018-12-07
當我第一次從 TClientDataSet 中讀出圖片資料時, 發現不是圖片!慢慢觀察發現是前面多了 8 個位元組(前 4 個位元組是 01 00 00 01, 估計是格式標識和頭大小; 後 4 個位元組是後面圖片檔案的大小), 去掉這個 8 個位元組就是圖片檔案了.下面的例子先是檢索了 20 個樣本檔案的所有圖片欄位, 並把其中的圖片提取到指定檔案夾;還把一個指定欄位中的圖片顯示在了表單上.//先在表單上放 ClientDataSet1 和兩個 Buttonuses IOUtils,
Time of Update: 2018-12-07
//先在表單添加 ClientDataSet1 和兩個 Button{ 初始化測試資料 }procedure TForm1.FormCreate(Sender: TObject);begin with ClientDataSet1 do begin FieldDefs.Add('ID', ftInteger); FieldDefs.Add('Name', ftString, 6); FieldDefs.Add('Age', ftWord); CreateDataSet;
Time of Update: 2018-12-07
突然發現 Message 單元的最後給提供了幾個方便的訊息發送函數:SendTextMessage、SendStructMessage、SendGetStructMessage、SendGetIntMessage雖然函數實現的很簡單, 但用他們發送文本、結構和整數, 的確方便了不少; 下面僅就 SendTextMessage 舉例://例子是通過發送訊息的方法給 Edit 賦值:unit Unit1;interfaceuses Windows, Messages, SysUtils,
Time of Update: 2018-12-07
TFieldTFieldDefTFieldsTFieldDefsTFieldList、TFieldDefListAssignAssignValueClearFocusControlGetDataGetParentComponentHasParentIsBlobIsValidCharRefreshLookupListSetDataSetFieldTypeSetParentComponentValidateAsBCDAsBooleanAsCurrencyAsDateTimeAsSQLTimeStam
Time of Update: 2018-12-07
數組欄位(ftArray) 與 ADT 欄位類似(設計過程一樣), 定義數組欄位時只需定義一個元素來說明元素類型.本例同時測試 ObjectView 為 True 和 False 時的不同效果.下面是在運行時實現的數組欄位://先在表單上放置: DBGrid1、DataSource1、ClientDataSet1 並關聯, 然後:procedure TForm1.FormCreate(Sender: TObject);begin// ClientDataSet1.ObjectView :=
Time of Update: 2018-12-07
相關成員不少, 不親自測試很難徹底瞭解其細節; 下面是我的測試:測試代碼:unit Unit1;interfaceuses Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms, Dialogs, StdCtrls, DB, DBClient, Grids, DBGrids;type TForm1 = class(TForm) ClientDataSet1: TClientDataSet;
Time of Update: 2018-12-07
TClientDataSet.UpdateStatus: TUpdateStatus;TUpdateStatus = (usUnmodified, usModified, usInserted, usDeleted);測試圖:相關代碼:uses TypInfo;procedure TForm1.ClientDataSet1CalcFields(DataSet: TDataSet);begin