delphi - TDBCtrlGrid 中多行 DBMemo 的单行渲染
问题描述
我在 Delphi 10.3 中使用带有多行 DBMemo 的 TDBCtrlGrid。当面板处于焦点时,行为是正常的。在未聚焦的面板中,文本变为单行。
如何使所有面板看起来一样?
不同记录的字段值是相等的。第一个焦点记录。
解决方案
下面是一个包含 TClientDataSet 的最小测试项目的代码。TDataSource、TDBGrid 和 TDBCtrlGrid。它旨在完全独立,因为所有相关的组件属性和记录数据都在FormCreate
事件的代码中设置。它包含一个编译器定义,用于控制 TDBMemo 中显示的字段是 TStringField 还是 TMemoField。
如果我编译并运行项目,我会得到这个显示,无论编译器定义是否处于活动状态。
如您所见,DBMemo 图像的 3 个实例都正确显示了 4 行数据,正如预期的那样。显然,这不会重现您说明的行为。也许通过将其与您的项目进行比较,您可能能够确定您的行为不同的原因。也许这与 DBMemo 字符串的内容或您使用的字体有关?
TForm1 = class(TForm)
DBGrid1: TDBGrid;
DBNavigator1: TDBNavigator;
DataSource1: TDataSource;
DBCtrlGrid1: TDBCtrlGrid;
DBMemo1: TDBMemo;
ClientDataSet1: TClientDataSet;
[...]
procedure TForm1.FormCreate(Sender: TObject);
var
AField : TField;
MemoValue : String;
i : Integer;
begin
AField := TIntegerField.Create(ClientDataSet1);
AField.FieldName := 'Field1';
AField.DataSet := ClientDataSet1;
{.$define UseStringField}
{$ifdef UseStringField}
AField := TStringField.Create(ClientDataSet1);
AField.FieldName := 'Field2';
AField.Size := 1024;
AField.DataSet := ClientDataSet1;
{$else}
AField := TMemoField.Create(ClientDataSet1);
AField.FieldName := 'Field2';
AField.DataSet := ClientDataSet1;
{$endif}
ClientDataSet1.IndexFieldNames := 'Field1';
ClientDataSet1.CreateDataSet;
ClientDataSet1.Open;
DBMemo1.Width := 150;
DbCtrlGrid1.RowCount := 1;
DbCtrlGrid1.ColCount := 3;
DbCtrlGrid1.PanelWidth := DBMemo1.Width + 20;
DBMemo1.Left := 10;
DbCtrlGrid1.Width := 3 * DbCtrlGrid1.PanelWidth;
for i := 1 to 3 do begin
MemoValue := 'record: %d' + sLineBreak + 'line2' + sLineBreak + 'line3' + sLineBreak + 'line4' + SLineBreak;
MemoValue := Format(MemoValue, [i]);
ClientDataSet1.InsertRecord([i, MemoValue]);
end;
ClientDataSet1.First;
end;
推荐阅读
- java - 如何在 Java 代码中为任务赋予管理员权限
- javascript - 第二次选择“旅程类型”时,表单中的付款价值挂起
- spring-boot - 创建自定义 ErrorWebExceptionHandler 失败
- mysql - MIN() 不在另一列上返回最小值
- java - android中的TextView在右侧留下空白。如何调整这个
- vue.js - 如何将 ASP.NET Core 2.1 与 Vue CLI 3 集成?
- javascript - Is it faster to get variables via ajax response or use .load() to load a php page
- c - 如何使用动态改变数据大小的结构?
- apache-kafka - Kafka,控制其他分区偏移量
- ckeditor5 - editor.setData 完成后如何通知我的插件