[英]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.