בניית GUI באמצעות #C

karinns

New member
בניית GUI באמצעות #C

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

colossus

New member
לא משהו בשמיים

נשמע כמו שאלה לתרגיל באוניברסיטה, אז לתת תשובה פה יהיה קצת לרמות. אבל... הייתי בונה מסך שבו יש 4 חלקים: 1. כותרת (10%-20% מגובה המסך) 2. אזור השאלה (40%-50% מגובה המסך) 3. אזור התשובות - שאני מניח שמדובר על שאלון אמריקאי. (30% מגובה המסך) 4. פס של כפתורים - בשביל לעבור בין שאלות (10% מגובה המסך) בגדול, מבנה שדומה ל Wizard. שאזור השאלה משתנה ואזור התשובה גם כן. אזור השאלה זה פשוט TextBox שמשנים לו את ה Text. אזור התשובות בונים כל שאלה מחדש לפי האופציות שיש. (זה בס"כ כמה Radio Buttons)
 

Justin Angel

New member
קה פרובלמה מואי צ'יקיטה?

לא ברור באיזה סוג אפליקציה מדובר - Winforms או ASP.Net. בגדול ובהמשך לתשובה של המגיב לפני, חשוב שה-GUI ידע לעשות שלושה דברים: 1. לשנות את השאלה הנשאלת 2. לשנות את התשובות המוצעות 3. להשיג את התשובה שנבחרה (לאחר שנבחרה או לאחר לחיצת כפתור) ולדעת מה השאלה הנוכחית באותו זמן. שאלה במקרה שלנו מוגדר כטקסט השאלה, התשובה הנכונה ואוסף של תשובות. תשובה היא טקסט בלבד. אמור להיות איפהשהו מנוע שידע לנהל את "בחירת השאלה" ביחס להיסטוריית השאלות והתשובות, ולשלוח את השאלה ל-GUI שכבר יטפל בהצגת השאלה וכל הקשור בכך. במהלך טעינת התוכנית בפעם הראשונה ולאחר בחירת תשובה, ה"מנוע" שלנו אמור להיקרא ולקבל את ההחלטה: איזה שאלה תוצג עכשיו ב-GUI? את השאלה הזאת צריך לשלוח ל-GUI בכל פעם מחדש. כאשר האפליקציה נטענת המנוע מבצע עבודה יחסית פשוטה, היות ואין לו שום היסטוריית שאלות. כאשר המשתמש בוחר תשובה ה-GUI שולח ל"מנוע" שלנו את השאלה הנוכחית עם התשובה שנבחרה, ויצפה לקבל בחזרה (מהמנוע) את השאלה הבאה להציג (או איזה סימן מוסכם שאין יותר שאלות). המנוע בתורו מקבל את השאלה (שחשוב להזכיר שמדובר באובייקט עם מאפיינים וכולל למשל את אוסף התשובות האפשריות) עם התשובה שנבחרה ואמור לדעת לשכלל לאור הבחירה הנוכחית והיסטוריית התשובות שנבחרו בעבר מהי השאלה הבאה. כמובן שהמנוע ישמור על State ביחס ללקוח. אם מדובר באפליקציה חלונאית, אז מערך סטטי (Static) ג'נרי (Generic) של תשובות יספיק, ואם מדובר ב-Web אז ניתן לשמור את המידע הזה ב-ViewState וכל פעם לקרוא ולכתוב מחדש את מערך התשובות שנבחרו בעבר. זה מימוש יחסית בסיסי, אבל סולידי ביחס ל-80% הראשונים.
 

karinns

New member
הבהרה

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

nadav1974

New member
הצעה

תממשי כל שאלה ב-user control. ל-control יש גודל, שאפשר להשתמש בו בשביל לחשב קואורדינטות.
 
למעלה