לוח הלוח של Windows מייצג את המיכל עבור כל טקסט או גרפיקה שנחתכים, מועתקים או מודבקים מיישום או ליישום. מאמר זה יראה לכם כיצד להשתמש באובייקט TClipboard ליישום תכונות להדבקת העתקה חתוך ביישום דלפי שלכם.
הלוח באופן כללי
כפי שאתה בטח יודע, הלוח יכול להכיל רק חתיכה אחת מאותו סוג נתונים לגזירה, העתקה והדבקה בפעם אחת. אם אנו שולחים מידע חדש באותה פורמט ללוח, אנו נמחק את מה שהיה שם קודם, אבל את תוכן הלוח נשאר עם הלוח גם לאחר שאנחנו מדביקים את התוכן בתוכנה אחרת.
לוח TClipboard
על מנת להשתמש בלוח של Windows ביישומים שלנו, עלינו להוסיף את ה- יחידת ClipBrd לסעיף השימושים של הפרויקט, למעט כאשר אנו מגבילים חיתוך, העתקה והדבקה לרכיבים שכבר יש להם תמיכה מובנית לשיטות הלוח. רכיבים אלה הם TEdit, TMemo, TOLEContainer, TDDEServerItem, TDBEdit, TDBImage ו- TDBMemo.
יחידת ClipBrd מייצגת אוטומטית אובייקט TClipboard שנקרא Clipboard. אנו נשתמש ב- CutToClipboard, העתק ללוח, PasteFromClipboard, ברור ו HasFormat שיטות להתמודדות עם פעולות הלוח ומניפולציה טקסט / גרפי.
שלח ואחזר טקסט
על מנת לשלוח טקסט ללוח, נעשה שימוש במאפיין AsText של אובייקט הלוח. אם אנו רוצים למשל לשלוח את ה-
מחרוזת מידע הכלול במשתנה SomeStringData ללוח (מחיקת כל טקסט שהיה שם), נשתמש בקוד הבא:שימושים ClipBrd; ...
הלוח. AsText: = SomeStringData_Variable;
כדי לאחזר את מידע הטקסט מהלוח נשתמש
שימושים ClipBrd; ...
SomeStringData_Variable: = לוח. AsText;
הערה: אם אנו רוצים רק להעתיק את הטקסט, נניח, ערוך רכיב ללוח, איננו חייבים לכלול את יחידת ClipBrd לסעיף השימושים. שיטת CopyToClipboard של TEdit מעתיקה את הטקסט שנבחר בפקד העריכה ללוח בפורמט CF_TEXT.
תהליך TForm1.Button2Click (שולח: TObject); התחל// השורה הבאה תבחר // כל הטקסט שבבקרת העריכה {Edit1.SelectAll;} Edit1.CopyToClipboard; סוף;
תמונות הלוח
כדי לאחזר תמונות גרפיות מהלוח, דלפי חייבת לדעת איזה סוג תמונה מאוחסן שם. באופן דומה, כדי להעביר תמונות ללוח, על היישום לומר ללוח איזה סוג גרפיקה היא שולחת. להלן כמה מהערכים האפשריים של פרמטר Format; ישנם עוד פורמטים רבים של הלוח המסופקים על ידי Windows.
- CF_TEXT - טקסט עם כל שורה שמסתיימת ב- CR-LF שילוב.
- CF_BITMAP - גרפיקה של מפת סיביות של Windows.
- CF_METAFILEPICT - גרפיקה מטאפילית של Windows.
- CF_PICTURE - אובייקט מסוג TPicture.
- CF_OBJECT - כל חפץ מתמשך.
שיטת HasFormat מחזירה נכון אם לתמונה בלוח יש את הפורמט הנכון:
אם הלוח. HasFormat (CF_METAFILEPICT) לאחר מכן ShowMessage ('הלוח כולל metafile');
השתמש בשיטת הקצה כדי לשלוח (להקצות) תמונה ללוח. לדוגמה, הקוד הבא מעתיק את מפת הסיביות מאובייקט מפת סיביות בשם MyBitmap ללוח:
הלוח. הקצה (MyBitmap);
באופן כללי MyBitmap הוא אובייקט מסוג TGraphics, TBitmap, TMetafile או TPicture.
כדי לאחזר תמונה מהלוח עלינו: לאמת את הפורמט של התוכן הנוכחי של הלוח ולהשתמש בשיטת הקצה של אובייקט היעד:
{מקם כפתור אחד ובקרת תמונה אחת בטופס 1} {לפני ביצוע קוד זה, לחץ על שילוב מקשים Alt-PrintScreen}שימושים clipbrd;... תהליך TForm1.Button1Click (שולח: TObject); התחלאם הלוח. HasFormat (CF_BITMAP) לאחר מכן תמונה1.תמונה. מפת סיביות. הקצה (לוח); סוף;
בקרת לוח יותר
הלוח מאחסן מידע בפורמטים מרובים כך שנוכל להעביר נתונים בין יישומים באמצעות פורמטים שונים. כאשר אנו קוראים מידע מהלוח בשיעור TClipboard של דלפי, אנו מוגבלים לפורמטים של הלוח הרגיל: טקסט, תמונות ומטאפיות.
נניח שאתה עובד בין שני אפליקציות דלפי שונות; כיצד היית מגדיר פורמט לוח לוח מותאם אישית על מנת לשלוח ולקבל נתונים בין שתי התוכניות הללו? לצורך הבדיקה, נניח שאתה מנסה לקוד הדבק פריט בתפריט. אתה רוצה שהוא יושבת כשאין טקסט בלוח (כמופע).
מכיוון שכל התהליך עם הלוח מתרחש מאחורי הקלעים, אין שיטה של מחלקת TClipboard שתיידע אותך מתי התרחש שינוי כלשהו בתוכן הלוח. הרעיון הוא לחבר את מערכת ההודעות של הלוח, כך שתוכלו לגשת לאירועים ולהגיב להם כאשר הלוח משתנה.
בכדי ליהנות מגמישות ופונקציונליות רבה יותר, יש צורך בהתמודדות עם התראות על שינוי לוח הלוחות ותבניות הלוח המותאמות אישית - האזנה ללוח.