Delphi XE:TDBMemo文本消失
发布时间:2020-12-15 09:07:00 所属栏目:大数据 来源:网络整理
导读:我有一个相当奇怪的问题,我无法找到文档.我有一个使用Delphi内置TDBMemo组件的Delphi程序,因为组件需要从数据库中的字段中提取数据.用户还必须能够编辑此信息,即将信息添加到组件的字段中.键入该字段的文本是可见的,不会消失;但是,这不是我的问题. 该表单为
我有一个相当奇怪的问题,我无法找到文档.我有一个使用Delphi内置TDBMemo组件的Delphi程序,因为组件需要从数据库中的字段中提取数据.用户还必须能够编辑此信息,即将信息添加到组件的字段中.键入该字段的文本是可见的,不会消失;但是,这不是我的问题.
该表单为用户提供了从列表中发布预定义注释的选项,通过相当于由TBitButton触发的弹出窗口进行访问;但是,一旦将选定的文本添加到TDBMemo并且用户单击任意位置,添加的值就会消失 – 再次,不是键入的文本. 这是作业的代码: var NoteString: String; if DBMemo1.Text <> '' then begin NoteString := frmSelectNoteCodeView.GetTextfromField + ' - ' + User.ID + ' on ' + FormatDateTime('mm/dd/yyyy',Now); DBMemo1.Text := dbedComments.Text + #13#10 + NoteString; end; 这是一个有目的的代码片段(如果该字段为空,则仅分配值).我发布此代码片段,因为我认为这是问题所在,即常规分配不能与TDBMemo一起使用? 事情就是:没有处理用户点击的事件.有关发布文本消失的原因的任何想法? 解决方法
正如我在评论中所说,TDBMemo是一个数据感知控件,这意味着它被设置为在数据集中显示相关字段的文本;你不能只将一个值填充到它的text属性中,因为任何时候TDBMemo被告知刷新自己(通过它的TDatalink),它会从字段中检索文本,覆盖你认为你分配给它的任何东西.
我会做这样的事情 var ADataSet : TDataSet; begin ADataSet := DBMemo1.DataSource.DataSet; //just to reduce typing if not (ADataSet.State in [dsInsert,dsEdit) then ADataSet.Edit; ADataSet.FieldByName(DBMemo1.FieldName).AsString := 'your text goes here'; ADataSet.Post; end; 或者你可以留给用户打电话给Post. 如果.Post在最后一个块中,可能会更好. 顺便说一下,你的问题源于Delphi的db-aware框架对db-aware控件的屏幕显示所施加的严格控制.一般来说,这会打击你试图直接改变这些控件显示的内容;如果要更改数据集数据,则更改它,而不是关联控件显示的数据. (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |
相关内容
- Perl on debian:系统上的perl安装冲突
- vb.net – 升级到.net 4时MembershipUser / System.Web.App
- 如何配置新的Delphi XE8编辑器的开始视觉线索?
- delphi中exit,abort,break,continue 的区别
- 使用Perl,如何通过将参数传递给子例程来构建动态正则表达式
- lua -- 在弹框中显示物品列表
- Delphi 通过IConnectionPointContainer响应COM事件的例子,
- 【转】Delphi TStringList的用法
- Delphi2007编译的程序在Win7下图标模糊的解决办法
- InnoSetup快速入门(一):InnoSetup 环境安装并编译第一个