ABA


"עזרה דחופה ב-ACCESS, כנסו רגע בבקשה..."
גירסת הדפסה        
קבוצות דיון פיתוח, תיכנות ובניית אתרים נושא #5025 מנהל    סגן המנהל    מפקח   Winner    צל"ש   מומחה  
אשכול מספר 5025
FALKON

דרג אמינות חבר זה
   16:05   04.02.03   
אל הפורום  
  עזרה דחופה ב-ACCESS, כנסו רגע בבקשה...  
 
   אז ככה, יש לי כפתור והלבשתי עליו ציור/תמונה .
אני רוצה שברגע שהחץ של העכבר יעלה על הציור/תמונה (כפתור) הזה הציור שיש עכשיו על הכפתור ישתנה לציור אחר ושהחץ של העכבר ירד מהכפתור הציור/תמונה המקורית תחזור.
איך עושים את זה????


ממש תודה לכל העוזרים והמנסים לעזור...........


                                שתף        
מכתב זה והנלווה אליו, על אחריות ועל דעת הכותב בלבד

  האשכול     מחבר     תאריך כתיבה     מספר  
  פתרון לא ממש פשוט אבל הנה faktoraa 05.02.03 12:26 1
     faktoraa - תודה רבה לך... FALKON 07.02.03 04:34 2

       
faktoraa

דרג אמינות חבר זה
   12:26   05.02.03   
אל הפורום  
  1. פתרון לא ממש פשוט אבל הנה  
בתגובה להודעה מספר 0
 
   עבר עריכה לאחרונה בתאריך 05.02.03 בשעה 12:27
 
אהלן שוב FALKON.

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

אנחנו יוצרים 2 משתנים גלובליים לטופס:


Dim strPrevControl As String 'משתנה המחזיק את הכפתור האחרון שהוחלף
Dim strPrevControlPicture As String 'מחזיק את התמונה של הכפתור האחרון שהוחלף

עכשיו כתבתי 2 פרוצדורות, האחת להחלפת תמונה פעם ראשונה והשניה להחלפה חזרה:


Private Sub ChangePicture(strControlName As String, strNewPicPath As String)
'אם יש בזכרון פקד קודם שהחלפנו אז תחליף אותו חזרה לתמונה הישנה
If strPrevControl <> "" Then
With Me(strPrevControl)
'כמובן שצריך להחילף רק אם הוא עוד לא הוחלף
If .Picture <> strPrevControlPicture Then .Picture = strPrevControlPicture
End With
End If

'נשמור את הפקד שאנחנו מחליפים עכשיו
strPrevControl = strControlName

'עכשיו נבצע את ההחלפה
With Me(strControlName)
'קודם נשמור את שם התמונה הקודם
strPrevControlPicture = .Picture

'ועכשיו נחליף אם צריך
If .Picture <> strNewPicPath Then .Picture = strNewPicPath
End With
End Sub


Private Sub ReturnPictureToNormal()
'זוהי פונקציה להחזרת התמונה הקודמת לפקד אם צריך
If strPrevControl <> "" Then
With Me(strPrevControl)
If .Picture <> strPrevControlPicture Then .Picture = strPrevControlPicture
End With
End If
End Sub

זהו בעצם כל הקוד הבסיסי ועכשיו רק צריך לקרוא לקוד במקומות המתאימים.
אז בוא נגיד שיש לנו טופס שעל הDETAIL שלו ישנם 2 כפתורים COMMAND1 ו-COMMAND2. אז הנה הארועים של הפקדים ושל הDETAIL:


'זה הארוע של תזוזת עכבר מעל שטח ה
'DETAIL
'של הטופס ובו אנחנו פשוט קוראים להחזיר את הפקד האחרון למצבו הקודם
Private Sub Detail_MouseMove(Button As Integer, Shift As Integer, X As Single, Y As Single)
Call ReturnPictureToNormal
End Sub


'זהו הארוע של כפתור
'COMMAND1
Private Sub Command1_MouseMove(Button As Integer, Shift As Integer, X As Single, Y As Single)
'נקרא לפונקציה עם שם הפקד שלנו ועם הקובץ של התמונה החדשה
Call ChangePicture("Command1", "c:\balloon.bmp")
End Sub


'זהו הארוע של כפתור
'COMMAND2
Private Sub Command2_MouseMove(Button As Integer, Shift As Integer, X As Single, Y As Single)
'נקרא לפונקציה עם שם הפקד שלנו ועם הקובץ של התמונה החדשה
Call ChangePicture("Command2", "c:\ball.bmp")
End Sub

זהו זה, זה כל הפתרון וזה עובד יפה מאד.

אם יהיו לך עוד שאלות, אשמח לענות.

א.


                                                         (ניהול: מחק תגובה)
מכתב זה והנלווה אליו, על אחריות ועל דעת הכותב בלבד
FALKON

דרג אמינות חבר זה
   04:34   07.02.03   
אל הפורום  
  2. faktoraa - תודה רבה לך...  
בתגובה להודעה מספר 1
 
  


                                                         (ניהול: מחק תגובה)
מכתב זה והנלווה אליו, על אחריות ועל דעת הכותב בלבד

תגובה מהירה  למכתב מספר: 
 
___________________________________________________________________

___________________________________________________________________
למנהלים:  נעל | תייק בארכיון | מחק | העבר לפורום אחר | מחק תגובות | עגן אשכול
       



© כל הזכויות שמורות ל-רוטר.נט בע"מ rotter.net