[英]Create table generator in Delphi
您的編輯要求
如何獲取列類型及其大小的代碼?
完全改變了你的 q 是關於什么的。 它仍然太寬泛,似乎您打算重新發明輪子,因為 Delphi 的 TDBGrid 具有必要的設施來執行您似乎想要內置的操作。 以下是我對進一步學習的建議:
了解如何在將為網格提供數據的數據集上創建持久性TField。 請參閱http://docwiki.embarcadero.com/RADStudio/Rio/en/Persistent_Field_Components這樣做的目的是,一旦數據集具有持久性 TFields,支持創建 TDBGrid 列的設計時工具就可用了。
一旦您的數據集具有持久性 TFields,在 IDE 中清除 TDBGrid 已有的所有列,然后
雙擊 DBgrid。 您將獲得一個帶有像Editing DBGrid1.Columns
這樣的標題的彈出式列編輯器。 在列編輯器中右鍵單擊並從上下文菜單中選擇Add All Fields
。 這將使用 Delphi 用於網格列的默認數據類型和大小創建列,這似乎是您自己嘗試做的。
要回答您的特定問題,您可以使用獲取數據集字段的大小和數據類型
AField := DBGrid1.Columns[i].Field;
Size := AField.Size;
DataType := AField.DataType;
如何根據關聯 TField 的大小設置合適的列寬作為練習留給讀者。
您需要研究 TDBGrid 的源代碼,以了解網格列如何根據數據集的特定 TField 類型調整其行為。
為此,請在您的表單中添加一個按鈕和以下代碼
type
TMyDBGrid = class(TDBGrid);
procedure TForm1.btnCreateColumnsClick(Sender: TObject);
begin
DBGrid1.Columns.Clear;
TMyDBGrid(DBGrid1).CreateColumns;
end;
TMyGrid 類型聲明是為了訪問網格的受保護的CreateColumns
方法。 然后,您可以在 TMyDBGrid(DBGrid1).CreateColumns 調用上放置一個調試器斷點並跟蹤它以查看它的作用。
祝你好運!
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.