我正在 Delphi 中为文档跟踪应用程序创建用户表单。我感兴趣的功能输入新条目(记录)和查看列表...(日期,文件名称,ID,......)。
我的问题是我不知道如何为多个用户实现这些功能。目前,我有5个用户。每个用户都有一个唯一的输入数据(记录)字段(列),每个用户的视图字段(列)也是唯一的。可能会有更多用户。
那么,如何为这种形式实现这些功能呢?如何为每个单独的用户分配不同的数据(字段)以进行输入和查看?这是我不明白的。这是应用程序的分布式功能吗?如果是的话,如何实现呢?
请注意,我不希望在应用程序代码中静态分配用户,例如:
if(username='user1') then {
input();
view();
}
else if (username='user2') then {...}
...
因为,每次有新用户时,开发人员必须返回应用程序的代码并对其进行硬编码。这不是有效的,是一个糟糕的实现。相反,我希望它是动态的(如果这是正确的术语)。怎么做到这一点?
注意:我正在使用 dbExpress 工具, MySQL DBMS 与 RAD Studio XE7 Architect 。
答案 0 :(得分:4)
如果我正确理解你的要求,似乎你不熟悉以所谓的Master-Detail关系运作的表/数据集的想法。这些在Delphi中很容易设置。
一旦你熟悉M-> D关系,我想你会意识到你应该问的是如何在你的应用中设置一个,而不是个别用户的硬编码问题进入你的形式。
在您的情况下,您目前缺少的是用户详细信息表。我们称之为Users表。通常这会包含它们的名称,显然,以及某种唯一标识符(最好是用户数据库表中的“主键”),但 NOT ,请访问数据库的密码,尤其是不是纯文本。
创建“用户”表后,您可以为其创建显示网格(TDBGrid)和输入/编辑表单。
然后,如果您还没有,可以为用户的文档设置网格和编辑表单(我将其称为Documents表)。
完成后,剩下的工作就是在Delphi项目中设置Users表(主表)和Documents表(详细信息)之间的Master-Detail关系。
如果您愿意,可以使用包含两个网格的单个表单,用户网格和文档网格,当您滚动浏览用户网格时,您将看到文档网格仅显示其文档记录。 / p>
根据您正在使用的表/数据集的类型,有关如何设置主 - 详细信息的详细信息会有所不同,因此您需要在线搜索有关如何执行此操作的详细信息。从广义上讲,这是将TDataSource连接到Users表并将Documents表的DataSource(或MasterSource)属性设置为指向Users TDataSource,然后设置其他几个与表类型相关的文档属性的问题。表
自D7之前的每个版本的Delphi都附带了一个演示应用程序“MastApp”,它说明了如何在多个表中使用Master-Detail关系。我建议你看看你的Delphi版本的MastApp,然后研究如何为你实际使用的Delphi数据集类型设置M-> D关系。