我在使用ADO访问的主/详细应用程序中遇到了一个非常奇怪的DBComboBox问题。如果您有一个包含项列表的DBComboBox(.Style = csDropDown),并且输入了列表中不存在的某些文本,则导航回该记录时,表的DBComboBox字段中的值将不会出现。我已使用下面的DBNavigator.OnClick代码尝试解决此问题,但仅当表中的第一条记录包含不在列表中的值时,它才有效。当您将第一条记录中的DBComboBox的值更改为列表中的值时,DBComboBox文本中将不会出现任何不一致的项目。有没有人找到解决方案?
procedure TForm1.DBNavigator1Click(Sender: TObject; Button: TNavigateBtn);
var
SavePlace : TBookmark;
begin
if (DBComboBox1.Text='') then begin
SavePlace := TADODataSet(DBNavigator1.DataSource.DataSet).GetBookmark;
TADODataSet(DBNavigator1.DataSource.DataSet).Requery;
TADODataSet(DBNavigator1.DataSource.DataSet).GotoBookMark(SavePlace);
TADODataSet(DBNavigator1.DataSource.DataSet).FreeBookMark(SavePlace);
end;
end;
很遗憾,我没有安装XE,但是我制作了一个示例项目,重现您在D7和Seattle中的问题。该代码如下所示,我认为您会发现,如果按照以下确切步骤操作,则表明存在某些问题挺奇怪的。