在dbgrid中创建下拉列表

想成为有史以来最好的数据编辑网格吗?下面是构建用户界面以编辑DBGrid中的查找字段的说明。具体来说,我们将研究如何将DBLookupComboBox放置到DBGrid的单元格中。...

想成为有史以来最好的数据编辑网格吗?下面是构建用户界面以编辑DBGrid中的查找字段的说明。具体来说,我们将研究如何将DBLookupComboBox放置到DBGrid的单元格中。

Grid, full frame illustration.

这将调用来自数据源的信息,这些信息将用于填充下拉框。

要在DBGrid的单元格中显示DBLookupComboBox,首先需要在运行时使其可用。。。

使用dblookupcombobox创建查找

选择组件选项板上的“数据控件”页面,然后选择DBLookupComboBox。在表单的任意位置放置一个,并保留默认名称“DBLookupComboBox1”。将其放置在何处并不重要,因为大多数情况下,它将不可见或在网格上浮动。

再添加一个DataSource和DataSet组件,用值“填充”组合框。将TDataSource(名称为DataSource2)和TAdoQuery(名称为AdoQuery1)放在表单的任意位置。

要使DBLookupComboBox正常工作,必须设置多个属性;它们是查找连接的关键:

  • 数据源和数据字段确定主连接。数据字段是一个字段,我们将查找到的值插入其中。
  • ListSource是查找数据集的源。
  • KeyField标识ListSource中必须与DataField字段值匹配的字段。
  • ListFields是组合中实际显示的查找数据集的字段。ListField可以显示多个字段,但多个字段应以分号分隔。您必须设置足够大的值,使(组合框的)DropDownWidth能够真正看到多列数据。以下是如何从代码(在表单的OnCreate事件处理程序中)设置所有重要属性:
procedure TForm1.FormCreate(Sender: TObject);beginwith DBLookupComboBox1 dobegin DataSource := DataSource1; // -> AdoTable1 -> DBGrid1 ListSource := DataSource2; DataField := 'AuthorEmail'; // from AdoTable1 - displayed in the DBGrid KeyField := 'Email'; ListFields := 'Name; Email'; Visible := False; end; DataSource2.DataSet := AdoQuery1; AdoQuery1.Connection := AdoConnection1; AdoQuery1.SQL.Text := 'SELECT Name, Email FROM Authors'; AdoQuery1.Open;end;

注意:当您想在DBLookupComboBox中显示多个字段时,如上例所示,必须确保所有列都可见。这是通过设置DropDownWidth属性来完成的。

然而,您会看到,最初,您必须将其设置为一个非常大的值,这会导致删除的列表太宽(在大多数情况下)。一种解决方法是设置下拉列表中显示的特定字段的显示宽度。

此代码位于表单的OnCreate事件中,可确保在下拉列表中同时显示作者姓名及其电子邮件:

AdoQuery1.FieldByName('Email').DisplayWidth:=10;AdoQuery1.FieldByName('Name').DisplayWidth:=10;AdoQuery1.DropDownWidth:=150;

剩下我们要做的就是让一个组合框悬停在单元格上(在编辑模式下),显示AuthorEmail字段。首先,我们需要确保DBLookupComboBox1在显示AuthorEmail字段的单元格上移动并调整大小。

procedure TForm1.DBGrid1DrawColumnCell (Sender: TObject; const Rect: TRect; DataCol: Integer; Column: TColumn; State: TGridDrawState);beginif (gdFocused in State) thenbeginif (Column.Field.FieldName = DBLookupComboBox1.DataField) thenwith DBLookupComboBox1 do begin Left := Rect.Left + DBGrid1.Left + 2; Top := Rect.Top + DBGrid1.Top + 2; Width := Rect.Right - Rect.Left; Width := Rect.Right - Rect.Left; Height := Rect.Bottom - Rect.Top; Visible := True; end; endend;

接下来,当我们离开单元格时,我们必须隐藏组合框:

procedure TForm1.DBGrid1ColExit(Sender: TObject);beginif DBGrid1.SelectedField.FieldName = DBLookupComboBox1.DataField then DBLookupComboBox1.Visible := Falseend;

请注意,在编辑模式下,所有击键都将进入DBGrid的单元格,但我们必须确保它们被发送到DBLookupComboBox。对于DBLookupComboBox,我们主要感兴趣的是[Tab]键;它应该将输入焦点移动到下一个单元格。

