在delphi的tdbgrid中显示和编辑备注字段

如果使用包含备注字段的表开发数据库应用程序,您会注意到,默认情况下,TDBGrid组件不会在DBGrid单元格中显示备注字段的内容。...

如果使用包含备注字段的表开发数据库应用程序,您会注意到,默认情况下,TDBGrid组件不会在DBGrid单元格中显示备注字段的内容。

woman using computer

本文提供了如何解决这个TMemoField问题的想法(还有一些技巧)。。。

特默菲尔德

备注字段用于表示长文本或文本与数字的组合。使用Delphi构建数据库应用程序时,TMemoField对象用于表示数据集中的备注字段。TMemoField封装了包含文本数据或任意长度的字段的基本行为。在大多数数据库中,备注字段的大小受数据库大小的限制。

虽然您可以在TDBMemo组件中显示备注字段的内容,但根据设计,TDBGrid将仅为此类字段的内容显示“(备注)”。

为了在适当的DBGrid单元格中实际显示一些文本(来自MEMO字段),您只需要添加一行简单的代码。。。

在下一个讨论中,假设您有一个名为“TestTable”的数据库表,其中至少有一个名为“Data”的备注字段。

ongettext

要在DBGrid中显示备注字段的内容,需要在字段的OnGetText事件中附加一行简单的代码。创建OnGetText事件处理程序的最简单方法是在设计时使用字段编辑器为备注字段创建持久字段组件:

  1. 将TDataset子体组件(TTable、TQuery、TADOTable、TADOQuery…)连接到“TestTable”数据库表。
  2. 双击数据集组件以打开字段编辑器
  3. 将备注字段添加到持久字段列表中
  4. 在字段编辑器中选择备注字段
  5. 激活对象检查器中的“事件”选项卡
  6. 双击OnGetText事件以创建事件处理程序

添加下一行代码(以下斜体):

procedure TForm1.DBTableDataGetText( Sender: TField; var Text: String; DisplayText: Boolean);begin Text := Copy(DBTableData.AsString, 1, 50);

注意:数据集对象称为“DBTable”,备注字段称为“DATA”,因此,默认情况下,连接到备注数据库字段的TMemoField称为“DBTableData”。通过将DBTableData.AsString指定给OnGetText事件的文本参数,我们告诉Delphi在DBGrid单元格中显示MEMO字段中的所有文本。您还可以将MEMO字段的DisplayWidth调整为更合适的值。

注意:由于备注字段可能相当大,因此最好只显示其中的一部分。在上述代码中,仅显示前50个字符。

单独编辑

默认情况下,TDBGrid不允许编辑备注字段。如果要启用“就地”编辑,可以添加一些代码,以便对显示单独窗口的用户操作作出反应,该窗口允许使用TMemo组件进行编辑。为简单起见,当按下DBGrid中“打开”备注字段时,我们将打开一个编辑窗口。让我们使用DBGrid组件的按键事件:

procedure TForm1.DBGrid1KeyDown( Sender: TObject; var Key: Word; Shift: TShiftState);begin if Key = VK_RETURN then begin if DBGrid1.SelectedField = DBTableData then with TMemoEditorForm.Create(nil) do try DBMemoEditor.Text := DBTableData.AsString; ShowModal; DBTable.Edit; DBTableData.AsString := DBMemoEditor.Text; finally Free; end; end;end;

注1:“TMemoEditorForm”是只包含一个组件的辅助表单:“DBMemoEditor”(TMemo)。注2:“TMemoEditorForm”已从“项目选项”对话框窗口的“自动创建表单”列表中删除。

让我们看看DBGrid1的KeyDown事件处理程序中发生了什么:

  1. 当用户按下ENTER键时(我们将键参数与VK_返回虚拟键代码进行比较)[key=VK_返回],
  2. 如果DBGrid中当前选定的字段是我们的备注字段(DBGrid1.SelectedField=DBTableData),
  3. 我们创建TMemoEditorForm[TMemoEditorForm.create(nil)],
  4. 将备注字段的值发送到TMemo组件[DBMemoEditor.Text:=DBTableData.AsString],
  5. 以模式显示表单[ShowModal],
  6. 当用户完成编辑并关闭表单时,我们需要将数据集置于编辑模式[DBTable.Edit],
  7. 为了能够将编辑后的值分配回备注字段[DBTableData.AsString:=DBMemoEditor.Text]。

