【发布时间】:2021-02-15 19:44:35
【问题描述】:
Delphi 10.4 在 Windows 64 上运行,Android 显示同样的问题。我不认为这是一个错误,而是一个设置问题(我只是找不到设置)
如果我有连续的 Header 是相同文本的项目,firemonkey 版本的 TListView 不会显示第二个项目。
我只能找到 NativeOptions.Grouped=False,就设置而言,这是我能找到的最接近的东西。是否设置为 true/false 没有区别。
任何指针?下面附上一个最小的工作示例,它演示了这个问题。
type
TForm1 = class(TForm)
ListView1: TListView;
Button1: TButton;
FDMemTable1: TFDMemTable;
BindSourceDB1: TBindSourceDB;
FDMemTable1CustomerID: TIntegerField;
FDMemTable1CustomerName: TStringField;
BindSourceDB2: TBindSourceDB;
BindingsList1: TBindingsList;
procedure Button1Click(Sender: TObject);
private
FLinkFillControlToField : TLinkFillControlToField;
public
{ Public declarations }
end;
var
Form1: TForm1;
implementation
{$R *.fmx}
procedure TForm1.Button1Click(Sender: TObject);
begin
with FDMemTable1 do
begin
Open;
Append;
FieldByName('CustomerID').AsInteger := 1;
FieldByName('CustomerName').AsString := 'ABC';
Post;
Append;
FieldByName('CustomerID').AsInteger := 2;
FieldByName('CustomerName').AsString := 'XYZ';
Post;
Append;
FieldByName('CustomerID').AsInteger := 3;
FieldByName('CustomerName').AsString := 'XYZ';
Post;
end;
if not Assigned(FLinkFillControlToField) then
begin
FLinkFillControlToField := TLinkFillControlToField.Create(BindingsList1);
FLinkFillControlToField.Control := listview1;
with FLinkFillControlToField do
begin
Category := 'Quick Bindings';
Track := False;
Direction := linkDataToControl;
AutoActivate := False;
AutoFill := True;
BindSourceDB1.DataSource.Enabled := True;
FillDataSource := BindSourceDB1;
end;
end;
with FLinkFillControlToField do
begin
FillHeaderFieldName := 'CustomerName';
with FillExpressions.AddExpression do
begin
SourceMemberName := 'CustomerID';
ControlMemberName := 'Text1';
end;
with FillExpressions.AddExpression do
begin
SourceMemberName := 'CustomerName';
ControlMemberName := 'Text2';
end;
end;
FLinkFillControlToField.Active := True;
end;
object Form1: TForm1
Left = 0
Top = 0
Caption = 'Form1'
ClientHeight = 404
ClientWidth = 763
FormFactor.Width = 320
FormFactor.Height = 480
FormFactor.Devices = [Desktop]
DesignerMasterStyle = 0
object ListView1: TListView
ItemAppearanceClassName = 'TDynamicAppearance'
ItemEditAppearanceClassName = 'TDynamicAppearance'
HeaderAppearanceClassName = 'TListHeaderObjects'
FooterAppearanceClassName = 'TListHeaderObjects'
Position.X = 16.000000000000000000
Position.Y = 24.000000000000000000
Size.Width = 561.000000000000000000
Size.Height = 353.000000000000000000
Size.PlatformDefault = False
ItemAppearanceObjects.ItemObjects.ObjectsCollection = <
item
AppearanceObjectName = 'Text1'
AppearanceClassName = 'TTextObjectAppearance'
Appearance.Width = 223.000000000000000000
Appearance.Height = 44.000000000000000000
end
item
AppearanceObjectName = 'Text2'
AppearanceClassName = 'TTextObjectAppearance'
Appearance.Width = 208.000000000000000000
Appearance.Height = 44.000000000000000000
Appearance.PlaceOffset.X = 326.000000000000000000
end>
ItemAppearanceObjects.ItemEditObjects.ObjectsCollection = <
item
AppearanceObjectName = 'Text1'
AppearanceClassName = 'TTextObjectAppearance'
end>
end
object Button1: TButton
Position.X = 592.000000000000000000
Position.Y = 24.000000000000000000
Size.Width = 161.000000000000000000
Size.Height = 57.000000000000000000
Size.PlatformDefault = False
Text = 'Button1'
OnClick = Button1Click
end
object FDMemTable1: TFDMemTable
FetchOptions.AssignedValues = [evMode]
FetchOptions.Mode = fmAll
ResourceOptions.AssignedValues = [rvSilentMode]
ResourceOptions.SilentMode = True
UpdateOptions.AssignedValues = [uvCheckRequired, uvAutoCommitUpdates]
UpdateOptions.CheckRequired = False
UpdateOptions.AutoCommitUpdates = True
Left = 576
Top = 128
object FDMemTable1CustomerID: TIntegerField
FieldName = 'CustomerID'
end
object FDMemTable1CustomerName: TStringField
FieldName = 'CustomerName'
Size = 30
end
end
object BindSourceDB1: TBindSourceDB
DataSet = FDMemTable1
ScopeMappings = <>
Left = 576
Top = 192
end
object BindSourceDB2: TBindSourceDB
DataSet = FDMemTable1
ScopeMappings = <>
Left = 576
Top = 248
end
object BindingsList1: TBindingsList
Methods = <>
OutputConverters = <>
Left = 20
Top = 5
end
end
【问题讨论】:
-
你能写一个最小的程序来重现你遇到的问题吗?然后编辑您的问题以添加该程序源(.pas 和 .fmx)。顺便问一下,您使用的是哪个平台(Windows、Android...)?还有 Delphi 版本。
-
@fpiette,我发布了一个最小的示例。 Windows32/64。安卓也是同样的问题。德尔福 10.4。以前我没有发布示例,因为我不认为这是一个错误……它似乎更像是一个设置问题。如果紧随其后的标题不同,则显示标题。如果没有,它就会消失。
-
我测试了你的代码,它似乎没问题:我看到带有记录 1 的“ABC”标题和带有记录 2 和 3 的“XYZ”标题。请添加你得到和绘制的屏幕转储一个箭头显示出了什么问题。我使用 Delphi 10.4.1 并在 Windows 应用程序中编写了您的代码。
-
我的意思是我希望记录 3 有自己的 XYZ 标头。 (请参阅带有屏幕截图的原始帖子)
-
我的结果和你一模一样。你确定你需要的不是简单的网格吗?
标签: listview delphi firemonkey