الجديد

عرض شجرة الظاهري: دلفي 3rd الطرف المصدر المفتوح مكون

عرض شجرة الظاهري: دلفي 3rd الطرف المصدر المفتوح مكون

01 من 03

حول Virtual TreeView

عرض شجرة الظاهري

أي طريقة عرض شجرة مثل الغرض المكون هو عرض قائمة هرمية من العناصر. الأكثر شيوعًا الذي تستخدمه وترى كل يوم هو المستخدم في مستكشف Windows لعرض المجلدات (والمزيد) على نظام الملفات الخاص بك.

يأتي Delphi مع عنصر التحكم TTreeView الموجود في قسم "Win32" من لوحة الأدوات. المعرفة في وحدة ComCtrls ، يقوم TTreeView بمهمة لائقة تسمح لك بتقديم أي علاقة بين الوالدين والطفل لأي نوع من الكائنات.

تتكون كل عقدة في TTreeView من تسمية وصورة نقطية اختيارية ويصف كائن TTreeNode عقدة فردية في عنصر تحكم TTreeView.

على الرغم من كونه قوياً بما يكفي لمعظم المهام إذا كان تطبيقك يعتمد على عرض البيانات الهرمية ، مثل المجلدات والملفات ، وهيكل XML ، وأي شيء على حد سواء ، فسوف تدرك قريبًا أنك بحاجة إلى مزيد من الطاقة من طريقة عرض الشجرة مثل المكون.

هذا هو المكان الذي يتم فيه إنقاذ أحد مكونات العالم الثالث للمكونات: مكون Virtual TreeView.

TreeView الظاهري

يعد Virtual TreeView ، الذي تم تطويره في البداية بواسطة Mike Lischke والذي تتم صيانته حاليًا كمشروع مفتوح المصدر على Google Code ، عنصر تحكم يجب استخدامه إذا كنت على استعداد للعمل مع أي شيء يمكن أن تسميه "العقد".

مع أكثر من 13 عامًا في التطوير ، يعد Virtual TreeView واحدًا من أكثر مكونات المصادر المفتوحة مرونة ومرونة وتقدماً لسوق دلفي.

لا تهتم بإصدار Delphi الذي تستخدمه من Delphi 7 إلى أحدث إصدار (XE3 في الوقت الحالي) ، فستتمكن من استخدام قوة TVirtualStringTree و TVirtualDrawTree (الأسماء الفعلية لعناصر التحكم) في تطبيقاتك.

فيما يلي بعض الميزات "لماذا تستخدم" لعنصر تحكم Virtual TreeView:

  • ذاكرة القدم صغيرة جدا الطباعة.
  • سريع جدا.
  • بمعنى افتراضي ، لا يعرف عن البيانات التي يديرها فقط الحجم. كل شيء يتم عبر الأحداث.
  • يدعم وجهات نظر متعددة الأعمدة
  • تخصيص سهل للعقدة مع الصور النقطية وأنماط الخطوط.
  • السحب والإسقاط ودعم الحافظة
  • يمكن أن يكون لكل عقدة في الشجرة نوع الاختيار الخاص بها (حتى الفحص الجزئي ثلاثي الحالة المختلط).
  • تسلسل محتوى شجرة متطور.
  • تحرير بيانات الشجرة باستخدام برامج تحرير المعرفة.

مع هذه المقالة ، أبدأ سلسلة من المقالات حول كيفية استخدام أسلوب TVirtualStringTree.

للبدء ، دعونا نرى كيفية تثبيت Virtual TreeView في IDE دلفي.

02 من 03

كيفية تثبيت Virtual Tree

TreeView الظاهري

أولاً ، قم بتنزيل حزمة Virtual TreeView الرئيسية (ضمن "التنزيلات").

ستقوم بتنزيل ملف ZIP يحتوي على الكود المصدري ، وحزم لتثبيت المكون في دلفي ، وبعض العروض التجريبية وبعض الأشياء الأخرى.

قم بفك ضغط محتوى الأرشيف إلى بعض المجلدات التي تحتوي على مكونات الطرف الثالث الأخرى. أنا أستخدم "C: Users Public Documents Delphi3rd " وبالنسبة لي الموقع هو "C: Users Public Documents Delphi3rd VirtualTreeviewV5.1.0"

إليك طريقة تثبيت Virtual TreeView في دلفي XE3 / RAD Studio XE3

  1. افتح مجموعة المشروع "Packages RAD Studio XE2 RAD Studio XE3.groupproj".
  2. انقر بزر الماوس الأيمن فوق "VirtualTreesD16.bpl" وانقر فوق "تثبيت".
  3. اذهب إلى "الأدوات> الخيارات> خيارات البيئة> خيارات دلفي> المكتبة> مسار المكتبة> ...". استعرض للوصول إلى مجلد "المصدر" في Virtual TreeView ، اضغط على "موافق" ، "إضافة" ، "موافق" ، "موافق"
  4. احفظ المشروع ملف - أغلق الكل.

