簡體   English   中英

在 Delphi 中創建表生成器

[英]Create table generator in Delphi

我正在嘗試在 delphi 10 中創建一個表生成器,如圖中所示。 我找不到任何選項來編輯/添加“列名、列類型和列大小”按鈕。

樣機屏幕截圖

procedure TForm1.AddColumnClick(Sender: TObject); 
var 
  Col : TColumn; 
begin
  Col := DBGrid2.Columns.Add; 
  Col.Title.Caption := 'MyNewColumn'; 
end; 

如果這是添加列,如何獲取列類型及其大小的代碼?

您的編輯要求

如何獲取列類型及其大小的代碼?

完全改變了你的 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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM