Listveiw에서 Ownerdata 프로퍼티를 True로 해서 대량의 자료를 Listview에 넣는 작업을 하고 있습니다. 그런데 다음과 같은 문제가 생겨서 고수님의 조언을 부탁드립니다.
1. 1번째 래코드가 2 번 Add가 됩니다.
예) 1
1
2
3
4
5
.
.
.
2. Listview.FindCaption을 이용해서 중복 Add를 배제하려고 하는데 FindCaption이 전혀 듣지를 않는다는 겁니다.
고수님들의 조언을 간곡히 부탁드립니다.
------------------------ 이하소스 -----------------------------------
unit Unit1;
interface
uses
Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs,
StdCtrls, ComCtrls, advlistv, Db, ZQuery, ZMySqlQuery, ZConnect,
ZMySqlCon, ZTransact, ZMySqlTr, ExtCtrls, ImgList;
type
TForm1 = class(TForm)
ListView: TAdvListView;
Button1: TButton;
ZMySqlTransact1: TZMySqlTransact;
ZMySqlDatabase1: TZMySqlDatabase;
Query: TZMySqlQuery;
Button2: TButton;
Panel1: TPanel;
procedure Button1Click(Sender: TObject);
procedure ListViewData(Sender: TObject; Item: TListItem);
procedure Button2Click(Sender: TObject);
private
{ Private declarations }
public
{ Public declarations }
end;
var
Form1: TForm1;
implementation
{$R *.DFM}
procedure TForm1.Button1Click(Sender: TObject);
var
Item: TListItem;
begin
Query.Open;
if Query.RecordCount > 0 then Listview.Items.Count := Query.RecordCount+1;
Caption := IntToStr(Query.RecordCount);;
end;
procedure TForm1.ListViewData(Sender: TObject; Item: TListItem);
var
fItem: TListItem;
begin
if Query.Active then
begin
fItem := Listview.FindCaption(-1,Query.FieldByName('fdomain').AsString,False,False,False);
if fItem <> nil then ShowMessage(fItem.Caption) else
begin
Query.RecNo := Item.Index;
Item.Caption := Query.FieldByName('fdomain').AsString;
end;
end;
end;
end.
전 이상하게도 RecNo가 안 되서 마지막 자료만 나오는데요...
근디 버그 하나는 찾았어요...
if Query.RecordCount > 0 then Listview.Items.Count := Query.RecordCount+1;
를
if Query.RecordCount > 0 then Listview.Items.Count := Query.RecordCount;
로 고쳐야...
왜 +1이 되었는지 ????