组件发布属性为TQuery数组

时间:2010-10-13 09:51:37

标签: delphi delphi-7 custom-component

我正在开发一个自定义组件,我想添加一个已发布的属性,它将是一个TQuery数组(它应该在对象检查器中可见)。主要功能是将组件放在表单上,​​然后直观地选择同一表单或任何其他项目表单上的查询。

可行吗?从我所见到的,你只能以编程方式使用这样的数组属性......

更新

首先,谢谢你的回答Alex!

第二,聊天是我必须修改其他人创建的旧应用程序,所以我想尽可能少地纠缠它(实际上有一个第二个应用程序,我需要“修复”,我被告知是两次作为大)。现在有关详细信息:该应用程序有各种数据库操作的15个表单。你可以想象每个表单有2-3个TQuery对象。问题是用户必须使用db进行身份验证才能执行查询,因此他知道db user& pwd这是一个安全流程。

为了避免这种情况,引入了一个中间系统。一个连接&使用它进行身份验证并请求必要的db数据:user,pwd和database name。我的工作是使用这个系统并自动登录数据库。访问此中间系统所需的凭据不被视为安全流程,因此我将从一个依赖于部署环境的内容中读取它们:测试,预生产,生产。

所以我在我的表单上放置了一个TDatabase组件,将其LoginPrompt属性设置为FALSE。然而,棘手的部分是在执行之前将每个TQuery调整为每个环境的不同数据库名称。

不知道如果我清楚自己,但这是我设法提出的最简单的解释


感谢, ģ

3 个答案:

答案 0 :(得分:2)

为了让生活变得尽可能简单,你可能不得不咧嘴一笑:

  • 创建一个数据模块,并确保它在主表单之前实例化。
  • 将您的TDatabase组件放在该数据模块上。
  • 一次完成所有表格
    • 将数据库的数据模块添加到其uses子句中(可以在实现部分中)。
    • 更改所有TQuery和其他数据库相关组件一次,以使用数据模块中的数据库组件,而不是拥有自己的连接字符串。

在运行时,通过TDatabase组件进行登录,然后所有组件将自动使用这些设置(因为它们都连接到您的TDatabase实例)。

答案 1 :(得分:0)

是的,可以完成,但您必须使用自己的输入表单编写自己的Property editor来管理数组中的数据。有很多信息可以在网上找到。是的,您可以创建一个组件来检查其父级的控件,允许您访问它们 但它是否实用?为什么在设计时需要一组TQuery组件?也许你需要先重新考虑你的设计,所以你绝对确定你需要这个功能。 (此外,使用数据模块包含查询有什么问题?)

答案 2 :(得分:0)

好的,您已经为项目添加了一个TDatabase。现在,使用一些随机名称填充TDatabase的“DatabaseName”属性。项目中的每个TQuery组件也都有一个“DatabaseName”属性,并在这些属性中填入相同的名称!现在您的数据库及其所有查询将被连接,您可以使用TDatabase对象来访问它们。