الفريق العربي للبرمجةأرشيف المنتديات · 2000 – 2023
نسخة أرشيفية للقراءة فقط — التسجيل والمشاركة مغلقان، والمحتوى محفوظ كما كان.

كيف يتم عرض بيانات جدول Treeview

بدأه okail في 8 فبراير 2009 · 21 رد · 7,405 مشاهدة · في لغة Delphi
مشاركة: واتساب X فيسبوك تيليجرام
#1 صاحب الموضوع

السلام عليكم ورحمة الله

أخواني

كيف يمكن بالدلفي عرض الجدول في treeview

او بالتحديد عمل شجرة مثلا للحسابات مبنية على جدول واضافة وازالة العقد

#2

و عليكم السلام

اخي لم تحدد اي دلفي نت vcl winfom webform الكل تختلف عن بعضها و ان كان السؤال في الدلفي win 32 سانقل الموضوع و لك الجابة ان شاء الله .

#3

شكراً مرورك اخي زكيري

الحقيقة اني مبتدأ جداً بالدلفي واردت عمل برنامج محاسبة ومخازن وحملت دلفى دوت نت 2009 و عملت قواعد البيانات على sql server 2000

وليس هناك مشكلة في الربط ولكنى وجدت قلة في شرح ودروس دوت نت ففكرت في الرجوع الى دلفي 7

وكنت ارغب في البداية في عمل شجرة للحسابات

انتظر منك النصيحة وكيفية البدأ ولك شكري وتقديري

تم تعديل هذه المشاركة بواسطة okail في 9 فبراير 2009 في 21:58

#4

فهمت

دلفي 2009 اي حذفت winform :resentful: بقي win32 vcl.net :rose:

اخي لم تحدد اي دلفي

ولانك في منتدي الدلفي نت اذن انت تريد

اقتباس
كيف يمكن بالدلفي عرض الجدول في treeview
اقتباس
قلة في شرح ودروس دوت نت ففكرت في الرجوع الى دلفي 7

7 win32

:tantrum: لم افهم

تم تعديل هذه المشاركة بواسطة زكيري عبد العالي في 10 فبراير 2009 في 14:35

#5

أولا انا شاكر جداً مرورك وإهتمامك بي

بس حلمك علي أخ زكيري شكلك بتضربني الحين

الموضوع بسيط

انا ابغى البدأ بالبرمجة بالدلفي لعمل بداية برنامج محاسبة ومخازن

أي إصدار أفضل هل دلفي ( 7 ) أو( 2009 ) من حيث

-العمل تحت بيئة ويندوز

- عمل البرنامج على شبكة واستخدام قاعدة بيانات sql server 2000

-وفرة الدروس التي يمكن أن تساعدني على اتمام ذلك

ارجو لو إعطائي فكرة عن بداية الموضوع كيف اسوي كيف أضع الخطوة الأولى

حتى عند فتح مشروع جديد للغرض السابق الذكرة ما هي أفضل طرق اتصال هل ADO ام ماذا

-

ومرفق صورة من برنامج اريد عمل مثله (على فكرة البرنامج مصمم بدلفي 7 )

post-9554-1234272652_thumb.jpg

تم تعديل هذه المشاركة بواسطة okail في 10 فبراير 2009 في 16:41

#6
اقتباس
بس حلمك علي أخ زكيري شكلك بتضربني الحين

:nose_patch: :haha:

non non

#7

إن لم تفهم الإجابة التي في الروابط فساحاول تسهيلها بمرفق .

ولكن قبل دلك يجب ان نرى محاولتك .

الرابط الاول لاحظ الرابط رقم 18

الرابط الثاني

محمد

عزيزي :

لاتنسى ان تصلي على حبيبنا و شفيعنا يوم لا ينفع مال ولا بنون .

فاللهمّ صّل وسّلم على سيدي و شفيعي وحبيبي محمد عليك الف صلاة وازكى تسليم

*****

2_header.png

#8

مشكور mohfa

بالنسبة للرابط الثاني فقط وصلت إليه من قبل ولكن ارى أنه ليس المطلوب

اما الرابط الأول اطلع إليه الأن وأشكرك على سرعة مرورك

#9

السلام عليكم

تستطيع وبسهولة وباي اصدار من اصدارات الدلفي

انظر الى المرفق تم عمله باصدار 2009 ، وقد عملته سابقا بالاصدار السابع .

تم استخدام كمبوننت TVirtualStringTree لانه يدعم الاتجاه العربي 100% .

post-17168-1234280411_thumb.jpg

1
#10

السلام عليكم أبو محمد

رائع أبو محمد

و الله هذا هو المثال المطلوب

هلا شرحت لي كيفيه عمله أو إرفاق المثال لكي أتعلم

وجزاك الله عنا كل خير

#11

أبشر أنت آمر .

الأول نزل هذا الكمبوننت وهو مجاني TVirtualStringTree

