代码之家  ›  专栏  ›  技术社区  ›  Morfic

组件发布属性作为TQuery数组

  •  0
  • Morfic  · 技术社区  · 14 年前

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

    这是可行的吗?从我看到的到现在,您只能通过编程使用这样的数组属性…

    更新

    首先,谢谢你的回答,亚历克斯!

    其次,聊天是我必须修改别人创建的旧应用程序,所以我想尽可能少地与之纠缠(事实上,还有第二个应用程序我需要“修复”,我被告知它是原来的两倍大)。现在详细介绍一下:这个应用程序有15个表单用于各种数据库操作。可以想象,每个表单都有2-3个TQuery对象。问题在于,用户必须通过数据库的身份验证才能执行查询,因此他知道数据库用户&pwd是一个安全流。

    为了避免这种情况,引入了中间系统。一个连接和验证它,并请求必要的数据库数据:用户、pwd和数据库名称。我的工作是使用这个系统和数据库的自动登录。访问此中间系统所需的凭据不被视为安全流,因此我将从一个inifile中读取它们,该inifile取决于部署它的环境:测试、预生产、生产。

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

    不知道,如果我说清楚了,但这是我想出来的最简单的解释


    谢谢, G

    3 回复  |  直到 14 年前
        1
  •  0
  •   Wim ten Brink    14 年前

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

        2
  •  2
  •   Marjan Venema    14 年前

    为了使生活尽可能简单,你可能不得不咧嘴一笑,忍受一次:

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

    在运行时,如您通过TDatabase组件et voila所描述的那样登录,所有组件现在都将自动使用这些设置(因为它们都连接到TDatabase实例)。

        3
  •  0
  •   Wim ten Brink    14 年前

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