السلام عليكم
استخدم المكون مكون Virtual TreeViw لعرض بيانات جدول الحسابات . ولكن تظهر رسالة خطا عند سطر Pdata.^caption لااعرف سبب المشكلة
وهذه رسالة الخطأ
وإذا الغينا السطر البرمجي لايوجد مشاكل
unit F_acc;
interface
uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, StdCtrls, ExtCtrls, AdvEdit, advlued, ComCtrls, VirtualTrees;
type
Tacc = class(TForm)
pnl1: TPanel;
grp1: TGroupBox;
lbl2: TLabel;
edt2: TEdit;
lbl3: TLabel;
edt3: TEdit;
grp2: TGroupBox;
edt4: TEdit;
lbl5: TLabel;
edt5: TEdit;
lbl6: TLabel;
lbl7: TLabel;
edt6: TEdit;
edt7: TEdit;
lbl8: TLabel;
lbl9: TLabel;
lbl10: TLabel;
lbl11: TLabel;
cbb2: TComboBox;
lbl12: TLabel;
Edt8: TAdvLUEdit;
Edt9: TAdvLUEdit;
Edt10: TAdvLUEdit;
pnl2: TPanel;
btn1: TButton;
btn2: TButton;
btn3: TButton;
btn4: TButton;
btn5: TButton;
edt1: TEdit;
lbl1: TLabel;
lbl4: TLabel;
cbb1: TComboBox;
cbb3: TComboBox;
lbl13: TLabel;
btn6: TButton;
vst: TVirtualStringTree;
procedure edt1KeyPress(Sender: TObject; var Key: Char);
procedure btn6Click(Sender: TObject);
private
procedure uptree;
{ Private declarations }
public
{ Public declarations }
end;
type
PNodeData = ^TNodeData;
TNodeData = record
caption : String;
image,id,level:Integer;
end;
var
acc: Tacc;
implementation
uses F_DM, F_showacc;
{$R *.dfm}
procedure Tacc.uptree;
var i,e,b,t,x,y : integer;
str : Tstrings;
NodeT: array[0..1000] of PVirtualNode;
pData: PNodedata ;
begin
vst.Cursor := crhourglass;
vst.BeginUpdate;
str := Tstringlist.Create;
str.Clear;
vst.Clear;
//------------------------------------------
i := 0; x := 0; y := 0;
str.Append('0');
with DM.QrAcc do
begin
Close;
SQL.Clear;
sql.CommaText := 'select * from account ';
Open;
e := RecordCount;
Close;
SQL.Add('where cood_accfather = :p1 ');
Parameters.ParamByName('p1').Value := str;
Open;
First;
end;
for t := 0 to DM.QrAcc .RecordCount-1 do
begin
str.Append(DM.QrAcc .fields.FieldByName('cood_acc').AsString);
NodeT[x] := VST.AddChild(nil);
pData := VST.GetNodeData(NodeT[x]);
pdata^.Caption := DM.QrAcc.Fields.FieldByName('name_acc').AsString;
x := x + 1;
DM.QrAcc .Next;
end;
for b := 0 to e-1 do
begin
i := i + 1;
DM.QrAcc .Close;
DM.QrAcc .Parameters.ParamByName('p1').Value := str;
DM.QrAcc .Open;
DM.QrAcc .First;
for t := 0 to DM.QrAcc .RecordCount-1 do
begin
str.Append(DM.QrAcc.FieldByName('cood_acc').AsString);
NodeT[x] := VST.AddChild(nodeT[y]);
pData := VST.GetNodeData(NodeT[x]);
pdata^.Caption := DM.QrAcc.fields.FieldByName('name_acc').AsString;
x := x + 1;
DM.QrAcc .Next;
end;
y := y + 1;
end;
vst.FullExpand(NIL);
vst.EndUpdate;
vst.Cursor := crdefault;
end;هل من حل لهذة المشكلة . ولكم الشكر