צור הדגשת צבע העברת העכבר באמצעות דלפי

האם ראית אי פעם תפריט או עמודה בטבלה או שורה מודגשת לצבע אחר כאשר העכבר מרחף מעליו? זה מה שהמטרה שלנו היא כאן: להאיר את השורה כאשר מצביע העכבר נמצא בטווח הטווח.

רכיב ה- TDBGrid Delphi הוא אחד מהתכשיטים של ה- VCL. DBGrid נועד לאפשר למשתמש להציג ולערוך נתונים ברשת טבלאית, ומספק דרכים שונות להתאים אישית את האופן בו הוא מייצג את הנתונים שלו. לדוגמה, הוספת צבע לרשתות הנתונים שלך תשפר את המראה ותבדיל את החשיבות של שורות או עמודות מסוימות במסד הנתונים.

עם זאת, אל תשתולל על ידי הדרכות פשטניות יתר בנושא זה. זה אולי נראה די קל רק להגדיר את ה- dgRowSelect רכוש, אך זכרו מתי dgRowSelect כלול ב- אפשרויות, ה dg עריכה מתעלמים מהדגל, כלומר עריכת הנתונים באמצעות הרשת אינה זמינה.

מה שתמצא בהמשך הוא הסבר כיצד לאפשר את ה- OnMouseOver סוג של אירוע לשורה של DBGrid, כך שהעכבר מוקלט וממוקם, מה שהופך את הרשומה לפעילה כדי להדגיש את השורה המתאימה ב- DBGrid.

כיצד לעבוד עם רכיבי OnMouseOver ודלפי

הסדר הראשון של העסק הוא כתיבת קוד בשביל ה OnMouseMove אירוע ברכיב TDBGrid כך שהוא יכול לאתר את השורה והעמודה (התא) של DBGrid עליהם העכבר מרחף.

instagram viewer

אם העכבר מעבר לרשת (מטופלים ב- OnMouseMove מטפל באירועים), אתה יכול להשתמש ב- MoveBy שיטת רכיב DataSet להגדרת הרשומה הנוכחית לזו המוצגת "מתחת" לסמן העכבר.

סוג THackDBGrid = מעמד(TDBGrid);
...
תהליך TForm1.DBGrid1MouseMove
(שולח: נושא; Shift: TShiftState; X, Y: מספר שלם);
var
gc: TGridCoord;
התחל
gc: = DBGrid1.MouseCoord (x, y);
אם (gc. X> 0) ו (gc. Y> 0) אז התחיל
DBGrid1.DataSource. DataSet. MoveBy
(gc. Y - THackDBGrid (DBGrid1). שורה);
סוף;
סוף;

ניתן להשתמש בקוד דומה כדי להראות לאיזה תא העכבר מרחף ולשינוי הסמן כשהוא מעל סרגל הכותרת.

על מנת להגדיר נכון את הרשומה הפעילה, אתה צריך לפרוץ DBGrid ולקבל את הידיים על המוגן שורה תכונה. ה שורה רכוש של א TCustomDBGrid הרכיב מכיל את ההתייחסות לשורה הפעילה כרגע.

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

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

יש להדגיש את השורה הפעילה כדי לשפר את חווית המשתמש:

תהליך TForm1.DBGrid1DrawColumnCell
(שולח: נושא; const Rect: TRect; DataCol: מספר שלם;
עמודה: TColumn; מדינה: TGridDrawState);
התחלה (THackDBGrid (DBGrid1). DataLink. ActiveRecord + 1 =
THackDBGrid (DBGrid1). שורה)
או (gd ממוקד במדינה) או (gd שנבחר במדינה) אז התחיל
DBGrid1.Canvas. מברשת. צבע: = clSkyBlue;
DBGrid1.Canvas. גופן. סגנון: = DBGrid1. בד. גופן. סגנון + [fs מודגש];
DBGrid1.Canvas. גופן. צבע: = clRed;
סוף;
סוף;

ה OnDrawColumnCell אירוע משמש לטיפול בצורך ברישום מותאם אישית עבור הנתונים בתאי הרשת.

ניתן להשתמש בטריק קטן כדי להבדיל את השורה שנבחרה מכל שאר השורות. קחו בחשבון שה- שורה תכונה (מספר שלם) שווה ל- ActiveRecord (+1) רכוש של קישור למידע אובייקט שהשורה שנבחרה עומדת לצבוע.

סביר להניח שתרצה להשבית התנהגות זו (ה- MoveBy שיטה ב OnMouseMove מטפל באירועים) מתי DataSet המחובר ל- DBGrid נמצא ב ערוך או הכנס מצב.

instagram story viewer