שאלה

MaD-d0g

New member
שאלה

שלום לכולם. רציתי לדעת האם יש דרך כלשהי לדעת אם המשתמש לחץ שיפט + טאב (ההפך של טאב). אני צריך לגלות את זה מבלי להשתמש באירועי ה GotFocus ו LostFocus של פקדים אחרים. תודה מראש
 
הספר שיש לי על VB טוען שאין דרך

לגלות לחיצה על טאב אפילו לא ע"י KEYDOWN וKEYUP, שלא להזכיר KEYPRESS שממילא לא יספר לך על מצב האלט/קונטרול/שיפט. אגב, גם לא תוכל ללכוד ENTER אם יש לחצן פקודה עם DEFAULT=TRUE וכן ESC אם יש לחצן עם CANCEL=TRUE. עוד נקודה, כדי ליצור מטפל גלובלי לטופס, ולא לכל פקד, אפשר לקבוע בטופס את KEYPREVIE=TRUE ואז כל KEYDOWN\KEYUP ילכד ע"י הטופס לפני הפקדים.
 

ofir104

New member
אפשר, לא חייבים עם הסב של הפורם...

KEY UP/DOWN/PRESS, אך אפשר עם DIRECTX.
 

nir1407

New member
Shift Tab

תראה עם זה עוזר לך ...
Private Sub Form_KeyDown(KeyCode As Integer, Shift As Integer) Debug.Print "KeyCode: " & KeyCode & " Shift: " & Shift End Sub​
כנראה ש: KeyCode: 9 Shift: 1 אומר ש לחצו SHIFT + TAB....
 

MaD-d0g

New member
נכון מאוד..

אבל ברגע שיש פקדים שיכולים לקבל פוקוס, האירוע לא עולה אם אני לוחץ טאב או שיפט טאב
 

MaD-d0g

New member
כן ../images/Emo4.gif, אבל אני לא מת על השיטה

הייתי מעדיף פתרון יותר קצר ויעיל, אבל אם אין, אז לא נורא..
 

The MarBar

New member
עד כמה שאני יודע

כל הדרכים האחרות כוללות את זה שלפורם שלך יהיה את הפוקוס ודברים כאלה ולכן נראה לי שרק hooks יעבוד.
 

Kingstone

New member
אתה יכול..

Mad-Dog, אתה יכול להשתמש בפונקציות הAPI - GetKeyState וGetAsyncKeyState ועם טיימר ולבדוק אם לחצו על shift וtab ביחד.
 

MaD-d0g

New member
קצת עקום..

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

zelig0n

New member
בכלל לא מסובך, די ברור למען האמת

השאלה שלי היא: למה שני טפסים ? יש לי משהוא דומה, להרשמה, אבל זה נמצא על טופס אחד שיש עליו כמה פריימים כאשר הפריים מוצג זה אומר שהטקסט בוקס יכול לקבל פוקוס (לפי טאב אורדר) וה-VB עושה את רב העבודה, לך נשאר רק לבדוק אם הטקסט בוקס נבחר אז לדאוג שהפריים שהטקסט בוקס יושב עליו יעבור "קדימה" או יקבל פוקוס...זהו...לא יותר פשוט
 

MaD-d0g

New member
יכול להיות

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

1. מקם TEXTBOX נוסף, במיקום שלא רואים אותו, TabIndex אחרון (shift+Tab מהראשון מגיע אליו) שבקבלת פוקוס מעביר לטופס הבא 2. ב-GETFOCUS של כל פקד הוסף רישום שהפקד קיבל פוקוס. 3. בLOSTFOCUS - אם כל הפקדים ברשימה, עבור לטופס הבא.
 

MaD-d0g

New member
../images/Emo12.gif אני רוצה לקבור את עצמי.........

ככה עד עכשיו עשיתי אבל אם אני צריך להיות ספציפי, אז אם אני לוחץ טאב אחרי האחרון אני אמור להגיע לנקודה א' בטופס החיצוני (דרך טקסט בוקס ששמתי) אבל אם מישהו לוחץ שיפט טאב כשהוא על הפקד הראשון, הוא יעבור לנקודה ב' בטופס החיצוני. באמת השתמשתי בפקד נוסף. אבל.. אבל.. אבל... איך לא חשבתי על להוסיף עוד פקד שהאינדקס שלו יהיה 0
(יהיה הראשון, אבל שלא יראו אותו) (בגלל זה תראו אותי הולך ברחוב עם משקפי שמש, כדי שלא יזהו אותי ויצחקו עלי
) תודה
 
למעלה