loading.Visible = True לא עולה...

shachr23

New member
loading.Visible = True לא עולה...

אני מנסה להרים מסך שיכסה את כל מה שמתחתיו כאשר אני טוען מ DB נתונים... על המסך רשום "טוען..." . אני קורה לפונקציה שהשורה הראשונה בה היא:
loading.Visible = True​
אבל למרות זאת , הוא פשוט לא מראה את האובייקט. הוספתי עוד שורה:
loading.Visible = True MsgBox "Loading ,Please wait..."​
במקרה הזה כן עלה המסך ... יש למישהו רעיון? תודה.
 

cohea15

New member
צור טופס

צור טופס ואליו תרשום טוען נתונים מDATA BASE ובהתחלה שים את המאפיין VISIBLE על FALSE ורק שהתוכנית שלך ניגשת לבסיס הנתונים תציג את אותו טופס ואחרי שהתוכנה סיימה עם בסיס הנתונים תסתיר את טופס
 

odedkatz

New member
מצטרף לשאלה לגבי מסך "טוען..."

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

ארזירון

New member
אז תשובות לשניכם

לראשון - DoEvents אולי יעזור, כי אני מתאר לעצמי ש-VB פשוט לא מציירת את הטופס על המסך כי היא עסוקה בדברים אחרים... לכן msgbox עוזר כי אז VB מחכה לתשובה... לעודד - אם הטפסים שלך מודאלים, אתה צריך ליישם שיטה של thread (שזה מאוד לא פשוט ב-VB), או ליישם שימוש ב-API לטפסים מסוימים (שזה יותר קל) כדי לדאוג שהטופס שלך יהיה מודאלי (או עליון שזו מילה יותר מתאימה) אם אתה משתמש ב-API, אז אתה טוען את הטופס בצורה רגילה, ובעזרת API קובע אותו כ-top most, רק שאז אתה בעצם ממשיך ריצה רגילה של הקוד, שזה מה שאתה מחפש.
 

shachr23

New member
אם ככה...

Private Sub loadLeads(strSql As String) doEvents loading.Visible = True ' השורה הזאת מעלה את המסך..שזה בעצם תמונה שמכסה adoCon = "Driver={SQL Server};Server=localhost;Database=PUBS;Uid=SA;Pwd=PWD123;" Call oConnections With Rs .Open strSql, adoCon, 0, 1 If Not .EOF Then getRows() = .getRows(.fields.Count) .Close Else MsgBox "No Search Results" End If End With Call cConnections Call readLeads(i) loading.Visible = False ' מעלים את המסך.. End Sub משום מה עדיין לא עובד.... זה טוען רק אחר כך מעלה את המסך ..ומשאיר אותו... למרות שבסוף רשום שם FALSE על VISIBLE..​
 

odedkatz

New member
תודה, אשמח לפירוט

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