לחצנים דינאמיים ולחצני מערכת

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

לחצני מערכת

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

שליטה במצב לחצן מערכת

כאשר אזור הלחצנים חשוף לתסריט, ניתן להסתיר או לנטרל לחצן לפי שם הלחצן:

Procedure After_Showing;
Begin
  Actions_BA.Button_State('approve_client', True, False);
End;
  • הפרמטר הראשון הוא שם הלחצן.
  • הפרמטר השני קובע האם הלחצן יוצג.
  • הפרמטר השלישי קובע האם הלחצן יהיה פעיל או מנוטרל.

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

לחצנים דינאמיים

לחצן דינאמי הוא לחצן שנוצר על ידי מטמיע או מנהל מערכת, ומיועד להריץ קוד תסריט.
לחצן ייחשב דינאמי כאשר שמו מתחיל ב־dynamic_, לדוגמה:
  • dynamic_1
  • dynamic_2
  • dynamic_SendSMS

שם הפרוצדורה שתרוץ בעת לחיצה על לחצן דינאמי בנוי כך:
Procedure [שם אזור הלחצנים]_[שם הלחצן];


לדוגמה, אם שם אזור הלחצנים הוא Actions_BA ושם הלחצן הוא dynamic_1, יש לכתוב:
Procedure Actions_BA_dynamic_1;
Begin
  PopupMessage('הכפתור הופעל', 'תסריט', False);
End;
הפרוצדורה של לחצן דינאמי אינה מקבלת פרמטרים. זיהוי הלחצן מתבצע לפי שם הפרוצדורה.

הפעלת לחצן מתוך תסריט

ניתן להפעיל לחצן קיים מתוך תסריט, כאילו המשתמש לחץ עליו באמצעות הפרוצדורה:
Actions_BA.PostClick('dynamic_1');
ניתן גם להפעיל לחצן לאחר השהייה קצרה:
Actions_BA.PostClick_Timer('dynamic_1', 500);
שימוש ב־PostClick_Timer מתאים כאשר רוצים לדחות פעולה עד שהמסך יסיים להיטען או להתייצב.

לחצני Radio ו־Check

כאשר אזור הלחצנים כולל לחצני בחירה, ניתן לשלוט על הבחירה מתוך התסריט:
Actions_BA.Toggle_Radio_Buttons('dynamic_1', he_RadioBtn);

ניתן לבדוק האם קיים לחצן בחירה פעיל:
If Actions_BA.Any_Button_Down(he_RadioBtn) Then
Begin
  // קיים לחצן Radio שנמצא במצב לחוץ
End;

הרצת לחצן ברקע

ניתן להגדיר שלחצן ירוץ תחת Thread (ברקע) ולא יעצור את ממשק המשתמש:
Actions_BA.Button_Thread('dynamic_1', True, True);
יש להשתמש באפשרות זו בזהירות!
הרצה ברקע מתאימה לפעולות ארוכות, אך אינה מתאימה לקוד שמבצע פעולות ישירות על רכיבי המסך או דורש אינטראקציה מיידית עם המשתמש.

כללי זהירות

  • אין להניח שלכל לחצן מערכת קיים אירוע תסריט בשם הלחצן.
  • עבור פעולות מערכת יש לחפש קודם אירוע מערכת ייעודי, כמו Approve_Client.
  • אין לקרוא ל־PostClick על אותו לחצן מתוך האירוע של עצמו, כדי לא ליצור לולאה.
  • כאשר מסתירים או מנטרלים לחצן, מומלץ לעשות זאת ב־After_Showing או לאחר שינוי שדה רלוונטי.
  • אם שם לחצן שגוי או לא קיים, הקריאה בדרך כלל לא תבצע פעולה.