如何将键盘虚拟按钮发送到TDBLookupComboBox或类似的?

时间:2012-08-17 04:20:05

标签: delphi csv firebird foreign-key-relationship delphi-2006

我必须将许多Excell个文件(转换为CSV)转换为我的应用程序的数据库布局。

在我的表中有一些字段使用外键用于其他表列表,当我的转换代码找到这样的字段时,它没有外来ID,但在Excell上键入了简单文本。

我发现目前,最好的方法是插入一个新行,将焦点放在TDBLookupComboBox字段,然后通过SO发送消息来模拟我正在键入文本。然后,ComboBox autocomplete功能将在外部列表中选择正确的项目。

如果这是最好的方式,我该怎么做?使用Delphi 2006和Firebird发送这些键盘消息?

1 个答案:

答案 0 :(得分:1)

而不是“模仿”用户,您应该通过代码执行组件所做的事情。它使用TDataSet.Locate方法查找部分字符串,并将DataSet游标设置为找到的记录。然后它使用查找源来获取值。

var
  SearchString: string;
begin
  SearchString := 'Dat';
  if LookupDataSet.Locate('MySearchField', SearchString, [loCaseInsensitive, loPartialKey]) then
  begin
    DestDataSet.Edit;
    DestDataSet.FieldByName('FLD_ID').AsInteger := LookupDataSet.FieldByName('FLD_ID').AsInteger;
    // DestDataSet.Post;
  end
  else
    raise Exception.CreateFmt('Lookup value not found for "%s"', [SearchString]);
end;