【问题标题】:current focussed field of a TClientDataSetTClientDataSet 的当前焦点字段
【发布时间】:2011-01-06 12:33:10
【问题描述】:

我有一种情况,我必须允许用户更新 任何一个 dbgrid(连接到 CDS)的 2 个字段,以保留最后输入的字段。所以(在用户输入数据后)我需要获取当前的焦点控件,这样我将删除之前的字段数据(如果有的话)。除了这两个,我还有其他领域。

坚持不使用任何与网格相关的事件,我必须只使用 CDS 事件来实现这一点。

提前致谢, 维杰。

【问题讨论】:

    标签: delphi tclientdataset


    【解决方案1】:

    使用该字段的 OnChange 事件,并清除其他字段值(如果有):

    类似这样的:

    TForm1.cdsField1Change(Sender: TField);
    begin
      if not Sender.IsNull then
        cdsField2.Clear;
    end;
    
    TForm1.cdsField2Change(Sender: TField);
    begin
      if not Sender.IsNull then
        cdsField1.Clear;
    end;
    

    【讨论】:

    • 原理正确,但该代码不会导致无限循环(field1改变field2改变field1 ad infinitum)吗?
    • 感谢@Stuart,我现在更改了代码以防止我的答案出现 StartOveflow。
    • 感谢@jachguate 和@Stuart,它按预期工作,我只添加了一个条件 Sender.Name 因为除了这两个字段之外还有更多字段。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-09-17
    • 2012-02-27
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多