דילוג לתוכן

ארכיון code613m

ארכיון האתר הקודם והחביב קוד-613

1.3k נושאים 9.6k פוסטים
  • חיבור שני ערכים לקומבובוקס

    6
    0 הצבעות
    6 פוסטים
    383 צפיות
    dovidD

    יש פה כמה טעויות.
    דבר ראשון, ItemContainerTemplate איננו מאפיין של ComboBox, מה שCodeDOM הזכיר זה ItemContainerStyle.
    דבר שני, גם אם הוא היה מאפיין היית צריך להציב בו ככה ComboBox.PropertyName ולא סתם איבר בתוך הקומבו (שזה הופך לContent).
    דבר שלישי, הבינדינג של הטקסט בלוק צריך לשאוב מידע מההקשר שלו ולא משורש הנתונים (כי בכל שורה אתה רוצה שיציג את השורה הזו, וזה הנעשה ע"י שהבינדינג לא מכיל Source ואז הוא פונה לDataContext שזה רמת השורה בComboBox).

    במקרים פשוטים אני מעדיף DataTemplate (הוא "מציע" איך אמור להיראות פריט, ומי שמיישם את זה הטמפלט של ComboBoxItem שעוטף למעשה כל פריט) קח דוגמה (תדביק בחלון/פרויקט אחר כדי שתוכל לשחק ולראות תוצאות חיות):

    <ComboBox HorizontalAlignment="Left" VerticalAlignment="Top" Width="150"> <ComboBox.Items> <!--בתור נתונים תקעתי סתם אלמנטי זאמל כי בשבילם לא צריך שום ניימספיס--> <Button /> <Button /> <Button /> </ComboBox.Items> <ComboBox.ItemTemplate> <DataTemplate> <TextBlock> <Run Text="{Binding Width}" Foreground="Red" /> <Run Text="{Binding Height}" /> </TextBlock> </DataTemplate> </ComboBox.ItemTemplate> </ComboBox>

    הנה תמונה:

    combo1.png
    שים לב, שסביב לרקע שנקבע לAzure יש רקע לבן. זהו בעצם בTempalte ברירת המחדל של הComboBoxItem שיש לו עיצוב משלו ובו משולב העיצוב אותו מציעים לו בDataTemplate כאלמנט פנימי.

    לעומת זאת, ע"י ItemContainerStyle אתה יכול לשנות את הטמפלט, ואז אתה לא מציע אלא אתה המבצע בעצמך:

    <ComboBox HorizontalAlignment="Left" VerticalAlignment="Top" Width="150"> <ComboBox.Items> <!--בתור נתונים תקעתי סתם אלמנטי זאמל כי בשבילם לא צריך שום ניימספיס--> <Button /> <Button /> <Button /> </ComboBox.Items> <ComboBox.ItemContainerStyle> <Style TargetType="ComboBoxItem"> <Setter Property="Template" > <Setter.Value> <ControlTemplate> <TextBlock Background="Aqua"> <Run Text="{Binding Width}" Foreground="Red" /> <Run Text="{Binding Height}" /> </TextBlock> </ControlTemplate> </Setter.Value> </Setter> </Style> </ComboBox.ItemContainerStyle> </ComboBox>

    תוצאה:

    combo2.png
    (אם אתה רוצה לעצב רק את המכיל לכמה ComboBox ולהשיאר "פתוח" את העיצוב ברמת הפריט, תוכל לשים את הContentPresetor שהוא שומר מקום לפריט התוכן. כך זה נראה בסטייל המקורי של הItemContainerStyle, תוכל לראות זאת ע"י Edit As Copy של הסטייל הזה).

    בקשר לאיך ללמוד XAML. זה אכן מתסכל. יש ספר בסיסי שנחשב מס' 1 בWPF, שמו WPF Unleashed, אותו קניתי ואכן הוא קידם אותי המון.
    (PDF פיראטי http://bit.ly/1I5Qa24).
    אבל מקרים כמו הקומבו הזה הם לא סיבה לדאגה, כי יש הרבה מאמרים על זה באינטרנט מעולים. רק שבמקום לחפש על ComboBox חפש על ListBox שהיא הItemsControl הכי נפוצה. העקרונות הם אותו דבר בכל יורשי הItemsControl. הנה דוגמאות:
    http://www.codeproject.com/Articles/18561/Custom-ListBox-Layout-in-WPF
    http://blogs.msdn.com/b/wpfsdk/archive/2007/08/31/specifying-the-selection-color-content-alignment-and-background-color-for-items-in-a-listbox.aspx

    פורסם במקור בפורום CODE613 ב20/07/2015 12:32 (+03:00)

  • קביעת מס' אוט' ע"י SQL server

    5
    0 הצבעות
    5 פוסטים
    341 צפיות
    A

    נראה לי שהמחשב שלי השתגע..
    גם זה.. וגם ניסיתי בהרבה אופציות ואני עדיין לא מצליח להציג עם הקומבובוקס ששאלתי..

    פורסם במקור בפורום CODE613 ב19/07/2015 18:25 (+03:00)

  • שגיאה 2108 VBA אקסס

    2
    0 הצבעות
    2 פוסטים
    227 צפיות
    clickoneC

    מצחיק.....
    חשבתי שאתה מדבר איתי על "לפני עידכון" של טופס.

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

    תוריד את שורה מספר 6.

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

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

    פורסם במקור בפורום CODE613 ב21/07/2015 08:37 (+03:00)

  • שגיאת selectionChanged

    6
    0 הצבעות
    6 פוסטים
    321 צפיות
    dovidD

    זה אולי נוצר בדבל קליק בטעות על גריד האיוונטים.

    פורסם במקור בפורום CODE613 ב19/07/2015 18:36 (+03:00)

  • הצגת הID של הערך הבא בטבלה

    5
    0 הצבעות
    5 פוסטים
    333 צפיות
    clickoneC

    ואתה יכול בהחלט לכתוב "חדש" ברשומה חדשה, ואחרי שזה מתעדכן להכניס את הID.

    פורסם במקור בפורום CODE613 ב15/07/2015 11:46 (+03:00)

  • WPF: הגדרות עיצוב כלליות בקובץ App.xaml

    2
    0 הצבעות
    2 פוסטים
    205 צפיות
    dovidD

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

    פורסם במקור בפורום CODE613 ב15/07/2015 14:43 (+03:00)

  • DataSet או DataTable

    3
    0 הצבעות
    3 פוסטים
    264 צפיות
    A

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

    אולי כדאי להעביר את הקישור הזה לפורום של המדריכים??

    פורסם במקור בפורום CODE613 ב15/07/2015 00:13 (+03:00)

  • תעוד מסד נתונים (טבלאות) באקסס

    3
    0 הצבעות
    3 פוסטים
    262 צפיות
    zvinissimZ

    תודה
    אבדוק ואנסה

    פורסם במקור בפורום CODE613 ב16/07/2015 10:48 (+03:00)

  • הוספת שורה שורה לDataSet

    5
    0 הצבעות
    5 פוסטים
    411 צפיות
    dovidD

    ClickOne לא התכוון וירטואלי כמשמעו, אלא מצב בו אתה בוחר לשים את המסד-כקובץ בתוך הפרוייקט, הוא הוא מקבל הגדרה Copy Alaws לתיקיית הBin. מה שקורה שכל הרצה במסגרת הVS מוחקת את הקודם וממילא השינויים עימו.

    הNewRow זה מתודה בDataTable. אם תשים לב תראה שאתה לא משתמש בDataTable כי אם בטיפוס שיורש ממנו.
    בDataTable אין מאפיינים לכל עמודה, כי הוא מעוצב לעבודה עם כל טבלה שהיא מכל מסד שהוא. המתודה NewRow מחזירה DataRow חדש, שזה אובייקט שמכיל מערך ערכים, שהפניה אליהם נעשית ע"י אינדקסר מיקום או שם עמודה (הוא מכיר את השמות בזמן ריצה ע"י האבא שלו: הDataTable).
    משא"כ הטיפוס שהנך משתמש עימו נקרא Typed Data Table כלמור כזה DataTable שכבר יועד ועוצב בזמן עיצוב לטבלה ספציפית, כאשר לכל שדה יש מאפיין מתאים וכו'. אז בעוד המתודה NewRow היא שארית מDataTable הגנרי וחסר הטיפוסיות, אז ישנה מתודה חדשה בשם NewXxxRow שמחזירה טיפוס יורש מDataRow בו יש מאפיין פר עמודה.

    פורסם במקור בפורום CODE613 ב14/07/2015 15:18 (+03:00)

  • SQL עדכון לDataSet

    6
    0 הצבעות
    6 פוסטים
    353 צפיות
    dovidD

    לא כ"כ ברור לי מה שתי הדרכים שאתה שואל איזו להעדיף. NewRow והמתודה GetChanges לא מתחרים כלל על אותה המשבצת. בנוסף אני לא יודע איזו בדיקה אתה מבצע.
    אבל שתדע לך, מאוד קשה לי לתת לך פרקטיקות טובות בDB, כי פשוט לא היה לי אף פעם. אכלתי המון קש. מזכיר לי משפט של מורה "אתם לא יכולים ללמוד מהטעיות שלי. אתם חייבים לעשות טעויות משלכם כדי ללמוד" :).

    פורסם במקור בפורום CODE613 ב14/07/2015 18:27 (+03:00)

  • SQL: עבודה עם אובייקט DataSet

    2
    0 הצבעות
    2 פוסטים
    226 צפיות
    dovidD

    שורה 4 זה לא יצירה אלא אחזור המופע שהוצהר עליו בריסורס בXAML.
    שורה 6-7 כפי שאמרת זה מילוי הטבלה Person.
    שורה 8 מאחזרת את הCollectionViewSource שאף הוא הוצהר כבר בXAML.
    בשורה 9 מגדירים לCollectionViewSOuce מה הרשומה הנוכחית שלו. ומה? השורה הראשונה.
    האובייקט הזה - הCollectionViewSource - משמש כעטיפה לאוסף בWPF. במקום להזין לדטה גירד את הטבלה עצמה (שזה אפשרות פשוטה יותר), בדרך זו אתה נותן לדטה גריד את הCollectionViewSource כמקור נתונים, והוא עצמו מקבל במאפיין Source את האוסף - במקרה שלנו טבלה.
    הפלוסים של הCollectionViewSource זה פלטור ומיון עצמאיים בלי לשנות את המקור, וגם ניווט. ניווט זה הגדרה על איזו רשומה הפוקוס עכשיו. מה זה משנה? כמה השלכות של UI.

    פורסם במקור בפורום CODE613 ב14/07/2015 12:01 (+03:00)

  • לחידודי בעלמא

    3
    1 הצבעות
    3 פוסטים
    345 צפיות
    א

    אגב אני שחכתי את הסיסמה והמערכת שואל את האלה הנ"ל וזה רשום ששולח מייל לשחזור ולא שולח כלל כיום אני מתחבר דרך הגוגל+

    פורסם במקור בפורום CODE613 ב19/05/2017 00:46 (+03:00)

  • טבלת תנועות בSQL

    4
    0 הצבעות
    4 פוסטים
    287 צפיות
    S

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

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

    אתן לך דוגמה: אתה יכול לפתור את הבעיה בעזרת פתרון פשוט - בכרטיס הלקוח לשמור בעמודה אחת את אמצעי התשלום ולתת לכל כרטיסי האשראי מזהה אי זוגי ולכל ההו"ק מזהה זוגי, ככה אתה גם יכול לדעת בחישוב פשוט איזה אמצעי תשלום זה וגם לאחד אותם לשדה אחד. נפלא, נכון?
    זהו שלא. מה קורה אם מחר הוא ירצה להוסיף תשלום באמצעות paypal? תעשה כפולות של 3? אה, רגע, זה אי זוגי! אז מהיום, ועל העבר נעשה UPDATE, בעצם זה PK.. וככה נראה הפתח לכל הצרות. . . למעשה, גם אז תוכל לפתור את הבעיה אבל ברמת סיבוכיות שתדרוש ממך עבודה רבה מאוד.

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

    פורסם במקור בפורום CODE613 ב12/07/2015 22:03 (+03:00)

  • אבטחת חיבור מרחוק ל mysql

    10
    0 הצבעות
    10 פוסטים
    497 צפיות
    dovidD

    @אבי

    לא התכוונתי שהPHP יחזיר את הפרטי חיבור, אלא שהוא יבצע את השאילתה ויחזיר את הערך מתוך הטבלה.

    אכן, זה בדיוק data service ומתנצל שעניתי אחרי קריאה רופפת מידי. זה בדיוק מה שכבת בהתחלה.

    פורסם במקור בפורום CODE613 ב13/07/2015 17:45 (+03:00)

  • ביקורת ספרים והמלצות

    8
    0 הצבעות
    8 פוסטים
    472 צפיות
    A

    @אהרן

    לדעתי
    יותר מבשפות תכנות ה'כבדות'
    בשלושת הנושאים הללו עדיף ללמוד בנט עם הדגמות צמודות.
    בכל מקרה, יש בזה הרבה הרבה מה ללמוד.

    לא בדיוק הבנתי מה התכוונת "הדגמות צמודות", דווקא יש שם הרבה דוגמאות קוד וצילומי מסך.. ככה שדוג' לא חסר שם..

    פורסם במקור בפורום CODE613 ב12/07/2015 14:27 (+03:00)

  • איך להציג דטה בייס בdataGrid בWPF?

    3
    0 הצבעות
    3 פוסטים
    239 צפיות
    dovidD

    (אני לא אמרתי שDataGrid לא מומלץ אלא שכשלא נדרשות יכולתיו אז הוא מיותר. ועניין המראה שנראה לך בDataGrid יותר טוב זה מהעדר הכרות עם ListBox או בגלל שאכן אתה צריך טבלה עם תאים שאז ודאי שDataGrid הוא האידאלי).
    יש בDataGrid מאפיין ששמו AutoGenerationColumn. כיון שבברירת מחדל הוא חיובי אז כשאתה מציין ItemsSource הפקד בודק לבד איזה מאפיינים יש לכל אלמנט באוסף. ולפיהם יוצר עמודות. בשביל לשלוט מה להציג ואיך יש ליצור את העמודות לבד (זה לא מדוייק, כי אפשר לקסטם את היצירה האוטומטית בכמה דרכים אבל הם לא רלוונטיים למקרה של DataTable שכמדומני שזה מקור הנתונים שלך).
    בשביל לייצר עמודות לבד פשוט צריך למלא DataGridXXXXColumn במאפיין DataGrid.Columns. הXXXX מציינים סוג, כי יש כמה (טקסט, תיבת סימון ועוד).

    פורסם במקור בפורום CODE613 ב09/07/2015 16:37 (+03:00)

  • אתר עם מדריכים בעברית

    2
    11 הצבעות
    2 פוסטים
    274 צפיות
    אקססא

    תבורך, אני עוקב אחריך כל הזמן ופשוט אין לי מילים להביע את הערכתי אליך, ירבו כמותך.
    יש פעמים שלחצן התודה אינו מספיק, אז..
    [size=150:36jhpw6b]תודה![/size:36jhpw6b]

    פורסם במקור בפורום CODE613 ב12/07/2015 22:27 (+03:00)

  • Data Type למספר טלפון

    10
    0 הצבעות
    10 פוסטים
    515 צפיות
    dovidD

    @avr416

    מצאתי כאן ספר לימוד בעברית בשם: "מבוא לתכנות בסביבת אינטרנט בשפת C#"
    ובו בפרק 4 יש הסבר נרחב על השימוש בsql server והעבודה שצריכה להתבצע מאחורי הקלעים.
    אקרא ואחכים! :lol:

    זה נראה ספר מעולה.

    פורסם במקור בפורום CODE613 ב12/07/2015 10:43 (+03:00)

  • SQL: קביעת רשימת ערכים מותאמת אישית

    14
    0 הצבעות
    14 פוסטים
    707 צפיות
    A

    בעזרתו של דוד ל.ט. התבררה השגיאה!

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

    פורסם במקור בפורום CODE613 ב20/07/2015 16:26 (+03:00)

  • forms או wpf: או מדוע להתאמץ לשווא?

    3
    0 הצבעות
    3 פוסטים
    271 צפיות
    A

    אני עוד צריך לשבת ולהבין את כל מה שהסברת כאן :smile:

    [u:1e0prlov]אבל קודם כל אני חייב להודות על האמת ולומר - טעיתי!![/u:1e0prlov]
    עכשיו גיליתי איך אפשר לעשות את כל מה שהזכרתי בוינדוס פורם גם בWPF!!
    צריך להגדיר את הסטרינג קונקשיין לפרוייקט של הWPF (ולא כמו שהוא היה מוגדר אצלי לפרוייקט של המחלקות הDLL שמצורפות לפרוייקט),
    ואז לבחור בתצוגה של חלונית הdata source בצד את הטבלה שאתה רוצה אל הטופס וישירות זה אצלך מוכן בלא כל מאמץ!!
    אפי' יש 3 אפשרויות תצוגה (ולא 2 כמו בפורם): dataGrid המוכרת, listView שלא הכרתי אותה (ואם אני מבין זה רק להצגה של הפרטים ללא עריכה), ותצוגה של טופס עם שדות.
    כל הכבוד למייקרוסופט!! חסכת לנו הרבה מאמץ!! :lol: :lol: :lol:

    פורסם במקור בפורום CODE613 ב09/07/2015 00:49 (+03:00)

בא תתחבר לדף היומי!