在delphi 10.3中,我有一个数据库显示在dbGrid上。我需要将所选记录中的某些字段显示到其他表单上。我不确定是否需要将所选记录保存到变量并将其声明为全局变量,然后以下一种形式调用该全局变量?有办法吗?
答案 0 :(得分:3)
对q的简短回答是,可以做到,实际上很简单。
Delphi中的数据库访问基于数据集(TDataSet)的抽象模型, 如果不为空,则具有一个逻辑光标,该光标精确地将一条记录指定为选定的记录 (或“当前”)一种,并且有多种移动方法(“第一”,“最后”,“下一个”,“优先级”等) 光标周围以访问其他记录。您可以访问当前字段中的值 通过诸如
的呼叫进行记录SomeString := Table1.FieldByName('FirstName').AsString;
但是,Delphi附带了一套完整的“可识别数据库的”控件(请参见“组件面板Data Access
选项卡”),该控件用于显示并允许在屏幕上编辑记录数据而无需编写任何代码,最少用于简单的编辑操作。
有关此操作的详细信息超出了此类SO答案的范围,但您不会遇到任何麻烦 找到关于该主题的教程,您确实需要这样做。
一个TBGrid显示从数据集中获取数据的几个相邻(按访问顺序)记录 通过TDataSource组件,该组件将TDBGrid与您正在使用的特定数据集隔离 (有许多TDataSet后代类型的库可用于不同的数据库类型, DBMS。一个方便的事情(尤其是从您的角度来看)是TDBGrid的编码可以确保 网格中的所选行(或者严格来说是其中之一,因为网格支持多选 记录)是数据集光标所在的记录。
因此,实现所需目标的最简单方法是:
将TDataSource添加到第二个表单,并将其DataSet属性连接到正在馈送的数据集 您的TDBGrid。
向您的表单添加数据库感知控件,例如TDBEdit和TDBText, 将它们在“对象检查器”中连接到您添加的TDataSource并将其FieldName属性设置为名称 要显示的字段中。
这就是它的全部,实际上-您在使用全局变量时不会一团糟 似乎正在设想。