الثاني قول لي كيف سويت جدول الحسابات بقاعدة البيانات .

#12

بالنسبة

الكمبوننت TVirtualStringTree

أحاول العثور عليه من أخر مشاركة ولكنى لم افلح حتى الأن وأكون شاكراً جداً إذا أرفقتها لي

أما عن الجدول

مرفق قاعدة بيانات sql 2000 بها الجدول

Databaes.rar

#13

ما عندي sql server يا ليت تكتب الحقول فقط او تضع اسكربت انشاءه .

#14
اقتباس
ستطيع وبسهولة وباي اصدار من اصدارات الدلفي
هدا اكيد اخي ابو محمد وكذلك

وبجميع لغات الدلفي الثلاثة WINFORM / VCL.NET / VCL.WIN32

انا لم اتحدث عن الاصدرا بل طلبت منه اي لغة لاني وجدت السؤال في منتدي الدلفي نت.

تم تعديل هذه المشاركة بواسطة زكيري عبد العالي في 10 فبراير 2009 في 21:12

#16
زكيري عبد العالي كتب:
هدا اكيد اخي ابو محمد وكذلك

وبجميع لغات الدلفي الثلاثة WINFORM / VCL.NET / VCL.WIN32

انا لم اتحدث عن الاصدرا بل طلبت منه اي لغة لاني وجدت السؤال في منتدي الدلفي نت.

بارك الله فيك اخي زكيري .

يبدو اني دخلت عرض في الموضوع واحدث ذلك سوء فهم .

فعذرا اخي الكريم لم انتبه للنقاش الذي دار بينكما ، انا قرأت السؤال وجاوبت مباشرة .

okail كتب:
أخيراً حصلت على الكمبوننت

http://www.softpedia.com/progDownload/Virt...oad-112548.html

تمام عليك ، بقي كتابة حقول الجداول لادلك على الطريقة .

#17

هلا أبو محمد

والله مشكور جداً مجهودكم أنت والأخ زكيري

أنشأت الجدول مرة أخرى على قاعدة بيانات أكسس

ومرفق صورة من الجدول الأصلي sql طبعاً هذا الجدول تم إنشاءه في برنامج من قبل وأنا اقتبست من الحقول بموافقة صاحبه طبعاً على أساس اني اريد أن أسوي برنامج شبيه به لكي أتعلم

post-9554-1234290785_thumb.jpg

acc.rar

#18

اخي العزيز بما انك جديد فيجب الإنتباه الى ان TVirtualStringTree مختلفة بالنسبة 98 % عن مكون ال TTreeView في الدلفي ومنها ان Nodes في ال TVirtualStringTree تصريحاتها مختلفة تماما عن ال TreeView العادية لانها Virtual فمثلا لا يمكنك إنشاء Nodes مع ال TVirtualStringTree في Design time ولكن فقط في ال Runtime .

انا هنا لااتحدث عن ال Derived Components من ال TVirtualStringTree وإنما عن TVirtualStringTree في حد ذاتها .

ماريد ان انوه اليه حاول قراءة ملف المساعدة للTVirtualStringTree

.

محمد

عزيزي :

لاتنسى ان تصلي على حبيبنا و شفيعنا يوم لا ينفع مال ولا بنون .

فاللهمّ صّل وسّلم على سيدي و شفيعي وحبيبي محمد عليك الف صلاة وازكى تسليم

*****

2_header.png

#19

السلام عليكم

أخوي الـ TVirtualStringTree مختلفة تماما TTreeView ولكن بها مميزات كثيرة جدا .

ما عندي وقت اشرح كامل وخصوصا ان معلوماتي بها قديمة جدا لها اكثر من 6 سنوات .

لكن ساعطيك اكواد قم بتجربتها وقراء المساعد لمعرفة طريقة التعامل معها .

أولا التصريح عنها يكون بهذا الشكل

type
  PNodeData = ^TNodeData;
  TNodeData = record
	Caption:	String;
	Image:	  Integer;
	id: Integer;
	level: Integer;
	end;

لاعطاء الNode قيمة يجب كتابة هذا الكود

procedure Tfr_acc.vstGetText(Sender: TBaseVirtualTree; Node: PVirtualNode;
  Column: TColumnIndex; TextType: TVSTTextType; var CellText: string);
var
  pData:	PNodeData;
begin
  pData	:= Sender.GetNodeData(Node);
  CellText := pData^.Caption;
end;

هذا الكود للتحكم بالوانها حسب الــ lev

procedure Tfr_acc.vstBeforeCellPaint(Sender: TBaseVirtualTree;
  TargetCanvas: TCanvas; Node: PVirtualNode; Column: TColumnIndex;
  CellPaintMode: TVTCellPaintMode; CellRect: TRect; var ContentRect: TRect);
