- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我有一个相当奇怪的问题,我无法找到相关文档。我有一个使用 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 是一个数据感知控件,这意味着它被设置为显示数据集中关联字段的文本;您不能只是将值填充到其文本属性中,因为每当 TDBMemo 被告知刷新自身(通过其 TDatalink)时,它都会从字段中检索文本,覆盖您认为分配给它的任何内容。 p>
我会做这样的事情
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 位于 finally block 中可能会更好。
顺便说一句,您的问题源于 Delphi 的数据库感知框架对数据库感知控件的屏幕显示施加的严格控制。一般来说,这会阻止你尝试直接改变这些控件的显示内容;如果您想更改数据集数据,请更改它,而不是更改关联控件显示的内容。
关于德尔福XE : TDBMemo Text Disappears,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23764353/
我有一个相当奇怪的问题,我无法找到相关文档。我有一个使用 Delphi 内置 TDBMemo 组件的 Delphi 程序,因为该组件需要从数据库中的字段中提取数据。用户还必须能够编辑此信息,即将信息添
我有一个 DBLookupComboBox,其中列出了我要从中选择值的 1 个表中的值。 选择该值后,我希望能够输入/编辑 2 个 DBMemo 框,以便插入/更新到另一个表中。 但是他们不允许我进入
我是一名优秀的程序员,十分优秀!