注意:如果您正在寻找更多与TDBGrid相关的文章和使用技巧,请务必访问“TDBGrid to the MAX”技巧收藏。

  • 发表于 2021-09-10 20:47
  • 阅读 ( 168 )
  • 分类:编程

你可能感兴趣的文章

如何添加和打印带发言人笔记的powerpoint

...“演示者”视图时,您将可以访问笔记,而只有幻灯片会显示在观众的投影仪屏幕上。 ...

  • 发布于 2021-03-11 22:12
  • 阅读 ( 320 )

如何在chrome和firefox中为书签添加注释

... 当您将鼠标移到书签栏上的书签上时,将显示名称和注释。 ...

  • 发布于 2021-03-22 18:18
  • 阅读 ( 443 )

如何使用keepass密码管理器更好地组织秘密

...的组中。因此,根据您选择的左侧组,它将在右侧视图中显示此组中的条目。 除了创建密码组外,您还可以将条目标记为收藏夹。选择收藏夹条目,右键单击它们,然后单击“Selected Entries>Add Tag>New Tag”,然后输入例如“fav...

  • 发布于 2021-04-10 09:27
  • 阅读 ( 281 )

如何在outlook 2013中向电子邮件添加注释

...。 当您双击邮件以在邮件窗口中打开邮件时,该标志将显示在邮件正文的上方。 您还可以将光标放在消息的主题行并向其中添加文本,如下所示。 关闭消息窗口时,将显示一个确认对话框,询问是否要保存更改。要保存添加...

  • 发布于 2021-04-11 15:34
  • 阅读 ( 227 )

如何在dbgrid中使用复选框(use checkboxes in a dbgrid)

...建一个示例应用程序 在Delphi中启动一个新表单,并放置TDBGrid、TaToTable和TADOConnection、TDataSource。 将所有组件名称保留为第一次放入表单时的状态(DBGrid1、ADOQuery1、AdoTable1等)。使用对象检查器设置ADOConnection1组件(TADOConnection...

  • 发布于 2021-09-04 07:22
  • 阅读 ( 156 )

了解delphi编程的基础知识

希望掌握Delphi编程语言的初学者应该已经熟悉Microsoft Windows的基础知识。学习Delphi是最容易的,如果你从一个有指导的、基于教程的参考框架来学习它。 基本概念 从一堂历史课开始,介绍(Turbo)Pascal到Delphi 2005的演变,例...

  • 发布于 2021-09-06 15:13
  • 阅读 ( 185 )

delphi中的sql

...步地执行此操作: 1.在主窗体上放置TQuery、TDataSource、TDBGrid、TEdit和TButton组件。2.将TDataSource组件的DataSet属性设置为Query1。3.将TDBGrid组件的DataSource属性设置为DataSource1。4.将TQuery组件的DatabaseName属性设置为DBDEMOS。5.双击TQuery的SQL...

  • 发布于 2021-09-08 10:40
  • 阅读 ( 189 )

如何将下拉选择列表放置到dbgrid中(place a drop down pick list into a dbgrid)

...户界面。 现在,您已经知道什么是查找字段,以及在Delphi的DBGrid中显示查找字段的选项是什么,现在是时候了解如何使用DGBrid列的PickList属性,使用户能够从下拉列表框中为查找字段选择值了。 关于dbgrid columns属性的快速...

  • 发布于 2021-09-10 22:19
  • 阅读 ( 204 )

如何delphidbgrid中的multiselect(multiselect in the delphi dbgrid)

Delphi的DBGrid是数据库相关应用程序中使用最广泛的DB感知组件之一。它的主要目的是使应用程序的用户能够在表格网格中操作数据集中的记录。 DBGrid组件的一个鲜为人知的特性是,可以将其设置为允许多行选择。这意味着用...

  • 发布于 2021-09-10 22:29
  • 阅读 ( 191 )

如何delphidbgrid中的记录排序(sort records in delphi dbgrid)

Delphi DBGrid是一个功能强大的组件,如果您正在开发数据感知应用程序,那么您可能每天都在使用它。下面,我们将了解如何向您的数据库应用程序中添加更多用户肯定会喜欢的功能。 按照《Delphi数据库编程初学者指南》中描...

  • 发布于 2021-09-10 22:31
  • 阅读 ( 235 )
小鲨鱼不会飞
小鲨鱼不会飞

0 篇文章

相关推荐