• dbGrid、cxGrid下拉列表做单、多列更新的三种实现方式


    作者学习Delphi的开发环境:
    Win10
    MSSQL2014
    Delphi XE 10.1 Update 2

    一、ADOQuery查找字段,实现多字段更新。(只用ADOQuery查找字段的话下拉列表只有一列)
    1、双击ADOQuery1

     2、右键-New field

     3、网上的教材多只介绍到单字段的更新,没有介绍到多字段的更新,多字段的更新要点在于用lookup keys中的字段更新key fields中的字段时,多个字段用“ ; ”号隔开。

     二、cxGrid中对查找字段配置LookupComboBox属性,实现多字段更新。(下拉列表可以有多列)

     

     

     

     然后在OnEditValueChanged事件中执行代码。(备注:OnCloseUp事件是指下拉列表收起的事件)

    procedure TForm1.cxGrid1DBTableView1RecordNamePropertiesEditValueChanged( Sender: TObject);
    begin
    //更新时一定要有顺序才行,第一个字段要是DataBinding中的FieldName字段,要不然会变回原来的值。ADOQuery3为下拉列表数据集。

    ADOQuery1.FieldByName(‘RecordName’).Value:=ADOQuery3.FieldByName(‘材质’).Value ;

    ADOQuery1.FieldByName(‘ModelName’).Value:=ADOQuery3.FieldByName(‘编号’).Value ;

    end;


    三、ADOQuery查找字段 + cxGrid中对查找字段配置LookupComboBox属性。

    在方法一的基础上,对方法一新增的查找字段TEST配置LookupComboBox属性。

     

     Properties中不需要设置ListSource,只需要设置ListFiledNames即可,KeyFieldNames中会自动带出查找字段TEST的LookupKeyFields字段。这就是为什么Properties中KeyFieldNames会带‘s’的原因了。

    本教程缘起:

    初学习Delphi,想要实现在从表中用下拉方式做单,选择数据后可以将下拉列表数据集中的多个字段信息带到从表中(注:下拉列表数据集中的字段,有的并没有显示在下拉列表中)。

    刚开始遇到的难点:
    直接通过cxGrid的LookupComboBox属性中的ONEditValueChanged事件,用LookupComboBox中的ListSource对应的数据集对从表的数据集进行修改,但ONEditValueChanged事件中只要修改从表数据集,LookupComboBox字段值就会变回原来的值。

    如果不配置LookupComboBox中的KeyFieldNames属性,可以用LookupComboBox中的ListSource对应的数据集对从表的数据集进行修改,但是LookupComboBox字段没有值,也不行。
    (注:后面试探出来了,更新时一定要有顺序才行)

    网上搜索了大量信息没有找到要点。这个问题困扰了好些日子,通过摸索发现了下拉列表多字段更新的三种方式,故分享出来,希望对大家有所利益。尤其是新学Delphi的朋友,因为高手肯定知道,只不过高手展现给新手的宝贵资料不多。可能是懒得整理。

    好的代码像粥一样,都是用时间熬出来的
  • 相关阅读:
    PostgreSQL的德哥教程
    pgbench的使用简介
    pg生成日期序列
    在Intellij IDEA 12中Tomcat无法调试
    如何使用命令行来控制IIS服务的启动和停止
    SharePoint Support Engineer 常用技术点
    测试博文写作
    C#数字进制间与字符串类型相互转换
    [转载]INNO Setup 使用笔记
    unity3d 游戏开发引擎
  • 原文地址:https://www.cnblogs.com/jijm123/p/14333731.html
Copyright © 2020-2023  润新知