بمجرد التثبيت ، ستجد ثلاثة مكونات في قسم "عناصر التحكم الافتراضية" في لوحة الأدوات:

  • TVirtualStringTree - عنصر التحكم الرئيسي الذي ستستخدمه - يدير تعليق العقدة بمفرده.
  • TVirtualDrawTree - يسمح للتطبيق برسم الأشياء الخاصة به في إطار الشجرة.
  • TVTHeaderPopupMenu - يوفر طريقة ملائمة لتطبيق نافذة منبثقة للرأس تُستخدم لتبديل رؤية الأعمدة.
03 من 03

الظاهري TreeView "مرحبا العالم" مثال

TreeView الظاهري

بمجرد تثبيت حزمة Virtual TreeView في ID Delphi / Rad Studio ، فلنشغل المشروع النموذجي من الحزمة التي تم تنزيلها لمعرفة ما إذا كان كل شيء يعمل أم لا.

قم بتحميل المشروع الموجود ضمن " Demos Minimal " ، اسم المشروع هو "Minimal.dpr".

يركض.

تعرف على مدى سرعة إضافة مئات (حتى الآلاف) من العقد كعقد فرعية إلى واحدة محددة. أخيرًا ، إليك شفرة المصدر (تطبيق مهم) لمثال "hello world" هذا:

التنفيذ
نوع
PMyRec = ^ TMyRec؛
TMyRec = سجل
التسمية التوضيحية: WideString.
النهاية؛
الإجراء TMainForm.FormCreate (المرسل: TObject) ؛
ابدأ
VST.NodeDataSize: = SizeOf (TMyRec) ؛
VST.RootNodeCount: = 20؛
النهاية؛
الإجراء TMainForm.ClearButtonClick (المرسل: TObject) ؛
فار
البداية: الكاردينال.
ابدأ
Screen.Cursor: = crHourGlass؛
محاولة
ابدأ: = GetTickCount؛
VST.Clear.
Label1.Caption: = Format ('مدة العملية الأخيرة:٪ d ms' ، GetTickCount - Start) ؛
أخيرا
Screen.Cursor: = crDefault؛
النهاية؛
النهاية؛
الإجراء TMainForm.AddButtonClick (المرسل: TObject) ؛
فار
العد: الكاردينال.
البداية: الكاردينال.
ابدأ
Screen.Cursor: = crHourGlass؛
مع VST dotry
ابدأ: = GetTickCount؛
حالة (المرسل كما TButton)
0: // add to rootbegin
عدد: = StrToInt (Edit1.Text) ؛
RootNodeCount: = عدد RootNodeCount + ؛
النهاية؛
1: // add as childif Assigned (FocusedNode) thenbegin
عدد: = StrToInt (Edit1.Text) ؛
ChildCountFocusedNode: = ChildCountFocusedNode + Count؛
ExpandedFocusedNode: = True؛
InvalidateToBottom (FocusedNode)؛
النهاية؛
النهاية؛
Label1.Caption: = Format ('مدة العملية الأخيرة:٪ d ms' ، GetTickCount - Start) ؛
أخيرا
Screen.Cursor: = crDefault؛
النهاية؛
النهاية؛
الإجراء TMainForm.VSTFreeNode (المرسل: TBaseVirtualTree ؛ العقدة: PVirtualNode) ؛
فار
البيانات: PMyRec؛
ابدأ
البيانات: = Sender.GetNodeData (عقدة) ؛
وضع الصيغة النهائية (بيانات ^)؛
النهاية؛
الإجراء TMainForm.VSTGetText (المرسل: TBaseVirtualTree ؛ العقدة: PVirtualNode ؛ العمود: TColumnIndex ؛ TextType: TVSTTextType؛ var CellText: string)؛
فار
البيانات: PMyRec؛
ابدأ
البيانات: = Sender.GetNodeData (عقدة) ؛
إذا تم التعيين (البيانات) ثم
CellText: = Data.Caption؛
النهاية؛
الداخلي TMainForm.VSTInitNode (المرسل: TBaseVirtualTree ؛ ParentNode ، العقدة: PVirtualNode ؛ var InitialStates: TVirtualNodeInitStates)؛
فار
البيانات: PMyRec؛
تبدأ مع المرسل dobegin
البيانات: = GetNodeData (عقدة) ؛
Data.Caption: = Format ('Level٪ d، Index٪ d'، GetNodeLevel (Node)، Node.Index)؛
النهاية؛
النهاية؛

شاهد الفيديو: أبرز البطولات التي حصل عليها شادي الظاهري في عالم استعراض الدراجات النارية (أبريل 2020).