דילוג לתוכן
  • דף הבית
  • קטגוריות
  • פוסטים אחרונים
  • משתמשים
  • חיפוש
  • חוקי הפורום
כיווץ
תחומים

תחומים - פורום חרדי מקצועי

💡 רוצה לזכור קריאת שמע בזמן? לחץ כאן!
dovidD

dovid

@dovid
ניהול
אודות
פוסטים
10.4k
נושאים
187
שיתופים
0
קבוצות
2
עוקבים
33
עוקב אחרי
0

פוסטים

פוסטים אחרונים הגבוה ביותר שנוי במחלוקת

  • WPF - ListView
    dovidD dovid

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

    פורסם במקור בפורום CODE613 ב17/10/2013 20:04 (+03:00)

    ארכיון code613m

  • WPF - ListView
    dovidD dovid

    תחליף את תחילת הקוד, מההצהרה על הDictionary כולל, ועד סוף הפונקציה הראשונה,
    בקוד דלהלן:

    Public Shared ICO_DIC As New Dictionary(Of String, ImageSource)
    
    'This function get the icon for the specified file path extension
    Public Shared Function GetIcon(ByVal filePath As String) As ImageSource
        Try
            Dim wpfBitmap As ImageSource
    
            'Get the extension
            Dim ext As String = IO.Path.GetExtension(filePath)
            ' בודק אם האיקון כבר קיים 
            ICO_DIC.TryGetValue(ext, wpfBitmap)
            If wpfBitmap IsNot Nothing Then
                Return wpfBitmap
            End If
            Dim shellFileInfo As New SYS_ICO.SHFILEINFO()
    
            SYS_ICO.SHGetFileInfo(ext, 128, shellFileInfo, _
                        Convert.ToUInt32(Marshal.SizeOf(shellFileInfo)), _
                        Convert.ToUInt32(256I Or 1I Or 16I))
    
            Dim ico As System.Drawing.Icon = System.Drawing.Icon.FromHandle(shellFileInfo.hIcon)
    
            wpfBitmap = FromIconToImageSource(ico)
            ICO_DIC.Add(ext, wpfBitmap)
            Return wpfBitmap
        Catch ex As Exception
            Return FromIconToImageSource(My.Resources.איקון)
        End Try
    
    End Function
    
    Private Shared Function FromIconToImageSource(icon As System.Drawing.Icon) As ImageSource
        Dim bitmap As System.Drawing.Bitmap = icon.ToBitmap()
        Dim hBitmap As IntPtr = bitmap.GetHbitmap()
    
        Dim wpfBitmap As ImageSource = System.Windows.Interop.Imaging.CreateBitmapSourceFromHBitmap(
                                        hBitmap,
                                        IntPtr.Zero,
                                        Int32Rect.Empty,
                                        BitmapSizeOptions.FromEmptyOptions())
        Return wpfBitmap
    End Function
    

    ואח"כ אתה שם את התוצאה במאפיין הImageSource של המחלקה דלעיל.

    פורסם במקור בפורום CODE613 ב17/10/2013 19:47 (+03:00)

    ארכיון code613m

  • WPF - ListView
    dovidD dovid

    ציפיתי שתיקח את מה ששלחתי הלאה, לא חשבתי שגמרתי.
    אתה צודק, טעיתי בכך שבחרתי את השם Image בקוד, אחרי שבXAML הפניתי לicon. צריך לשנות את אחד מהם כדי ששניהם יהיו אותו השם.

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

    פורסם במקור בפורום CODE613 ב17/10/2013 16:47 (+03:00)

    ארכיון code613m

  • WPF - ListView
    dovidD dovid

    למה לא להביא xaml?
    חשוב לדעת איפה אתה אוחז.
    א. יש הרבה הרבה אפשרויות להציג מידע בפקדי xaml.
    ב. יש הרבה אפשרויות איך לנהל את הקוד מאחורה.
    ג. לליסטויו יש אפשרויות תצוגה טבלאית ואחרות.

    עשיתי דוגמה בסיסית עם פירוט רב כדי שתראה את היקף ההיבטים.
    קודם הXAML:

    <ListView  ItemsSource="{Binding Source={StaticResource CollForList}}" MouseDoubleClick="listFiles_MouseDoubleClick" >
        <ListView.View>
            <GridView>
                <GridViewColumn >
                    <GridViewColumn.CellTemplate>
                        <DataTemplate>
                            <Image Source="{Binding icon}" />
                        </DataTemplate>
                    </GridViewColumn.CellTemplate>
                </GridViewColumn>
                <GridViewColumn Header="שם" DisplayMemberBinding="{Binding Name}" />
                <GridViewColumn Header="תאריך שינוי" DisplayMemberBinding="{Binding DateChange}" />
            </GridView>
        </ListView.View>
    </ListView>
    

    הזאמל הזה עושה שימוש בריסורס, אביא אף אותו

    <Window.Resources>
        <CollectionViewSource x:Key="CollForList" />
    </Window.Resources>
    

    הקוד VB במקרה זה:

    Private Coll As CollectionViewSource
    Private Sub MainWindow_Loaded(sender As Object, e As RoutedEventArgs) Handles Me.Loaded
        Coll = Me.Resources("CollForList")
        ListBuilder(New IO.DirectoryInfo("c:\"))
    End Sub
    
    Private Sub ListBuilder(dirBase As IO.DirectoryInfo)
        Dim files = From file In dirBase.EnumerateFiles()
                    Select New FileOrFolder(file)
    
        Dim directories = From dir In dirBase.EnumerateDirectories
                          Select New FileOrFolder(dir)
    
        Coll.Source = files.Concat(directories)
    End Sub
    
    Private Sub listFiles_MouseDoubleClick(sender As Object, e As MouseButtonEventArgs)
        Dim f = TryCast(CType(e.OriginalSource, FrameworkElement).DataContext, FileOrFolder)
        If f IsNot Nothing Then
            If f.IsDir Then
                ListBuilder(New IO.DirectoryInfo(f.FullName))
            End If
        End If
    End Sub
    

    הקוד משתמש במחלקה זאת:

    Class FileOrFolder
        Public FullName As String
        Public Property IsDir As Boolean
        Public Property Name As String
        Public Property DateChange As Date
        Public Property Image As ImageSource
    
        Public Sub New(file As IO.FileInfo)
            FullName = file.FullName
            Name = file.Name
            '....
        End Sub
        Public Sub New(dir As IO.DirectoryInfo)
            IsDir = True
            FullName = dir.FullName
            Name = dir.Name
            '....
        End Sub
    End Class
    

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

    פורסם במקור בפורום CODE613 ב17/10/2013 13:05 (+03:00)

    ארכיון code613m

  • WPF - ListView
    dovidD dovid

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

    פורסם במקור בפורום CODE613 ב17/10/2013 10:57 (+03:00)

    ארכיון code613m

  • comboBox - WPF
    dovidD dovid

    אם מוגדר לItemsControl (במקרה זה ליסט), הItemsSource, הדרך הטבעית והפשוטה ביותר זה להוסיף את האיבר למקור הנתונים.
    במקרה זה כתבת שמקור הנתונים זה "עמודה בטבלה".
    זה ניסוח שגוי מאוד. מקור הנתונים חייב להיות IEnumerable<T>, ועמודה בטבלה היא אובייקט שממש לא מממש את הציפיה הזו.
    נניח שכנראה הT הוא DataRow. אז צריך להוסיף DataRow, השאלה היא מה ה"מיכל" של הDataRow הללו. אם זה טבלה, אז אפשר להוסיף לה שורה, אבל אם זה שאילתת לינק או מערך, א"א להוסיף איבר.
    אם האוסף הוא אוסף של מספר שלם, ולא של DataRow כמו שסברתי לומר, אז באמת א"א להוסיף Null. אפשר להתגבר על זה, או להפוך את האוסף מסוג Int לסוג ?Int, וזה מאפשר איברים Null, ישנה עוד אפשרות אולי, אבל זה מאוד תלו ברקע: למה איך ועוד.
    מאוד עוזר גם להראות מה ניסו ואיפה נכשלו.

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

    פורסם במקור בפורום CODE613 ב13/10/2013 20:11 (+03:00)

    ארכיון code613m

  • comboBox - WPF
    dovidD dovid

    אנא ערוך את השאלה, היא לא מובנת.

    פורסם במקור בפורום CODE613 ב13/10/2013 15:59 (+03:00)

    ארכיון code613m

  • יצוא לקובץ CSV בעברית
    dovidD dovid

    Using משמש בעיקר לוודא שבתום השימוש תיקרא הפונקצייה Dispose.
    וזאת גם אם תוכנ עפה באמצע השימוש (מאחורי הקלעים הקומפיילר בונה tyr מסביב).
    הפונקציה Dispose דואגת לשחרור השימוש/זיכרון מהאובייקט.
    משתמשים בUsing בכל דבר "יקר": קבצים וכדו'.

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

    פורסם במקור בפורום CODE613 ב10/10/2013 18:38 (+03:00)

    ארכיון code613m

  • יצוא לקובץ CSV בעברית
    dovidD dovid

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

    הקוד דלהלן עובד:

    var fileName = "tests.csv";
    using (StreamWriter sw = new StreamWriter(File.Open(fileName, FileMode.Create), Encoding.UTF8))
    {
        sw.Write("אבג ABC 123");
    }
    

    אני בכלל עובד אחרת: אני קודם יוצר סטרינג ארוך ואח"כ מכניס לתוך הקובץ בבת אחת ככה:

    var strBldr = new StringBuilder();
    strBldr.Append("אבג ABC 123");
    File.WriteAllText(fileName, strBldr.ToString(), Encoding.GetEncoding(1255));
    

    שים לב שכיון שבשם קובץ אפשר לכותב נתיב יחסי, אז אתה לא להשיג את כתובת הנתיב המוחלט.
    לכן אפשר לכתוב בתור שם קובץ "file.csv" והוא יווצר בתייקה בה התוכנה נמצאת.
    או "dir\file.csv" ואז הוא יווצר בתייקה dir שבתוך התיקייה ממנה התוכנה רצה.

    פורסם במקור בפורום CODE613 ב10/10/2013 14:09 (+03:00)

    ארכיון code613m

  • מיון לפי מיקוד 7 ב- linq
    dovidD dovid

    בשאילתה אתה מוסיף עמודת ביטוי, ולפיה אתה ממיין.
    הביטוי צריך להיראות ככה:

    Mid([ColumnName], 1, 5)
    

    כאשר ColumnName זה שם העמודה, ואתה ממיין לפי עמודת הביטוי ולא העמודה המקורית.
    שים לב שזה מיון טקסטואלי, כלומר האות 9 גדולה מהאות 8 אפי' שאחרי ה9 יש נגיד רק ספרה אחת ואחרי ה8 יש 4.
    בדרך כלל זה לא משנה כי כל המיקודים באותו אורך (לא פחות ולא יותר מחמש).

    אם אתה רוצה שהמיון יהיה מספרי,
    אתה צריך עטוף את הפונקצייה דלעיל בביטוי Val שממירה למספר.

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

    iif([ColumnName]>99999, [ColumnName]/100, [ColumnName])
    

    ולמיין לפי הביטוי כמובן.

    הצלחה,
    [size=85:fsxvlofl]ותמיד, תמיד, לשאול בפורום...[/size:fsxvlofl]

    [u:fsxvlofl][size=150:fsxvlofl]עריכה:[/size:fsxvlofl][/u:fsxvlofl]
    רק כעת שמתי לב לכותרת בה כתוב LINQ.
    אני חשבתי שהמדובר על אקסס.
    אז בלינק זה יותר פשוט אפי'...

    order by Mikud.SubString(0,5)
    

    או אם זה מספרי:

    order by (Mikud > 99999 ?? Mikud / 100 : Mikud) (0,5)
    

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

    פורסם במקור בפורום CODE613 ב09/10/2013 17:43 (+03:00)

    ארכיון code613m

  • בעיה קשה מאוד באקסס - קידוד
    dovidD dovid

    @ארכיטקט

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

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

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

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

    פורסם במקור בפורום CODE613 ב13/10/2013 17:44 (+03:00)

    ארכיון code613m

  • בעיה קשה מאוד באקסס - קידוד
    dovidD dovid

    @רחמים

    אולי תעלה כאן איזו דוגמא קלאסית של תוכנה לניהול מכירות כמו Northwind שיש באקסס רק שתהיה עם C#+WPF ?
    תודה.

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

    פתחתי לזה אשכול במדריכים.
    אגב, אני אישית כותב בVB.NET, אך הלומדים בד"כ רוצים C# והיא יותר באופנה.
    אולי נכתוב בשתיהם.

    פורסם במקור בפורום CODE613 ב09/10/2013 13:37 (+03:00)

    ארכיון code613m

  • בעיה קשה מאוד באקסס - קידוד
    dovidD dovid

    עכ"פ, אין על מיקרוסופט 🙂
    אבל "הרוצה להחכים", ברגע שיש לך עצבים לעזוב את אקסס (כלומר: ללמוד קצת דברים אחרים),
    אני כאן בשביל לתת לך את כל הדרוש למצוא מזור אחר (כמובן גם מיקרוספטי כמו C#+WPF וכדו').

    פורסם במקור בפורום CODE613 ב09/10/2013 11:26 (+03:00)

    ארכיון code613m

  • המרת דף PDF לתמונה עם ITextSharp
    dovidD dovid

    @רחמים

    אבל קיבלתי שגיאה: [code]Could not load file or assembly 'libpdf.dll' or one of its dependencies. ‏‏המודול שצוין לא נמצא.

    שים את כל הDLL בתיקיית ההרצה ונסה שוב.

    @רחמים

    נכון, אבל תקן אותי אם אני טועה, אני חושב שכיון שיש לנו את כל המידע על דף הPDF אנו יכולים ליצור תמונה עם פקודות DrawImage ו DrawString שהרי זה לא בעיה לחלץ מתוך הדף את התמונות שלו וכן כנראה יש דרך לדעת כל אות ואות מה ה X וה Y שלה וכן מה הגופן שלה וכו' וכך אפשר ליצור תמונה שתראה ממש כמו דף ה PDF. מי שמכיר את ITEXT טוב בטח ידע להגיד אם אני צודק או לא.

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

    פורסם במקור בפורום CODE613 ב06/10/2013 13:22 (+03:00)

    ארכיון code613m

  • המרת דף PDF לתמונה עם ITextSharp
    dovidD dovid

    מצאתי את הפרוייקט שעשיתי.
    הוא משתמש במחלקה הזאת: https://github.com/mephraim/ghostscriptsharp.
    (צריך לקמפל את הפרוייקט GhostScriptSharp, ולהוסיף רפרנס אליו, וגם לייבא לפרוייקט את הDLL שבתיקייה ThirdParty (זה הGhostScript). במאפייני הDLL בVS צריך לדאוג שיהיה Copy בAction).

    הנה קוד פשוט:

    GhostscriptSharp.GhostscriptWrapper.GeneratePageThumb(fileName, "c:\1.gif", 1, 100, 100)
    

    הפרמטרים: מקור, יעד, עמוד, מימד אורך ורוחב.

    אבל הלינק ההוא מגוגל קוד אולי שווה הצצה.

    פורסם במקור בפורום CODE613 ב03/10/2013 18:49 (+03:00)

    ארכיון code613m

  • המרת דף PDF לתמונה עם ITextSharp
    dovidD dovid

    @רחמים

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

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

    פורסם במקור בפורום CODE613 ב03/10/2013 17:43 (+03:00)

    ארכיון code613m

  • המרת דף PDF לתמונה עם ITextSharp
    dovidD dovid

    אני עשיתי כזה דבר בעבר ע"י הספרייה GhostScript.

    אינני זוכר בדיוק פרטים, אבל נסה לראות כאלו שעשו, כמו:
    http://www.codeproject.com/Articles/32274/How-To-Convert-PDF-to-Image-Using-Ghostscript-API

    אם אתה עדיין לא מצליח אחפש את הקוד שלי.

    עכשיו בחיפוש מצאתי משהו שנראה קל יותר:
    https://code.google.com/p/lib-pdf/

    פורסם במקור בפורום CODE613 ב03/10/2013 13:04 (+03:00)

    ארכיון code613m

  • פוקוס בטופס WPF
    dovidD dovid

    @ayalaleora

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

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

    תודה!

    פורסם במקור בפורום CODE613 ב08/10/2013 11:18 (+03:00)

    ארכיון code613m

  • פוקוס בטופס WPF
    dovidD dovid

    אתה חייב לשייך אירוע לחיצה לכל פקד אחר בטופס.

    KeyDown="MethodeName"
    

    (וכמובן גם לטופס עצמו).
    באירוע אתה בודק שהKey הוא Enter ואם כן אתה קורא לפונקציה Focus של הפקד המתבקש.

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

    פורסם במקור בפורום CODE613 ב02/10/2013 16:51 (+03:00)

    ארכיון code613m

  • פונקציה בסטרינג C#
    dovidD dovid
    "  fsdfsd".Trim();
    

    פורסם במקור בפורום CODE613 ב02/10/2013 16:41 (+03:00)

    ארכיון code613m
  • 1
  • 2
  • 511
  • 512
  • 513
  • 514
  • 515
  • 520
  • 521
  • 513 / 521
  • התחברות

  • אין לך חשבון עדיין? הרשמה

  • התחברו או הירשמו כדי לחפש.
  • פוסט ראשון
    פוסט אחרון
0
  • דף הבית
  • קטגוריות
  • פוסטים אחרונים
  • משתמשים
  • חיפוש
  • חוקי הפורום