var lev : Integer;
begin
lev := vst.GetNodeLevel(node);
  if lev = 0 then
  begin
  TargetCanvas.Brush.Color:= $00FFCD9B  ;
  TargetCanvas.FillRect(CellRect);
  end;
  if lev = 1 then
  begin
  TargetCanvas.Brush.Color:= $00D7FFD7  ;
  TargetCanvas.FillRect(CellRect);
  end;
  if lev = 2 then
  begin
  TargetCanvas.Brush.Color:= $00FFCD9B   ;
  TargetCanvas.FillRect(CellRect);
  end;
  if lev = 3 then
  begin
  TargetCanvas.Brush.Color:= $00E8E8FF  ;
  TargetCanvas.FillRect(CellRect);
  end;
  end;

اما بالنسبة لشجرةالحسابات يجب ان يكون لديك حقلين : Acc_id رقمي ويمثل رقم تسلسل الحساب . الثاني acc_parent ويمثل رقم حساب الاب .

الفكرة مشروحة بهذا الرابط للاخ العزيز Zaher

http://www.parmaja.com/forums/viewtopic.php?id=82

واطلع على هذا الكود ينفعك باذن الله .

procedure Tfr_acc.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 MyQuery1 do
  begin
	Close;
	SQL.Clear;
	sql.CommaText := 'select * from v_acc ';
	Open;
	e := RecordCount;
	Close;
	SQL.Add('where acc_parent = :p1 ');
	ParamByName('p1').Value := str;
	Open;
	First;
  end;
for t := 0 to MyQuery1.RecordCount-1 do
		begin
		str.Append(MyQuery1.FieldByName('acc_id').AsString);
		NodeT[x] := VST.AddChild(nil);
		pData := VST.GetNodeData(NodeT[x]);
		pdata^.Caption := MyQuery1.FieldByName('acc_name').AsString;
		x := x + 1;
		MyQuery1.Next;
		end;
for b := 0  to e-1 do
		begin
		i := i + 1;
		MyQuery1.Close;
		MyQuery1.ParamByName('p1').Value := str;
		MyQuery1.Open;
		MyQuery1.First;
		for t := 0 to MyQuery1.RecordCount-1 do
		begin
		str.Append(MyQuery1.FieldByName('acc_id').AsString);
		NodeT[x] := VST.AddChild(nodeT[y]);
		pData := VST.GetNodeData(NodeT[x]);
		pdata^.Caption :=  MyQuery1.FieldByName('acc_name').AsString;
		x := x + 1;
		MyQuery1.Next;
		end;
		y := y + 1;
		end;
vst.FullExpand(NIL);
vst.EndUpdate;
vst.Cursor := crdefault;
end;
#20

مشكور أخي أبو محمد

ان شاء الله أجرب الكود وأطلعك على النتيجة

#21
اقتباس
أخوي الـ TVirtualStringTree مختلفة تماما TTreeView ولكن بها مميزات كثيرة جدا .

اكيد

ولكن إستعمالها من طرف مستعمل جديد ياخذ وقت لكي يعرف كيف ينشئ ويستعمل Nodes ..... الخ

لانها كلها Virtual المكون لايعرف شئ في وقت البناء Design Time .

ولاتنسى Node(s) Size .

محمد

تم تعديل هذه المشاركة بواسطة mohfa في 11 فبراير 2009 في 19:56

عزيزي :

لاتنسى ان تصلي على حبيبنا و شفيعنا يوم لا ينفع مال ولا بنون .

فاللهمّ صّل وسّلم على سيدي و شفيعي وحبيبي محمد عليك الف صلاة وازكى تسليم

*****

2_header.png

#22

أخوي الـ TVirtualStringTree مختلفة تماما TTreeView ولكن بها مميزات كثيرة جدا .

ما عندي وقت اشرح كامل وخصوصا ان معلوماتي بها قديمة جدا لها اكثر من 6 سنوات .

لكن ساعطيك اكواد قم بتجربتها وقراء المساعد لمعرفة طريقة التعامل معها .

=======================

الاخ العزيز الفاضل ابو محمد

شكرا لمساعدتك

ولكنى فعلا انا عضو مبتدئ فى الدلفى

وشدنى موضوعTVirtualStringTree

وقرات ماكتبته انت فى الرد

لكنى فعلا لم افهم هذا الكومبوببت وكيفيه التعامل معه

ياريت ياريت تتكرم ويتسع صدرك

وترسل لى مثال للكومبونت

ويتم تعبئه هذا الكومبونت من جدول دليل الحساب من قاعده بيانات اكسيس

واكون شاكر فضلك فى هذه المساعده

تم تعديل هذه المشاركة بواسطة سلامه بيومى في 18 أكتوبر 2009 في 16:06

مواضيع مشابهة

عدد الزوار حالياً

المتواجدون خلال آخر دقيقتين · يتحدّث كل ٣٠ ثانية

—الإجمالي—أعضاء مسجّلون—زوار بدون تسجيل

جارٍ التحقق من المتواجدين…