רשימה נפתחת בתוך DBGrid

להלן הצבת רשימת בחירה נפתחת לתוך DBGrid. צור ממשקי משתמש חזותיים יותר אטרקטיביים לעריכת שדות חיפוש בתוך DBGrid - באמצעות המאפיין PickList בעמודה DBGrid.

עכשיו, כי אתה יודע מה הם שדות בדיקה, ואילו אפשרויות להציג שדה בדיקת מידע ב- דלפיDBGrid, הגיע הזמן לראות כיצד להשתמש במאפיין PickList של עמודה DGBrid כדי לאפשר למשתמש לבחור ערך לשדה בדיקה מתיבת רשימה נפתחת.

מידע מהיר על נכס העמודות של DBGrid

א DBGrid לשליטה יש מאפיין עמודות - אוסף של אובייקטים של TColumn המייצגים את כל העמודות בפקד רשת. ניתן להגדיר עמודות בזמן העיצוב דרך עורך העמודות, או באופן תכנותי בזמן ריצה. בדרך כלל תוסיף עמודים ל- DBGird כשרוצים להגדיר כיצד מופיעה עמודה, כיצד מוצגים הנתונים בעמודה וכדי לגשת לתכונות, אירועים ושיטות של TDBGridColumns בזמן ריצה. רשת מותאמת אישית מאפשרת לך להגדיר מספר עמודות להצגת תצוגות שונות של אותו מערך נתונים (הוראות עמודות שונות, אפשרויות שדה שונות וצבעי עמודים וגופנים שונים, עבור דוגמא).

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

instagram viewer

מילוי הפיקליסט

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

כך תוכל להגדיר את המאפיין PickList. ראשית, אנו מוסיפים שיחה לנוהל SetupGridPickList במטפל האירועים OnCreate של הטופס.

תהליך TForm1.FormCreate (שולח: TObject);
התחל
SetupGridPickList ('נושא', 'בחר שם מתוך נושאים');
סוף;

הדרך הקלה ביותר ליצור את נוהל SetupGridPickList היא לעבור לחלק הפרטי של הצהרת הטופס, הוסף שם את ההצהרה ופגע בשילוב המקשים CTRL + SHIFT + C - השלמת הקוד של דלפי תעשה את זה מנוחה:

...
סוג
TForm1 = כיתה (TForm)
...
נוהל פרטי SetupGridPickList (
const שם שדה: מחרוזת;
const מ"ר: מחרוזת);
ציבורי
...

הערה: נוהל SetupGridPickList לוקח שני פרמטרים. הפרמטר הראשון, FieldName, הוא שם השדה שאנחנו רוצים לפעול כמו שדה בדיקת מידע; הפרמטר השני, SQL, הוא ביטוי ה- SQL בו אנו משתמשים כדי לאכלס את ה- PickList בערכים אפשריים - באופן כללי, הביטוי SQL צריך להחזיר מערך נתונים עם שדה אחד בלבד.

כך נראה SetupGridPickList:

תהליך TForm1.SetupGridPickList (const שדה שם, sql: מחרוזת);
var
slPickList: TStringList;
שאילתה: TADOQuery;
i: מספר שלם;
התחל
slPickList: = TStringList. צור;
שאילתה: = TADOQuery. צור (עצמי);
נסה
שאילתא. חיבור: = ADOConnection1;
שאילתא. SQL. טקסט: = sql;
שאילתא. פתוח;
// מלא את רשימת המחרוזותבזמןלא שאילתא. EOF dobegin
slPickList. הוסף (שאילתה. שדות [0]. AsString);
שאילתא. הבא;
סוף; //while
// מקם את הרשימה את העמודה הנכונהל i: = 0 ל עמודות DBGrid1. ספירה -1 לעשות
אם DBGrid1. עמודות [i]. שדה-שם = שדה-שם אז התחיל
DBGrid1. עמודות [i]. PickList: = slPickList;
לשבור;
סוף;
סוף סוף
slPickList. חינם;
שאילתא. חינם;
סוף;
סוף; (* SetupGridPickList *)

זהו זה. כעת, כשתלחצו על עמודת הנושא (כדי להיכנס למצב עריכה).

הערה 1: כברירת מחדל, הרשימה הנפתחת מציגה 7 ערכים. ניתן לשנות את האורך של רשימה זו על ידי הגדרת המאפיין DropDownRows.

הערה 2: שום דבר לא מונע מכם למלא את ה- PickList מרשימת הערכים שלא מגיעים מטבלת מסד נתונים. אם, למשל, יש לך שדה שמקבל רק שמות של יום חול ('יום שני',..., 'יום ראשון') אתה יכול לבנות פיקליסט "מקודד קשה".

"אה, אני צריך ללחוץ על PickList 4 פעמים ..."

שים לב שכאשר ברצונך לערוך את השדה המציג רשימה נפתחת, תצטרך ללחוץ על התא 4 פעמים כדי לבחור בפועל ערך מהרשימה. קטע הקוד הבא, שנוסף למטפל האירועים OnCellClick של DBGrid, מחקה להיט למפתח F2 ואחריו Alt + DownArrow.

תהליך TForm1.DBGrid1CellClick (עמודה: TColumn);
התחל// הצגת הרשימה הנפתחת מופיעה מהר יותראם טור. PickList. ספירה> 0 אז התחיל
keybd_event (VK_F2,0,0,0);
keybd_event (VK_F2,0, KEYEVENTF_KEYUP, 0);
keybd_event (VK_MENU, 0,0,0);
keybd_event (VK_DOWN, 0,0,0);
keybd_event (VK_DOWN, 0, KEYEVENTF_KEYUP, 0);
keybd_event (VK_MENU, 0, KEYEVENTF_KEYUP, 0);
סוף;
סוף;
instagram story viewer