أساسيات الحافظة (قص / نسخ / لصق)

click fraud protection

تمثل حافظة Windows الحاوية لأي نص أو رسومات يتم قصها أو نسخها أو لصقها من أو إلى تطبيق. ستوضح لك هذه المقالة كيفية استخدام كائن TClipboard لتنفيذ ميزات قص النسخ واللصق في تطبيق دلفي الخاص بك.

الحافظة بشكل عام

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

TClipboard

لاستخدام حافظة Windows في تطبيقاتنا ، يجب أن نضيف وحدة ClipBrd إلى فقرة استخدامات المشروع ، باستثناء عندما نقوم بتقييد القطع والنسخ واللصق على المكونات التي تمتلك بالفعل دعمًا مدمجًا لطرق الحافظة. هذه المكونات هي TEdit و TMemo و TOLEContainer و TDDEServerItem و TDBEdit و TDBImage و TDBMemo.

تمثل وحدة ClipBrd تلقائيًا كائن TClipboard يسمى الحافظة. سنستخدم CutToClipboard, نسخ إلى الحافظة, لصق من الحافظة, واضح و HasFormat طرق التعامل مع عمليات الحافظة ومعالجة النصوص / الرسوم البيانية.

إرسال واسترداد النص

instagram viewer

لإرسال بعض النص إلى الحافظة ، يتم استخدام خاصية AsText لكائن الحافظة. إذا أردنا ، على سبيل المثال ، إرسال خيط المعلومات الواردة في المتغير SomeStringData إلى الحافظة (مسح أي نص كان موجودًا) ، سنستخدم الكود التالي:

الاستخدامات ClipBrd ؛ ...
الحافظة. AsText: = SomeStringData_Variable؛ 

لاسترداد معلومات النص من الحافظة سنستخدمها

الاستخدامات ClipBrd ؛ ...
SomeStringData_Variable: = الحافظة. AsText ؛ 

ملاحظة: إذا أردنا فقط نسخ النص من ، دعنا نقول ، تحرير المكون إلى الحافظة ، فلن نضطر إلى تضمين وحدة ClipBrd في عبارة الاستخدامات. تقوم طريقة CopyToClipboard الخاصة بـ TEdit بنسخ النص المحدد في عنصر تحكم التحرير إلى الحافظة بتنسيق CF_TEXT.

إجراء TForm1.Button2Click (المرسل: TObject) ؛ ابدأ// السطر التالي سيحدد // ALL النص في عنصر تحكم التحرير {Edit1.SelectAll؛} تحرير 1. نسخة إلى لوحة ؛ النهاية; 

صور الحافظة

لاسترداد الصور الرسومية من الحافظة ، يجب أن تعرف دلفي نوع الصورة المخزنة هناك. وبالمثل ، لنقل الصور إلى الحافظة ، يجب على التطبيق إخبار الحافظة بنوع الرسومات التي يرسلها. تتبع بعض القيم الممكنة لمعلمة التنسيق ؛ هناك العديد من تنسيقات الحافظة التي يوفرها Windows.

  • CF_TEXT - نص ينتهي كل سطر بـ CR-LF مزيج.
  • CF_BITMAP - رسم نقطي لـ Windows.
  • CF_METAFILEPICT - رسم ملف تعريف Windows.
  • CF_PICTURE - كائن من نوع TPicture.
  • CF_OBJECT - أي شيء مستمر.

ترجع طريقة HasFormat True إذا كانت الصورة في الحافظة بها التنسيق الصحيح:

إذا الحافظة. HasFormat (CF_METAFILEPICT) ثم ShowMessage ("يحتوي الحافظة على ملف تعريف") ؛ 

استخدم طريقة التعيين لإرسال (تخصيص) صورة إلى الحافظة. على سبيل المثال ، تقوم التعليمات البرمجية التالية بنسخ الصورة النقطية من كائن صورة نقطية يسمى MyBitmap إلى الحافظة:

 الحافظة. تعيين (MyBitmap) ؛ 

بشكل عام ، MyBitmap هو كائن من نوع TGraphics أو TBitmap أو TMetafile أو TPicture.

لاسترداد صورة من الحافظة ، يتعين علينا: التحقق من تنسيق المحتويات الحالية من الحافظة واستخدام طريقة تعيين الكائن الهدف:

{ضع زرًا واحدًا وتحكمًا واحدًا بالصورة في form1} {قبل تنفيذ هذا الرمز ، اضغط على Alt-PrintScreen key تركيبة}الاستخدامات Clipbrd ؛... إجراء TForm1.Button1Click (المرسل: TObject) ؛ ابدأإذا الحافظة. HasFormat (CF_BITMAP) ثم صورة 1. صورة. صورة نقطية. تعيين (الحافظة) ؛ النهاية؛ 

المزيد من التحكم في الحافظة

تقوم الحافظة بتخزين المعلومات بتنسيقات متعددة حتى نتمكن من نقل البيانات بين التطبيقات باستخدام تنسيقات مختلفة. عند قراءة المعلومات من الحافظة مع فئة TClipboard من Delphi ، فنحن مقيدون بتنسيقات الحافظة القياسية: النص والصور وملفات التعريف.

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

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

للاستمتاع بمزيد من المرونة والوظائف ، من الضروري التعامل مع إعلامات تغيير الحافظة وتنسيقات الحافظة المخصصة - الاستماع إلى الحافظة.

instagram story viewer