הבנת פעולות גרירה ושחרור בדלפי

"גרור ושחרר" זה לחיצה ממושכת על עכבר מחשב כפתור העכבר, ואז שחרר את הכפתור כדי להפיל את האובייקט. דלפי מקלה על תכנות גרירה ושחרור ליישומים.

אתה יכול באמת לגרור ולשחרר מ / לאן שאתה רוצה, כמו מטופס אחד לשני, או מ- Windows Explorer ליישום שלך.

דוגמה לגרירה ושחרור

התחל פרויקט חדש והניח בקרת תמונה אחת על טופס. השתמש במפקח האובייקטים כדי לטעון תמונה (מאפיין תמונה) ואז הגדר את DragMode רכוש dmManual. ניצור תוכנית שתאפשר העברת זמן ריצה של בקרת TImage באמצעות גרור ושחרר טכניקה.

DragMode

רכיבים מאפשרים שני סוגים של גרירה: אוטומטית וידנית. דלפי משתמשת במאפיין DragMode כדי לשלוט כאשר המשתמש מסוגל לגרור את הפקד. ערך ברירת המחדל של מאפיין זה הוא dmManual, כלומר גרירת רכיבים סביב ה- אסור ליישום, אלא בנסיבות מיוחדות, שעלינו לכתוב עליה קוד מתאים. ללא קשר להגדרה של המאפיין DragMode, הרכיב ינוע רק אם ייכתב הקוד הנכון כדי למקם אותו מחדש.

OnDragDrop

האירוע שמזהה גרירה ושחרור נקרא אירוע OnDragDrop. אנו משתמשים בו כדי לציין מה אנו רוצים שיקרה כאשר המשתמש יפיל אובייקט. לכן, אם אנו רוצים להעביר רכיב (תמונה) למיקום חדש בטופס, עלינו לכתוב קוד עבור מטפל האירועים OnDragDrop של הטופס.

instagram viewer

פרמטר המקור של אירוע OnDragDrop הוא האובייקט שנשמט. סוג פרמטר המקור הוא TObject. כדי לגשת למאפיינים שלו, עלינו להעביר אותו לסוג הרכיב הנכון, שבדוגמא זו TImage.

קבל

עלינו להשתמש באירוע OnDragOver של הטופס כדי לאותת כי הטופס יכול לקבל את בקרת TImage שאנו רוצים להפיל עליו. למרות לקבל פרמטר ברירת מחדל ל- True, אם לא סופק מטפל באירועים OnDragOver, הפקד דוחה את האובייקט שנגרר (כאילו שהפרמטר Accept השתנה ל- False).

הרץ את הפרוייקט שלך, ונסה לגרור ולשחרר את התמונה שלך. שימו לב שהתמונה נשארת גלויה במיקומה המקורי בזמן הגרירה מצביע העכבר זז. איננו יכולים להשתמש בהליך OnDragDrop בכדי להפוך את הרכיב לבלתי נראה בעוד הגרירה מתרחשת מכיוון שתהליך זה נקרא רק לאחר שהמשתמש שומט את האובייקט (אם בכלל).

DragCursor

אם ברצונך לשנות את תמונת הסמן המוצגת כאשר נגרר הפקד, השתמש במאפיין DragCursor. הערכים האפשריים עבור המאפיין DragCursor זהים לערכים עבור נכס הסמן. אתה יכול להשתמש בסמנים מונפשים או כל מה שתרצה, כמו קובץ תמונה BMP או קובץ סמן CUR.

BeginDrag

אם DragMode הוא dmAutomatic, הגרירה מתחילה אוטומטית כאשר אנו לוחצים על כפתור העכבר עם הסמן בשלט. אם השארת את הערך של המאפיין DragMode של TImage כברירת מחדל של dmManual, עליך להשתמש בשיטות BeginDrag / EndDrag כדי לאפשר גרירת רכיב. דרך נפוצה יותר לגרירה ושחרור היא להגדיר את DragMode ל- dmManual ולהתחיל את הגרירה על ידי טיפול באירועי עכבר למטה.

כעת, נשתמש ב- Ctrl + MouseDown שילוב מקלדת כדי לאפשר גרירה להתקיים. הגדר תמונהDragMode חזור אל dmManual וכתוב את מטפל האירועים של MouseDown כך:

BeginDrag לוקח פרמטר בוליאני. אם אנו עוברים אמת (כמו בקוד זה), הגרירה מתחילה מייד; אם לא נכון, זה לא מתחיל עד שנעביר את העכבר למרחק קצר. זכור שהוא דורש את מקש ה- Ctrl.

instagram story viewer