דלפי DBGrid הוא רכיב כל כך חזק שאתה כנראה משתמש בו כל יום אם אתה מפתח יישומים מודעים לנתונים. להלן, נסקור כיצד להוסיף עוד כמה תכונות ליישומי בסיס הנתונים שלך, שהמשתמשים שלך בטוחים שאוהבים.
בעקבות המושגים המתוארים בסעיף מדריך למתחילים לתכנות בסיסי נתונים של דלפיהדוגמאות שלהלן משתמשות ברכיבי ADO (AdoQuery / AdoTable המחוברים ל- ADOConnection, DBGrid המחובר ל- AdoQuery באמצעות DataSource) כדי להציג את רשומות מטבלת מסד נתונים ברכיב DBGrid.
כל שמות הרכיבים הושארו כשדלפי כינה אותם כשנשמטו על הטופס (DBGrid1, ADOQuery1, AdoTable1 וכו ').
עכבר עובר על אזור הכותרת של DBGrid
ראשית, בואו נראה כיצד לשנות את מצביע העכבר בזמן שהוא עובר על שטח הכותרת של DBGrid. כל שעליכם לעשות הוא להוסיף את הקוד לאירוע OnMouseMove עבור רכיב DBGrid.
הקוד למטה פשוט משתמש במאפיין MouseCoord של רכיב DBGrid כדי "לחשב" היכן מצביע העכבר. אם זה מעבר לאזור הכותר DGBrid, pt.y שווה ל 0, שהיא השורה הראשונה ב- DBGrid (אזור הכותרת המציג כותרות עמודות / שדות).
תהליך TForm1.DBGrid1MouseMove
(שולח: נושא; Shift: TShiftState; X, Y: מספר שלם);
var
pt: TGridcoord;
התחל
pt: = DBGrid1.MouseCoord (x, y);
אם pt.y = 0 לאחר מכן
DBGrid1. סמן: = crHandPoint
אחר
DBGrid1. סמן: = crDefault;
סוף;
מיין על העמודה לחץ ושנה את גופן כותרת העמודה
אם אתה משתמש בגישה ADO לפיתוח מסד הנתונים של דלפי, ואתה מעוניין למיין את הרשומות בנתון הנתונים, עליך להגדיר את המאפיין מיין של AdoDataset שלך (ADOQuery, AdoTable).
המאפיין מיין הוא הערך הרחב ביותר המציין את החלק "סדר על ידי" בשאילתת SQL הסטנדרטית. כמובן, אינך צריך לכתוב את שאילתת SQL כדי שתוכל להשתמש במאפיין מיין. כל שעליך לעשות הוא להגדיר את המאפיין מיון לשם של שדה בודד או לרשימת שדות מופרדת בפסיקים, כל אחד אחר לפי סדר המיון.
להלן דוגמא:
ADOTable1.Sort: = 'שנת DESC, מאמר תאריך ASC'
לאירוע OnTitleClick של רכיב DBGrid יש פרמטר עמודה המציין את העמודה עליה לחץ על המשתמש. לכל טור (אובייקט מסוג TColumn) יש מאפיין שדה המציין את השדה (TField) המיוצג על ידי העמודה והשדה בנכס ה- FieldName שלו מחזיק את שם השדה בבסיס מערך נתונים.
לכן, כדי למיין מערך נתונים של ADO לפי שדה / עמודה, ניתן להשתמש בשורה פשוטה:
עם TCustomADODataSet (DBGrid1.DataSource. DataSet) לעשות
מיין: = טור. שדה. שם שדה; // + 'ASC' או 'DESC'
להלן הקוד של המטפל אפילו ב- OnTitleClick שממיין את הרשומות על ידי לחיצה על עמודה. הקוד, כמו תמיד, מרחיב את הרעיון.
ראשית, אנו רוצים, באופן כלשהו, לסמן את העמודה המשמשת כיום לסדר מיון. בשלב הבא, אם נלחץ על כותרת עמודה וערכת הנתונים כבר ממוינת לפי אותה עמודה, אנו רוצים לשנות את סדר המיון מ- ASC (עולה) ל- DESC (יורד), ולהיפך. לבסוף, כאשר אנו ממיינים את מערך הנתונים לפי עמודה אחרת, אנו רוצים להסיר את הסימן מהעמודה שנבחרה קודם.
לשם הפשטות, כדי לסמן את העמודה ש"ממיינת "את הרשומות, אנו פשוט נשנה את סגנון הגופן של כותרת העמודה ל'מודגש ', ונסיר אותה כאשר מערך הנתונים ממוין באמצעות עמודה אחרת.
תהליך TForm1.DBGrid1TitleClick (עמודה: TColumn);
{$ J +}const קודמת טור עמודים: מספר שלם = -1;
{$ J-}
התחלה DBGrid1.DataSource. DataSet הוא TCustomADODataSet אז TCustomADODataSet (DBGrid1.DataSource. ערכת נתונים) דמי-גידה
DBGrid1.Columns [הקודם ColumnIndex]. כותרת. גופן. סגנון: =
DBGrid1.Columns [הקודם ColumnIndex]. כותרת. גופן. סגנון - [fsBold];
להוציא;
עמוד. כותרת. גופן. סגנון: =
עמוד. כותרת. גופן. סגנון + [fs מודגש];
PreviousColumnIndex: = עמודה. אינדקס;
אם (פוז (טור. שדה. שם שדה, מיין) = 1)
ו (Pos ('DESC', מיין) = 0) לאחר מכן
מיין: = טור. שדה. שדה שם + 'DESC'
אחר
מיין: = טור. שדה. שדה שם + 'ASC';
סוף;
סוף;
הקוד שלמעלה משתמש קבועים מוקלדים כדי לשמור על הערך של העמודה "שנבחרה" בעבר להזמנת מיון.