לא רוצה x

siftach

New member
לא רוצה x

בכל טופס ניתן לבטל את תיבת הבקרה, אבל איך אני עושה את זה לתוכנית עצמה? או לחילופין, איך אני לוכד את הארוע של סגירת התוכנית ומבצע אותו בעצמי בקוד VB?
 
בצורה הכי פשוטה

במאפייני הטופס, אתה מטל את אפשרות הסגירה המזעור או הגדלה ואת תיבת הבקרה.... אבל אז נשאר לך אפשרות יציאה דרך X על כל האקסס, וגם את זה ניתן לבטל אירוע באת פריקה של טופס משתמשים במשתנה בולאני גלובאלי וכותבים את השורה הבאה - Cancel = שם המשתנה. כמובן שהמשתנה חייב להיות בעל הערך TRUE עכשיו כל מה שנשאר בלחצן יציאה שלך להוסיף עוד שורה אחת, שם המשתנה = Falce צריך להסביר למה זה עובד?
 

siftach

New member
לא ממש עוזר לי

ארוע הפריקה של הטופס קורה אחרי שהטופס נסגר. אני לא רוצה ששום דבר ייסגר לפני שמישהו מקיש את הסיסמה המתאימה. בקיצור: המשתמש יוכל לצאת רק על-ידי לחיצה על כפתור היציאה ולא על-ידי ה-x של התוכנית. במידה ולחץ על ה-x, אני רוצה ללכוד את הארוע לפני שמתחיל להתבצע משהו.
 
אני אענה לך בצורה בוטה....../images/Emo88.gif

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

siftach

New member
אני פוסל?

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

אני מצרף לך קטע מקוד עובד באחת האפליקציות שלי....
Private Sub Form_Unload(Cancel As Integer) If Me![BoxOP] <> 4 Then Cancel = True End Sub​
 

siftach

New member
אז תגיד חיובי!

הקוד שלך זה לא בדיוק מה שכתבת שתי הודעות קודם. אבל שיטה זו בעייתית. אני לא יכול לעצב את הטופס אם הוא פתוח, וכמובן שאני לא יכול לסגור אותו, אלא אם מתקיים התנאי שלי. במקרה הספיציפי שלי אין תנאי כזה, אלא נפתח טופס חדש שמבצע את היציאה. בקיצור, לא הותרת לי ברירה אלא לכתת את אצבעותי על מקלדתי וליצור טופס נחבא, שזה תפקידו בחיים.
 
זה רק ספורט ../images/Emo13.gif

אני אסביר מחדש את מה שכתבתי בהתחלה. Cancel מקבל TRUE או False ולכן אני משחק בשמתנה שמקבל את הערך הזה... כל עוד אני לא מעוניין שהאפליקציה תסגר המשתנה יהיה בעל ערך TRUE ואז כאשר אני רוצה לצאת, Cancel =True וממילא היציאה מתבטלת... ברגע שאתה מאשר את היציאה, פשוט מאוד המשתנה מקבל את הערך False וההמשך ברור. עכשיו מובן מאליו שאני מתייחס לכך שיש טופס ראשי שהוא מנווט את היציאה מהאפליקציה...... מצטער אם לא הייתי ברור
 

siftach

New member
בהשפעת הארויזיון?

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

מה שאתה תעשה זה את הרצף הבא: cancel = TRue docmd.openform "ExitForm" docmd.close acform "ThisForm" תראה כמה זה פשוט ואם אתה רוצה לעשות את זה יותר יפה, אז תן הגדרת זמן בטוםס היציאה ואז יתבצע DOcmd.Quit
 
למעלה