גלילה בתוך פריים

גלילה בתוך פריים

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

MaD-d0g

New member
אני גם שואל את עצמי את אותה שאלה,

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

זאת עבודת פרך... אולי יש פיתרון יותר קל... אני פשוט עובד על פרויקט בגרות של 5 יחידות ואני חייב פיתרון כלשהו... תודה
 
באותו קו מחשבה....

אם אני כותב פונקציה שכאשר אני יורד עם הגלילה אז כל העצמים יעלו למעלה... אני אמור לדעת אם המשתמש לחץ למעלה בגלילה או למטה יש פונקציה שבודקת ??
 

MaD-d0g

New member
לפי ה ScrollBar הזה, אני לא יודע..

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

MaD-d0g

New member
הרבה עבודה ../images/Emo35.gif

הבדיקה של כיוון הלחיצה היא מאוד פשוטה
Private Sub VChildScroll_Change() Dim Value As Integer Value = VChildScroll.Value If Value > VChildScroll.Tag Then MsgBox "Down" If Value < VChildScroll.Tag Then MsgBox "UP" VChildScroll.Tag = VChildScroll.Value End Sub​
את השאלה השניה לא הבנתי
 
זו לא הייתה הכוונה בההרבה עבודה

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

כשאתה מאתחל את הפקדים(נותן להם את הערכים התחיליים), או בload של הform- הייתי יוצר מערך שכל איבר שלו הוא reference לאחד מהאובייקטים, ואז בעת לחיצה על הscrollbar צריך רק לרוץ עם לולאה על המערך(ולשנות את המיקום בהתאם).
Dim framearray(3) As Object Private Sub Form_Load() ´ here is where u set the references - Set framearray(0) = Text1 Set framearray(1) = Text2 Set framearray(2) = Text3 Set framearray(3) = Command1 ´ scrollbar initial settings VScroll1.SmallChange = 150 VScroll1.Tag = 0 VScroll1.Max = 32767 VScroll1.Min = 0 VScroll1.Value = 0 End Sub Private Sub VScroll1_Change() ChangeVal = VScroll1.Value - VScroll1.Tag movearray ChangeVal VScroll1.Tag = VScroll1.Value End Sub Sub movearray(ByVal ChangeVal As Integer) ´ this sub moves all the control that are in the framearray For I = 0 To 3 framearray(I).Top = framearray(I).Top + ChangeVal Next I End Sub​
(זה משתמש בtag, כמו שmarbar הציע), היתרון בשיטה הזאת היא החסכון בכתיבה אם תרצה להוסיף פקדים שמשפיעים על כל הפקדים בframe. פקדים כמו כפתור invisible, סקרולבר אופקי, כפתור reset וכו´.
 
אוקיי..

הפקדים של הקומבו בוקסים כבר נמצאים במערך...אך יש עוד כל מיני פקדים שאינם קומבו בוקסים כמו DTPICER, TEXTBOX,OptionButtons ... מה לעשות איתם? אני לא יכול להכניס אותך למערך.... ליאור.
 
הסבר

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

MaD-d0g

New member
פתרון נחמד...

ואני די בטוח שההצעה היתה של MaD-d0g, ולא MarBar
 
סליחה,

אני רואה M ושוכח להמשיך לקרוא.
 
תודה....שאלה :)

איך אני שם בתאים שלו Reference לאובייקטים?? אני חיפשתי גם ב MSDN ולא מצאתי... תודה על העזרה ליאור.
 
דוגמא -

נניח וקיימת תיבת טקסט שקוראים לה text1 אם רוצים לגשת לטקסט שנמצא בה אזי כותבים :
msgbox Text1.Text​
אם נעשה
Set MyBelovedTextBox = Text1​
אזי המשתנה MYBELOVEDTEXTBOX מכיל REFERENCE או ´מצביע´ על אותה תיבת טקסט, כך ששני הפעולות הבאות יניבו את אותה תוצאה כי הן פועלות על אותו אובייקט -
msgbox MyBelovedTextBox.Text msgbox Text1.Text​
זאת הייתה הכוונה שלי, ההבדל היחיד הוא שיצרתי מערך של refrences -
dim RefArr(9) as Object set RefArr(0) = Text1 set RefArr(1) = Text2 set RefArr(2) = Command1 set RefArr(4) = Combo1 set RefArr(5) = Radio1 ... ... ...​
 
למעלה