我有一个listview
连接到query
,用户使用AccessoryObject
标记了一些记录。在流程结束时,我在while
中设置query
,检查哪些记录已被标记,并检索一些query
信息。但是当我使用listview search box
进行搜索并使用Query.First
时,listview
全部为空并返回access violation
。有人知道如何解决这个问题吗?
与最小项目联系 Project
Pas文件:
unit Unit4;
interface
uses
System.SysUtils, System.Types, System.UITypes, System.Classes, System.Variants,
FMX.Types, FMX.Controls, FMX.Forms, FMX.Graphics, FMX.Dialogs,
FMX.ListView.Types, FMX.ListView.Appearances, FMX.ListView.Adapters.Base,
FireDAC.Stan.Intf, FireDAC.Stan.Option, FireDAC.Stan.Param,
FireDAC.Stan.Error, FireDAC.DatS, FireDAC.Phys.Intf, FireDAC.DApt.Intf,
FireDAC.Stan.StorageBin, System.Rtti, System.Bindings.Outputs,
Fmx.Bind.Editors, Data.Bind.EngExt, Fmx.Bind.DBEngExt,
FMX.Controls.Presentation, FMX.StdCtrls, Data.Bind.Components,
Data.Bind.DBScope, Data.DB, FireDAC.Comp.DataSet, FireDAC.Comp.Client,
FMX.Layouts, FMX.ListView;
type
TForm4 = class(TForm)
ListView1: TListView;
Layout1: TLayout;
FDMemTable1: TFDMemTable;
FDMemTable1NAME: TStringField;
BindSourceDB1: TBindSourceDB;
BindingsList1: TBindingsList;
LinkListControlToField1: TLinkListControlToField;
Button1: TButton;
Label1: TLabel;
procedure ListView1ItemClick(const Sender: TObject;
const AItem: TListViewItem);
procedure Button1Click(Sender: TObject);
private
{ Private declarations }
public
{ Public declarations }
end;
var
Form4: TForm4;
implementation
{$R *.fmx}
procedure TForm4.Button1Click(Sender: TObject);
begin
FDMemTable1.First;
while not(FDMemTable1.Eof) do
Begin
if ListView1.Items.AppearanceItem[ListView1.Selected.Index].Objects.AccessoryObject.Visible then
Begin
//Do stuff
End;
FDMemTable1.Next;
End;
end;
procedure TForm4.ListView1ItemClick(const Sender: TObject;
const AItem: TListViewItem);
begin
AItem.Objects.AccessoryObject.Visible := not AItem.Objects.AccessoryObject.Visible;
end;
end.
FMX文件
object Form4: TForm4
Left = 0
Top = 0
Caption = 'Form4'
ClientHeight = 480
ClientWidth = 640
FormFactor.Width = 320
FormFactor.Height = 480
FormFactor.Devices = [Desktop]
DesignerMasterStyle = 0
object ListView1: TListView
ItemAppearanceClassName = 'TListItemAppearance'
ItemEditAppearanceClassName = 'TListItemShowCheckAppearance'
HeaderAppearanceClassName = 'TListHeaderObjects'
FooterAppearanceClassName = 'TListHeaderObjects'
ItemIndex = 0
Align = Client
Size.Width = 640.000000000000000000
Size.Height = 430.000000000000000000
Size.PlatformDefault = False
TabOrder = 0
ItemAppearanceObjects.ItemObjects.Accessory.AccessoryType = Checkmark
ItemAppearanceObjects.ItemObjects.Accessory.Visible = False
OnItemClick = ListView1ItemClick
SearchVisible = True
end
object Layout1: TLayout
Align = Top
Size.Width = 640.000000000000000000
Size.Height = 50.000000000000000000
Size.PlatformDefault = False
TabOrder = 1
object Button1: TButton
Position.X = 24.000000000000000000
Position.Y = 16.000000000000000000
TabOrder = 0
Text = 'Do Stuff'
OnClick = Button1Click
end
object Label1: TLabel
Position.X = 112.000000000000000000
Position.Y = 19.000000000000000000
Size.Width = 377.000000000000000000
Size.Height = 17.000000000000000000
Size.PlatformDefault = False
Text = 'Search a name and click Do Stuff'
TabOrder = 1
end
end
object FDMemTable1: TFDMemTable
Active = True
FetchOptions.AssignedValues = [evMode]
FetchOptions.Mode = fmAll
ResourceOptions.AssignedValues = [rvPersistent, rvSilentMode]
ResourceOptions.Persistent = True
ResourceOptions.SilentMode = True
UpdateOptions.AssignedValues = [uvCheckRequired, uvAutoCommitUpdates]
UpdateOptions.CheckRequired = False
UpdateOptions.AutoCommitUpdates = True
Left = 304
Top = 274
Content = {
414442530F00922AE1010000FF00010001FF02FF03040016000000460044004D
0065006D005400610062006C006500310005000A0000005400610062006C0065
00060000000000070000080032000000090000FF0AFF0B0400080000004E0041
004D0045000500080000004E0041004D0045000C00010000000E000D000F0050
0000001000011100011200011300011400011500011600080000004E0041004D
004500170050000000FEFEFF18FEFF19FEFF1AFF1B1C0000000000FF1D000006
000000415254485552FEFEFF1B1C0001000000FF1D000005000000415843454C
FEFEFF1B1C0002000000FF1D000006000000414D414E4441FEFEFF1B1C000300
0000FF1D0000060000004153484C4559FEFEFF1B1C0004000000FF1D00000500
000042494E474FFEFEFF1B1C0005000000FF1D00000600000042554E4E4945FE
FEFF1B1C0006000000FF1D0000060000004341524C4F53FEFEFF1B1C00070000
00FF1D00000400000043415348FEFEFF1B1C0008000000FF1D00000600000043
414252414CFEFEFF1B1C0009000000FF1D00000600000044414C4C4153FEFEFF
1B1C000A000000FF1D000006000000454C4C494F54FEFEFF1B1C000B000000FF
1D0000050000004641425249FEFEFEFEFEFF1EFEFF1F20000C000000FF21FEFE
FE0E004D0061006E0061006700650072001E0055007000640061007400650073
005200650067006900730074007200790012005400610062006C0065004C0069
00730074000A005400610062006C00650008004E0061006D006500140053006F
0075007200630065004E0061006D0065000A0054006100620049004400240045
006E0066006F0072006300650043006F006E00730074007200610069006E0074
0073001E004D0069006E0069006D0075006D0043006100700061006300690074
007900180043006800650063006B004E006F0074004E0075006C006C00140043
006F006C0075006D006E004C006900730074000C0043006F006C0075006D006E
00100053006F0075007200630065004900440018006400740041006E00730069
0053007400720069006E00670010004400610074006100540079007000650008
00530069007A0065001400530065006100720063006800610062006C00650012
0041006C006C006F0077004E0075006C006C000800420061007300650014004F
0041006C006C006F0077004E0075006C006C0012004F0049006E005500700064
0061007400650010004F0049006E00570068006500720065001A004F00720069
00670069006E0043006F006C004E0061006D006500140053006F007500720063
006500530069007A0065001C0043006F006E00730074007200610069006E0074
004C00690073007400100056006900650077004C006900730074000E0052006F
0077004C00690073007400060052006F0077000A0052006F0077004900440010
004F0072006900670069006E0061006C001800520065006C006100740069006F
006E004C006900730074001C0055007000640061007400650073004A006F0075
0072006E0061006C001200530061007600650050006F0069006E0074000E0043
00680061006E00670065007300}
object FDMemTable1NAME: TStringField
FieldName = 'NAME'
Size = 80
end
end
object BindSourceDB1: TBindSourceDB
DataSet = FDMemTable1
ScopeMappings = <>
Left = 304
Top = 224
end
object BindingsList1: TBindingsList
Methods = <>
OutputConverters = <>
Left = 300
Top = 165
object LinkListControlToField1: TLinkListControlToField
Category = 'Quick Bindings'
DataSource = BindSourceDB1
FieldName = 'NAME'
Control = ListView1
FillExpressions = <>
FillHeaderExpressions = <>
FillBreakGroups = <>
end
end
end