نصائح

استخدم ملف Delphi وعناصر التحكم في الدليل لتقليد مستكشف Windows

استخدم ملف Delphi وعناصر التحكم في الدليل لتقليد مستكشف Windows

مستكشف Windows هو ما تستخدمه في نظام التشغيل Windows لاستعراض الملفات والمجلدات. يمكنك إنشاء بنية مماثلة مع دلفي بحيث يتم ملء المحتوى نفسه داخل واجهة مستخدم البرنامج.

تستخدم مربعات الحوار الشائعة في دلفي لفتح ملف وحفظه في تطبيق ما. إذا كنت تريد استخدام مديري الملفات المخصصين ومربعات حوار تصفح الدليل ، فيجب عليك التعامل مع مكونات نظام دلفي للملفات.

تتضمن مجموعة لوحات Win 3.1 VCL العديد من المكونات التي تسمح لك بإنشاء مربع الحوار "فتح ملف" أو "حفظ ملف" المخصص الخاص بك: TFileListBox, TDirectoryListBox, TDriveComboBoxو TFilterComboBox.

تصفح الملفات

تسمح لنا مكونات نظام الملفات بتحديد محرك الأقراص ، والاطلاع على هيكل الدليل الهرمي للقرص ، ورؤية أسماء الملفات الموجودة في دليل محدد. جميع مكونات نظام الملفات مصممة للعمل معًا.

على سبيل المثال ، يتحقق الرمز الخاص بك من ما قام به المستخدم ، على سبيل المثال ، DriveComboBox ثم يقوم بتمرير هذه المعلومات إلى DirectoryListBox. ثم يتم تمرير التغييرات في DirectoryListBox إلى FileListBox حيث يمكن للمستخدم تحديد الملف (الملفات) المطلوب.

تصميم نموذج الحوار

بدء تطبيق Delphi جديد وحدد علامة التبويب Win 3.1 من لوحة المكونات. ثم قم بما يلي:

  • ضع مكون TFileListBox و TDirectoryListBox و TDriveComboBox و TFilterComboBox واحدًا في نموذج ، مع الاحتفاظ بجميع أسمائهم الافتراضية
  • أضف TEdit واحد (المسمى "FileNameEdit") و TLabel واحد (يطلق عليه "DirLabel").
  • قم بتضمين عدد قليل من التسميات التي تحتوي على تسميات توضيحية ، مثل "اسم الملف" و "الدليل" و "قائمة أنواع الملفات" و "محركات الأقراص".

لإظهار المسار المحدد حاليًا كسلسلة في شرح مكونات DirLabel ، قم بتعيين اسم العلامة إلى DirectoryListBox الممتلكات DirLabel.

إذا كنت ترغب في عرض اسم الملف المحدد في EditBox (FileNameEdit) ، يجب عليك تعيين اسم تحرير الكائن (FileNameEdit) إلى FileListBox's خاصية FileEdit.

المزيد من خطوط الشفرة

عندما يكون لديك جميع مكونات نظام الملفات في النموذج ، يجب عليك فقط تعيين خاصية DirectoryListBox.Drive وخاصية FileListBox.Directory لكي تتمكن المكونات من التواصل وإظهار ما يريد المستخدم رؤيته.

على سبيل المثال ، عندما يختار المستخدم محرك أقراص جديد ، يقوم دلفي بتنشيط محرك الأقراص DriveComboBox OnChange معالج الأحداث. اجعلها تبدو كما يلي:

 إجراء TForm1.DriveComboBox1Change (Sender: TObject)؛
ابدأ
DirectoryListBox1.Drive: = DriveComboBox1.Drive؛
النهاية
;

هذا الرمز يغير العرض في DirectoryListBox عن طريق تفعيل لها على التغيير معالج الحدث:

 إجراء TForm1.DirectoryListBox1Change (Sender: TObject)؛
ابدأ
FileListBox1.Directory: = DirectoryListBox1.Directory؛
النهاية
;

لمعرفة الملف الذي حدده المستخدم ، يلزمك استخدام الملف OnDblClick حدث لل FileListBox:

 إجراء TForm1.FileListBox1DblClick (Sender: TObject)؛
ابدأ
Showmessage ('المحدد:' + FileListBox1.FileName) ؛
النهاية;

تذكر أن اتفاقية Windows هي النقر نقرًا مزدوجًا فوق اختيار الملف وليس نقرة واحدة. هذا مهم عند العمل مع FileListBox لأن استخدام مفتاح سهم للتنقل عبر FileListBox سوف يستدعي أي معالج OnClick كتبته.

تصفية العرض

استخدم FilterComboBox للتحكم في نوع الملفات التي يتم عرضها في FileListBox. بعد تعيين خاصية FileList الخاصة بـ FilterComboBox إلى اسم FileListBox ، قم بتعيين خاصية Filter على أنواع الملفات التي تريد عرضها.

إليك مرشح عينة:

FilterComboBox1.Filter: = 'كافة الملفات (*. *) | *. * | ملفات المشروع (* .dpr) | * .dpr | وحدات Pascal (* .pas) | * .pas '؛

تلميحات ونصائح

يمكن أيضًا إعداد خاصية DirectoryListBox.Drive وخاصية FileListBox.Directory (في معالجات أحداث OnChange المكتوبة سابقًا) في وقت التشغيل أيضًا في وقت التصميم. يمكنك إنجاز هذا النوع من الاتصال في وقت التصميم عن طريق تعيين الخصائص التالية (من Object Inspector):

DriveComboBox1.DirList: = DirectoryListBox1
DirectoryListBox1.FileList: = FileListBox1

يمكن للمستخدمين تحديد ملفات متعددة في FileListBox إذا كانت الخاصية MultiSelect الخاصة بها هي True. توضح التعليمة البرمجية التالية كيفية إنشاء قائمة اختيارات متعددة في FileListBox وإظهاره في SimpleListBox (بعض عناصر التحكم ListBox "العادية").

فار ك: عدد صحيح ؛ ...
مع
FileListBox1 فعل
إذا
SelCount> 0 ثم
إلى عن على
k: = 0 إلى Items.Count-1 فعل
إذا
Selectedk ثم
SimpleListBox.Items.Add (Itemsk)؛

لعرض أسماء المسار الكامل التي لم يتم تقصيرها باستخدام علامة القطع ، لا تقم بتعيين اسم كائن تسمية إلى خاصية DirLabel الخاصة بـ DirectoryListBox. بدلاً من ذلك ، إدراج تسمية في نموذج وتعيين خاصية التسمية التوضيحية الخاصة به في الحدث OnChange DirectoryListBox إلى الخاصية DirectoryListBox.Directory.

شاهد الفيديو: برمجة برنامج بسيط بدلفي. طريقة إستخدام قائمة المنبثقة. PopupMenu - في الدلفي -delphi (أبريل 2020).