22-02-2012, 08:29 AM
السلام عليكم ورحمة الله وبركاته
استخدم المكون Virtualstring لعرض بيانات جدول الحسابات ولكن لايخرج النتائج . يخرج ترتيب الحسابات بدون مسيماتها
هذا الكود المستخدم
وهذا الكود في الحدث on Get text
اين الخطأ في الكود
ولكم جزيل الشكر
النتيجة في الصورة المرفقة
استخدم المكون Virtualstring لعرض بيانات جدول الحسابات ولكن لايخرج النتائج . يخرج ترتيب الحسابات بدون مسيماتها
هذا الكود المستخدم
كود :
procedure TF_dalel.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');
// الحصول على عدد سجلات الحسابات كاملا واسناده الى متغير e
//
with Module1.Qr1 do
begin
Close;
SQL.Clear;
sql.CommaText := 'select * from asset_ss ';
Open;
e := RecordCount;
Close;
SQL.Add('where accfather = :p1 ');
Parameters.ParamByName('p1').Value := str[i];
Open;
First;
end;
for t := 0 to Module1.Qr1.RecordCount-1 do
begin
str.Append(Module1.Qr1.fields.FieldByName('code').AsString);
NodeT[x] := VST.AddChild(nil);
pData := VST.GetNodeData(NodeT[x]);
if assigned(pdata) then
pdata^.Caption := Module1.Qr1.Fields.FieldByName('accname').AsString;
x := x + 1;
Module1.Qr1.Next;
end;
for b := 0 to e-1 do
begin
i := i + 1;
Module1.Qr1.Close;
Module1.Qr1.Parameters.ParamByName('p1').Value := str[i];
Module1.Qr1.Open;
Module1.Qr1.First;
for t := 0 to Module1.Qr1.RecordCount-1 do
begin
str.Append(Module1.Qr1.FieldByName('code').AsString);
NodeT[x] := VST.AddChild(nodeT[y]);
pData := VST.GetNodeData(NodeT[x]);
if assigned(pdata) then
pdata^.Caption := Module1.Qr1.fields.FieldByName('accname').AsString;
x := x + 1;
Module1.Qr1.Next;
end;
y := y + 1;
end;
vst.FullExpand(NIL);
vst.EndUpdate;
vst.Cursor := crdefault;
end;وهذا الكود في الحدث on Get text
كود :
procedure TF_dalel.vstGetText(Sender: TBaseVirtualTree; Node: PVirtualNode;
Column: TColumnIndex; TextType: TVSTTextType; var CellText: string);
var
pData: PNodeData;
begin
pData :=sender.GetNodeData(Node);
if assigned(pdata) then
CellText := pData^.Caption;
end;اين الخطأ في الكود
ولكم جزيل الشكر
النتيجة في الصورة المرفقة