procedure TForm1.DBGrid1KeyPress(Sender: TObject; var Key: Char);beginif (key = Chr(9)) then Exit; if (DBGrid1.SelectedField.FieldName = DBLookupComboBox1.DataField) thenbegin DBLookupComboBox1.SetFocus; SendMessage(DBLookupComboBox1.Handle, WM_Char, word(Key), 0); endend;

当您从DBLookupComboBox中选择一个项目(“行”)时,该值或相应的KeyField字段将存储为DataField字段的值。

  • 发表于 2021-09-10 22:15
  • 阅读 ( 148 )
  • 分类:编程

你可能感兴趣的文章

3种excel列表,方便数据输入

... 我们关于在Excel中创建自定义列表的文章介绍了如何使用这些方法创建自定义列表。 ...

  • 发布于 2021-03-12 01:29
  • 阅读 ( 376 )

如何在microsoft excel中创建自定义列表

通过在Microsoft Excel中创建自定义列表,减少繁琐的数据输入和错误风险。通过提前设置列表,可以使用自动填充或添加项目的下拉选择,从而节省时间。 microsoftexcel自带了一些自定义列表。包括一周中的几天和一年中的几个月...

  • 发布于 2021-03-31 15:20
  • 阅读 ( 227 )

如何在microsoft excel中创建检查表

...入在microsoftexcel中变得轻而易举。下面是如何在电子表格中创建一个清单,并使它看起来像你自己的清单。 为什么是检查表?您可以使用清单来跟踪旅行要打包的物品、公司的产品、节日礼物清单、每月账单或跟踪任务。通过一...

  • 发布于 2021-04-01 00:30
  • 阅读 ( 244 )

如何在googledocs中创建多级列表

在googledocs中,您可以轻松地在文档中创建和自定义多级列表。你可以用项目符号、数字、甚至字母顺序来格式化你的列表。我们来看看这个过程。 如何创建多级列表 打开浏览器,进入googledocs主页,打开一个新文档。 在googled...

  • 发布于 2021-04-02 17:16
  • 阅读 ( 200 )

如何在microsoft word中创建宣传册

宣传册是一个方便的营销工具,几乎每个公司都在使用。创建它们只需几分钟,您可以直接在Word中使用模板或从头开始创建。下面是方法。 使用模板创建小册子 创建小册子最简单的方法是使用Word提供的许多可用模板之一。 ...

  • 发布于 2021-04-03 00:25
  • 阅读 ( 225 )

如何在word中创建新闻稿样式的列

...,您将能够立即创建一份漂亮、专业的新闻稿。 在word中创建新闻稿样式列 通过专栏安排文本是创建新闻稿的一个重要部分。幸运的是,Word不需要**多个文本框(尽管你当然可以这样做)。更好的是你可以先输入你的内容,然...

  • 发布于 2021-04-03 13:25
  • 阅读 ( 138 )

如何从excel列表在word中创建邮件标签

...备打印邮件标签时,您需要使用邮件合并从Excel列表在Word中创建它们。下面是方法。 第一步:准备你的邮件列表 如果您已经在Excel中创建了邮件列表,那么您可以安全地跳过此测试。如果您还没有创建列表,尽管Excel缺少邮件...

  • 发布于 2021-04-03 14:30
  • 阅读 ( 178 )

如何在powerpoint中创建星球大战滚动文本

...众,让他们对你的演讲更加感兴趣和投入。 在powerpoint中创建星球大战简介爬网 首先,您需要添加一个清晰的星空图像作为幻灯片的背景。在网上找到这张照片,或者,如果运气好的话,你手边有一个好相机,你可以出去自...

  • 发布于 2021-04-03 14:48
  • 阅读 ( 146 )

如何在googlesheets中创建下拉列表

如果你和其他人在一个共享的googlesheets文件上工作,有时人们会输入意外的数据或打破公式的东西。确保每个人都输入所需数据的一种方法是在下拉验证列表中为他们提供数据。 如何创建下拉列表 下拉列表是确保人们输入到...

  • 发布于 2021-04-04 05:23
  • 阅读 ( 97 )

如何在microsoft word中创建和使用多级列表

Microsoft Word允许您轻松地在文档中创建和格式化多级列表。您可以从多种格式选项中进行选择,包括项目符号列表、编号列表或字母列表。我们来看看。 如何在microsoft word中创建多级列表 在Word中创建多级列表非常简单。从输入...

  • 发布于 2021-04-05 07:01
  • 阅读 ( 194 )
土逼囡卜万
土逼囡卜万

0 篇文章

相关推荐