Hello all,
I was hoping if someone knows something about Virtual Tree.
When I load my records it's putting it on the screen one by one,
I used to have a for next loop where it was loading al the records, but was
taking 7-10 seconds to load, while it suppose to be instantly
this is what it is now, and hope somebody could help me.
thanks so much
Perry
unit dsmain;
interface
uses
Windows, Messages,
SysUtils,
Controls, Forms,
Dialogs,StdCtrls,
ShellAPI, IniFiles, ComCtrls, ExtCtrls,
DB,VirtualTrees,registry,FileCtrl, ABSMain, Classes;
type
PTreeData = ^TnodeData;
Tnodedata = record
myrom : integer;
romnumber : string;
romname : string;
ownrom : integer;//string;
location : string;
publisher : string;
languages : string;
serial : string;
crc : string;
size : string;
genre : string;
end;
TdsmainForm = class(TForm)
vtree: TVirtualStringTree;
RomDatabase: TABSDatabase;
ABSQuery1: TABSQuery;
ABSQuery2: TABSQuery;
ABSroms: TABSTable;
Button1: TButton;
Button2: TButton;
procedure FormCreate(Sender: TObject);
procedure vtreeGetText(Sender: TBaseVirtualTree; Node: PVirtualNode;
Column: TColumnIndex; TextType: TVSTTextType; var CellText: string);
procedure Button1Click(Sender: TObject);
procedure Button2Click(Sender: TObject);
procedure vtreeInitNode(Sender: TBaseVirtualTree; ParentNode,
Node: PVirtualNode; var InitialStates: TVirtualNodeInitStates);
private
{ Private declarations }
public
{ Public declarations }
{ Public declarations }
Node: PVirtualNode;
Data: PTreeData;
end;
var
dsmainForm : TdsmainForm;
{$endregion}
implementation
{$R *.dfm}
procedure TdsmainForm.vtreeGetText(Sender: TBaseVirtualTree;
Node: PVirtualNode; Column: TColumnIndex; TextType: TVSTTextType;
var CellText: string);
var
ownr : string;
begin
Data := Sender.GetNodeData(Node);
if assigned(data) then
begin
if Data.ownrom=0 then ownr:='' else ownr:='Yes';
case Column of
0: CellText := data.romnumber ;
1: CellText := Data.romname ;
2: CellText := ownr;
3: celltext :=data.location;
4: celltext :=data.publisher;
5: celltext :=data.languages ;
6: celltext :=data.serial ;
7: celltext :=data.crc;
8: celltext :=data.size;
9: celltext :=data.genre;
end;
end;
end;
procedure TdsmainForm.vtreeInitNode(Sender: TBaseVirtualTree; ParentNode,
Node: PVirtualNode; var InitialStates: TVirtualNodeInitStates);
var
tst : string;
i : integer;
begin
tst:='SELECT roms.* ,pic.* FROM roms LEFT JOIN pic ON roms.romnumber =
pic.romnumber where roms.romnumber="'+inttostr(Node.Index)+'" ORDER by
romnumber ASC';
absquery1.SQL.Text := tst;
absquery1.open ;
if absquery1.RecordCount <> 0 then
begin
Data := Sender.GetNodeData(Node);
data.romnumber:=Absquery1.fieldbyname('romnumber').AsString ;
data.romname :=Absquery1.fieldbyname('romname').AsString ;
data.location:=Absquery1.fieldbyname('location').AsString ;
data.publisher:=Absquery1.fieldbyname('publisher').AsString ;
data.languages:=Absquery1.fieldbyname('languages').AsString ;
data.serial:=Absquery1.fieldbyname('serial').AsString ;
data.crc:=Absquery1.fieldbyname('crc').AsString ;
data.size:=Absquery1.fieldbyname('romsize').AsString ;
data.genre:=Absquery1.fieldbyname('genre').AsString ;
end;
end;
procedure TdsmainForm.Button1Click(Sender: TObject);
var
tst : string;
begin
vtree.Clear;
vtree.NodeDataSize :=sizeof(Tnodedata);
vtree.RootNodeCount:=1000;
end;
procedure TdsmainForm.Button2Click(Sender: TObject);
begin
vtree.Clear;
end;
procedure TdsmainForm.FormCreate(Sender: TObject);
begin
vtree.Header.Columns.Clear;
vtree.Header.Columns.add.Text:='ROM';
vtree.Header.Columns.add.Text:='Title';
vtree.Header.Columns.add.Text:='Own Rom';
vtree.Header.Columns.add.Text:='Own Rom';
vtree.Header.Columns.add.Text:='Own Rom';
vtree.Header.Columns.add.Text:='Own Rom';
vtree.Header.Columns.add.Text:='Own Rom';
vtree.Header.Columns.add.Text:='Own Rom';
vtree.Header.Columns.add.Text:='Own Rom';
romdatabase.DatabaseName := 'DS Organizer data';
absroms.DatabaseName := 'DS Organizer data';
absquery2.DatabaseName := 'DS Organizer data';
romdatabase.DatabaseName := 'DS Organizer data';
absroms.DatabaseName := 'DS Organizer data';
absquery1.DatabaseName := 'DS Organizer data';
RomDatabase.Connected:=true;
end;
end.
[Non-text portions of this message have been removed]