Delphi Firemonkey TListview-标题不显示是否重复
在Windows64上运行的Delphi10.4,Android也出现了同样的问题。我不认为这是一个bug,但更多的是一个设置问题(我就是找不到设置) 如果有标题为相同文本的连续项目,firemonkey版本的TListView不会显示第二个项目 我只能找到NativeOptions.Grouped=False,这是我能找到的最接近设置的东西。是否设置为true/false没有区别 有什么建议吗?下面是一个简单的工作示例,演示了这个问题Delphi Firemonkey TListview-标题不显示是否重复,listview,delphi,firemonkey,Listview,Delphi,Firemonkey,在Windows64上运行的Delphi10.4,Android也出现了同样的问题。我不认为这是一个bug,但更多的是一个设置问题(我就是找不到设置) 如果有标题为相同文本的连续项目,firemonkey版本的TListView不会显示第二个项目 我只能找到NativeOptions.Grouped=False,这是我能找到的最接近设置的东西。是否设置为true/false没有区别 有什么建议吗?下面是一个简单的工作示例,演示了这个问题 type TForm1 = class(TForm)
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
类型
TForm1=类(TForm)
ListView1:TListView;
按钮1:t按钮;
fdmemtable 1:TFDMemTable;
BindSourceDB1:TBindSourceDB;
fdmemtable1客户ID:TIntegerField;
FDMEMTable1客户名称:TStringField;
BindSourceDB2:TBindSourceDB;
绑定列表1:t绑定列表;
程序按钮1点击(发送方:ToObject);
私有的
FLinkFillControlToField:TLinkFillControlToField;
公众的
{公开声明}
结束;
变量
表1:TForm1;
实施
{$R*.fmx}
程序TForm1.按钮1单击(发送方:TObject);
开始
用FDMemTable1做什么
开始
打开
追加
FieldByName('CustomerID')。AsInteger:=1;
FieldByName('CustomerName')。关联字符串:='ABC';
邮递
追加
FieldByName('CustomerID')。AsInteger:=2;
FieldByName('CustomerName')。关联字符串:='XYZ';
邮递
追加
FieldByName('CustomerID')。AsInteger:=3;
FieldByName('CustomerName')。关联字符串:='XYZ';
邮递
结束;
如果未分配(FLinkFillControlToField),则
开始
FLinkFillControlToField:=TLinkFillControlToField.Create(BindingsList1);
FLinkFillControlToField.Control:=listview1;
用FLinkFillControlToField做
开始
类别:=‘快速绑定’;
磁道:=假;
方向:=linkDataToControl;
自动激活:=假;
自动填充:=真;
BindSourceDB1.DataSource.Enabled:=True;
FillDataSource:=BindSourceDB1;
结束;
结束;
用FLinkFillControlToField做
开始
FillHeaderFieldName:=“客户名称”;
使用FillExpressions.AddExpression do
开始
SourceMemberName:=“CustomerID”;
ControlMemberName:=“Text1”;
结束;
使用FillExpressions.AddExpression do
开始
SourceMemberName:=“CustomerName”;
ControlMemberName:=“Text2”;
结束;
结束;
FLinkFillControlToField.Active:=真;
结束;
对象窗体1:TForm1
左=0
Top=0
标题='Form1'
ClientHeight=404
ClientWidth=763
FormFactor.Width=320
FormFactor.Height=480
FormFactor.Devices=[桌面]
DesignerMasterStyle=0
对象列表视图1:TListView
ItemAppearanceClassName='TDynamicAppearance'
ItemEditAppearanceClassName='TDynamicAppearance'
HeaderAppearanceClassName='tListHeaderObject'
FooterAppearanceClassName='tListHeaderObject'
位置X=16.000000000000000000000000
位置Y=24.000000000000000000000000
Size.Width=561.000000000000000000000000
大小.高度=353.000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
Size.PlatformDefault=False
ItemAppearanceObjects.ItemObjects.ObjectsCollection=<
项目
AppearanceObjectName='Text1'
AppearanceClassName='TTextObjectAppearance'
外观.宽度=223.000000000000000000000000
外观.高度=44.000000000000000000000000
结束
项目
AppearanceObjectName='Text2'
AppearanceClassName='TTextObjectAppearance'
外观.宽度=208.000000000000000000
外观.高度=44.000000000000000000000000
外观.PlaceOffset.X=326.000000000000000000000000
结束>
ItemAppearanceObjects.ItemEditObjects.ObjectsCollection=<
项目
AppearanceObjectName='Text1'
AppearanceClassName='TTextObjectAppearance'
结束>
结束
对象按钮1:t按钮
位置.X=592.000000000000000000000000000000
位置Y=24.000000000000000000000000
大小.宽度=161.000000000000000000000000
大小.高度=57.000000000000000000000000
Size.PlatformDefault=False
Text='Button1'
OnClick=按钮1单击
结束
对象FDMemTable1:TFDMemTable
FetchOptions.AssignedValues=[evMode]
FetchOptions.Mode=fmAll
ResourceOptions.AssignedValues=[rvSilentMode]
ResourceOptions.SilentMode=True
UpdateOptions.AssignedValues=[uvCheckRequired,uvAutoCommitUpdates]
UpdateOptions.CheckRequired=False
UpdateOptions.AutoCommitUpdates=True
左=576
Top=128
对象FDMemTable1CustomerID:TIntegerField
FieldName='CustomerID'
结束
对象fdmemTable1客户名称:TStringField
FieldName='CustomerName'
尺寸=30
结束
结束
对象BindSourceDB1:TBindSourceDB
DataSet=FDMemTable1
范围映射=
左=576
Top=192
结束
对象BindSourceDB2:TBindSourceDB
DataSet=FDMemTable1
范围映射=
左=576
Top=248
结束
对象绑定列表1:TBindingsList
方法=
输出转换器=
左=20
Top=5
结束
结束
我发现头的设计就是这样的——如果连续的头完全相同,它就不会重复
所以我把文本移到了“main”部分,这样每个记录都会重复
感谢您尝试通过回复提供帮助。我发现页眉就是这样设计的——如果连续的页眉完全相同,则不会重复 所以我把文本移到了“main”部分,这样每个记录都会重复
感谢您通过回复提供帮助。您能否编写一个简单的程序来重现您遇到的问题?然后编辑您的问题以添加该程序源(.pas和.fmx)。顺便问一下,您使用的是哪个平台(Windows、Android…)?还有德尔福版本。@fpiette,我已经发布了一个简单的例子。Windows32/64。安卓也有同样的问题。德尔菲法10.4。之前我没有发布一个例子,因为我没有