delphi - 在 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,这些 TField 将为网格提供数据。请参阅http://docwiki.embarcadero.com/RADStudio/Rio/en/Persistent_Field_Components 这样做的要点是,一旦数据集具有持久 TField,支持创建 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 调用上放置一个调试器断点并跟踪它以查看它的作用。
祝你好运!
推荐阅读
- node.js - 在 Sequelize 中创建具有多个关联的实例
- c# - 如何在 linq 的连接条件中使用两个 substring() 方法
- python - 无法读取 Django 模板中的字典值
- c - 如果我使用指针表示法声明了二维数组,为什么不能访问它的元素?
- android - 如何在android studio中将对话框的高度和宽度设置为全屏?
- tensorflow - 如何从左到右对边界框进行排序?
- react-native - 反应原生轮播项目活动索引
- html - 如何使图像和文本居中?
- firebase - 在颤动中更改个人资料图片和用户名
- pega - 如何在 pega 中为计划报告任务设置分钟