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

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

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

pcinfogmach

@pcinfogmach
אודות
פוסטים
706
נושאים
186
שיתופים
0
קבוצות
0
עוקבים
3
עוקב אחרי
1

פוסטים

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

  • מדריך: איך לייצר לוקליזציה ב-wpf בצורה פשוטה וקלילה
    pcinfogmachP pcinfogmach

    פתרון פשוט וקליל ללוקליזציה באפליקציות WPF

    (הקוד נמצא בסוף הכתבה)

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

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

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

    השלבים לבניית הפתרון:
    א. שימוש בקובץ JSON
    קובץ JSON מאפשר לנו לנהל ולערוך את כל המחרוזות של האפליקציה בצורה מסודרת ונוחה. המפתח (Key) מייצג את שם הפריט, והערך (Value) מייצג את המחרוזת המתורגמת.
    עבור כל שפה נייצר קובץ נפרד עם הקידומת של השפה בתוך התיקייה הייעודית (בקוד להלן אני בחרתי "Asstes//Locale").
    הקידומת תהיה בת שני אותיות בלבד ובאותיות קטנות למשל "he" או "en".
    שימו לב! בקוד שכתבתי שפת המערכת מזוהה באופן אוטומטי ייתכן וגישה זו איננה מתאימה לכם.
    ב. שימוש במבנה Dictionary סטטי
    אנו נטען את תוכן ה-JSON לקובץ זיכרון באמצעות מילון (Dictionary) סטטי, שיהיה זמין לכל רכיבי האפליקציה.
    ג. שימוש ב-Markup Extension
    ניצור הרחבה מותאמת אישית (Markup Extension) שתאפשר לנו לגשת למחרוזות מתוך ה-JSON ישירות מתוך ה-XAML. (כמו"כ נוכל לצפות בתוצאות בתצוגה המקדימה של עורך ה-Xaml).

    דגשים חשובים לניהול הפתרון:

    • שמות זהים לשמות הפקדים: הקפידו על כך ששמות המפתחות ב-JSON יהיו זהים לשמות הפקדים שאותם הם מתארים. כך, תוכלו לשמור על עקביות ולמנוע טעויות.

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

    {
        "Tooltip.MinimizeButton": "Minimize",
        "Tooltip.CloseButton": "Close",
        "Title.MainWindowTitle": "My Application"
    }
    

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

    להלן הקוד:

    using System.Globalization;
    using System.IO;
    using System.Text.Json;
    using System.Text.RegularExpressions;
    using System.Windows;
    using System.Windows.Markup;
    
    namespace Assets.Locale
    {
     public class LocalizedStringExtension : MarkupExtension
     {
         public string Key { get; set; }
    
         public LocalizedStringExtension() { }
         public LocalizedStringExtension(string key) { Key = key; }
    
         public override object ProvideValue(IServiceProvider serviceProvider)
         {
             if (string.IsNullOrEmpty(Key)) return "[Missing Key]"; 
             else  return LocaleHelper.LocaleDictionary.TryGetValue(Key, out var value) ? value : $"[{Key}]";
         }
     }
    
        public static class LocaleHelper
        {
            private static readonly string LocaleDir = Path.Combine(AppDomain.CurrentDomain.BaseDirectory, "Assets", "Locale");
            private static string LocalePath =>
                Path.Combine(LocaleDir, $"{CultureInfo.CurrentCulture.TwoLetterISOLanguageName}.json") is string path && File.Exists(path)
                    ? path
                    : Path.Combine(LocaleDir, "en.json");
    
            private static Dictionary<string, string>? _localeDictionary;
            public static Dictionary<string, string> LocaleDictionary => _localeDictionary ??= LoadLocaleDictionary();
    
            private static Dictionary<string, string> LoadLocaleDictionary()
            {
                if (!File.Exists(LocalePath))
                    return new Dictionary<string, string>();
    
                try
                {
                    string json = File.ReadAllText(LocalePath);
                    return JsonSerializer.Deserialize<Dictionary<string, string>>(json) ?? new Dictionary<string, string>();
                }
                catch
                {
                    // Return an empty dictionary if reading or deserialization fails
                    return new Dictionary<string, string>();
                }
            }
        }
    }
    
    

    ובתוך ה-xaml יש להוסיף

     xmlns:locale="clr-namespace:Assets.Locale"
    

    ואז תוכלו למשל לעשות כך

      <Button x:Name="MinimizeButton"
      ToolTip="{locale:LocalizedString Key='Tooltip.MinimizeButton'}">
    
    תכנות

  • קוד ל- treeview ב- html כולל חיפוש
    pcinfogmachP pcinfogmach

    קוד ל- treeview ב- html כולל חיפוש - אשמח לקבל משוב - תודה

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

    <!DOCTYPE html>
    <html lang="he">
    <head>
    <meta charset="UTF-8">
    <style>
    html, body {
      height: 100%;
      margin: 0;
      padding: 0;
    }
    
    .container {
      display: flex;
      height: 100%;
    }
    
    .textContentBox {
      background-color: white;
      flex: 1;
      height: 100%;
      margin: 5px;
      padding: 5px;
      overflow-y: auto;
    }
    
    .treeView-container {
       -webkit-touch-callout: none; /* iOS Safari */
        -webkit-user-select: none; /* Safari */
        -khtml-user-select: none; /* Konqueror HTML */
        -moz-user-select: none; /* Firefox */
        -ms-user-select: none; /* Internet Explorer/Edge */
        user-select: none; /* Non-prefixed version, currently supported by Chrome and Opera */
      max-width: 35%;
      background-color: whitesmoke;
      display: flex;
      flex-direction: column;
      margin: 5px;
      padding: 5px;
      height: 100%;
    }
    
    #treeView-SearchInput {
      height:25px;
      border: 1px solid #ccc;
    }
    
    #treeView-SearchInput:focus {
      outline: none;
    }
    
    .treeView {
     height:100%;
      overflow: auto;
      margin-top: 5px;
      white-space: nowrap;
      text-indent: -40px;
    }
    
    .treeView details {
      border-top: 1px solid  #eaeaea;
      border-bottom: 1px solid  #eaeaea;
    }
    
    .treeView summary::-webkit-details-marker {
        display: none;
    }
    
    .treeView summary {
        transition: background-color 0.3s ease;
        list-style: none;
    }
    
    .treeView summary:hover {
      background-color: #eaeaea;
    }
    
    .treeView Button {
      background: none;
      border: none;
      cursor: pointer;
      font-weight: 500;
      margin: 5px;
      transition: background-color 0.3s ease;
      border-radius: 50px;
    }
    
    .treeView button:hover {
      background-color: #eaeaea;
    }
    
    </style>
    </head>
    <body dir="rtl">
    
    <div class="container">
        
      <div class="treeView-container">
          
        <input type="text" id="treeView-SearchInput" onkeyup="findAndSelectItem()" placeholder="חפש כותרת...">
        
        <div class="treeView" id="treeView"> </div>
        
      </div>
      
      <div class="textContentBox" id="contentBox">
      <h2 id="בעל הטורים בראשית המאור, פרק א">פרק א</h2>
    <h3 id="בעל הטורים בראשית המאור, פרק א, פסוק א">פסוק א</h3>
    בראשית ברא. בגימטריא בראש השנה נברא (העולם), בראשית נוטריקון בראשונה ראה אלהים שיקבלו ישראל תורה.<p>
    בראשית ברא אלהים ס''ת אמת מלמד שברא העולם באמת כמו שנאמר ראש דברך אמת וכן יש הרבה פסוקים ס''ת אמת:<p>
    <h3 id="בעל הטורים בראשית המאור, פרק א, פסוק ב">פסוק ב</h3>
    "תֹהוּ וָבֹהוּ" – ב'. הכא, ואידך: "רָאִיתִי אֶת הָאָרֶץ וְהִנֵּה תֹהוּ וָבֹהוּ" (ירמיהו ד כג). מלמד שצפה הקב"ה בבריאת העולם בחורבן הבית, שנחרב בשנת תה"ו, שהרי הבית הראשון עמד ת"י שנה, ונחרב בשנת תי"א. ובית שני עמד כמנין הית"ה, וזהו "וְהָאָרֶץ הָיְתָה". ואחר כך "חֹשֶׁךְ", רמז לגלויות. וכן דורש בבראשית רבה. דבר אחר: "וְהָאָרֶץ הָיְתָה תֹהוּ וָבֹהוּ" – בגימטריא "אלפים שנה בלי תורה".<p>
    "וְרוּחַ אֱלֹהִים מְרַחֶפֶת" – בגימטריא: "זו היא רוחו של מלך המשיח".<p>
    "וְחֹשֶׁךְ עַל פְּנֵי תְהוֹם" – ב' במסורת. הכא, ואידך: "וְחֹשֶׁךְ אֵי זֶה מְקֹמוֹ" (איוב לח יט). זה הוא שאמרו (חגיגה יא ב), שאין לשאול: "מה לפנים? מה לאחור?" "וְחֹשֶׁךְ אֵי זֶה מְקֹמוֹ", פירוש, שאין לשאול אי זה היה מקום החושך תחילה.<p>
    "וְרוּחַ אֱלֹהִים" – ב' דסמיכי. הכא, ואידך: "וְרוּחַ אֱלֹהִים לָבְשָׁה אֶת זְכַרְיָה" (דברי הימים ב כד כ). קרי ביה הכא נמי: "וְרוּחַ אֱלֹהִים לָבְשָׁה". פירוש, שעל ידי לבושו אמר "וַיְהִי אוֹר", דכתיב בתריה: "וַיֹּאמֶר אֱלֹהִים יְהִי אוֹר". וזה הוא שדרשו רז"ל (ב"ר פרשה ג): ממעטה לבושו נבראת האורה.<p>
    <h2 id="בעל הטורים בראשית המאור, פרק לח">פרק לח</h2>
    <h3 id="בעל הטורים בראשית המאור, פרק לח, פסוק טו">פסוק טו</h3>
    פרק לח, טו <p>
    ויחשבה. ג' במסורה. הכא. ואידך: בפרשת לך לך (לעיל טו, ו) ויחשבה לו צדקה. ואידך: ויחשבה עלי לשכורה (ש"א א, יג): <p>
    לזונה. ב' במסורה. ויחשבה לזונה. איכה היתה לזונה (ישעיה א, כא). מה תמר בבזיון ולבסוף בכבוד אף ירושלים סופה בכבוד, כדכתיב (זכריה ב, ט) ולכבוד אהיה בתוכה. וזהו זאת קומתך דמתה לתמר (שה"ש ז, ח).<p>
    <h2 id="בעל הטורים בראשית המאור, פרק מד">פרק מד</h2>
    <h3 id="בעל הטורים בראשית המאור, פרק מד, פסוק יח">פסוק יח</h3>
    ויגש אליו יהודה: ס"ת שוא. שאמר לו אני שוה לך שכמו שאתה מלך גם אני מלך. ועל זה דורש במדרש (ברשית רבה צ"נ:ב') כי הנה המלכים נועדו (תהילים מ"ח:ה'):<p>
    <h2 id="בעל הטורים בראשית המאור, פרק מט">פרק מט</h2>
    <h3 id="בעל הטורים בראשית המאור, פרק מט, פסוק א">פסוק א</h3>
    ויקרא יעקב אל בניו: שביקש לגלות להם הקץ ונסתם ממנו (פסחים נו.). אמר יעקב שמא יש בכם חטא. אמרו לו תדקדק בשמותנו ולא תמצא בהם אותיות חט. ואמר להם קם אין בהם אותיות קץ (עיין ירושלמי יומא ס״פ ז׳, בבלי שם עג:).<p>
    
      </div>
    </div>
    
    <script>
    function populateTreeView() {
      const contentBox = document.getElementById('contentBox');
      const treeView = document.getElementById('treeView');
    
      let currentDetails = treeView;
      let currentIndentLevel = 0;
    
      // Loop through each heading element in contentBox
      contentBox.querySelectorAll('h1, h2, h3, h4, h5, h6').forEach(heading => {
        const indentLevel = parseInt(heading.tagName[1]);
    
        // If the current heading has a lower or equal indent level to the previous one,
        // we need to move up the tree to the appropriate parent details element
        while (currentIndentLevel >= indentLevel) {
          currentDetails = currentDetails.parentElement;
          currentIndentLevel--;
        }
    
        // Create a new details and summary elements
        const details = document.createElement('details');
        const summary = document.createElement('summary');
        const button = document.createElement('button');
        summary.style.paddingRight = 20 * indentLevel + 'px';
        button.textContent = '👁';
        button.setAttribute('onclick', `treeViewSelection('${heading.id}')`);
        button.setAttribute('title', 'הצג');
        summary.appendChild(button);
        summary.appendChild(document.createTextNode(heading.textContent));
        details.appendChild(summary);
    
        // Append the new details element to the currentDetails
        currentDetails.appendChild(details);
    
        // Update the currentDetails and currentIndentLevel for the next iteration
        currentDetails = details;
        currentIndentLevel = indentLevel;
      });
    }
    
    function treeViewSelection(id) {
      // Scroll the corresponding heading into view
      const heading = document.getElementById(id);
      if (heading) {
        heading.scrollIntoView({ behavior: 'smooth', block: 'start' });
      }
    }
    
    // Populate the tree view on page load
    window.onload = populateTreeView;
    
    
    //
    //treeView-Search
    //
    
    function findAndSelectItem() {
        var input = document.getElementById("treeView-SearchInput");
        var filter = input.value.trim().toUpperCase().replace(/,/g, '');
        var details = document.querySelectorAll("details");
        var firstMatchFound = false;
        
        // Collapse all details if filter is empty
        if (filter === "") {
             for (var i = 0; i < details.length; i++) {
            details[i].open = false;
            var summary = details[i].querySelector("summary");
            details[i].style.display = "";
        }
            return; // Exit function
        }
        
        for (var i = 0; i < details.length; i++) {
            var summary = details[i].querySelector("summary");
            if (summary) {
                var parentPath = getParentText(details[i]).replace(/👁/g, '').toUpperCase();
                var summaryPath = summary.textContent.replace(/👁/g, '').trim().toUpperCase();
                var fullPath = parentPath + " " + summaryPath;
                
                // Highlight matching summaries
                if (fullPath.includes(filter)) {
                     details[i].open = true;
                     details[i].style.display = "";
                     
                      if (!firstMatchFound) {
                        summary.scrollIntoView({ behavior: 'smooth', block: 'center' });
                        firstMatchFound = true;
                    }
                     
                     // Open parent details elements recursively
                    var parentDetails = details[i].parentNode;
                    while (parentDetails.tagName === 'DETAILS') {
                        parentDetails.open = true;
                        parentDetails.style.display = "";
                        parentDetails = parentDetails.parentNode;
                    }
                    
                } else {
                     details[i].open = false;
                       details[i].style.display = "none";
                }
            }
        }
    }
     
    function getParentText(element) {
        var text = "";
        var parent = element.parentNode;
        while (parent && parent.tagName.toLowerCase() === 'details') {
            var summary = parent.querySelector("summary");
            if (summary) {
                text = summary.textContent.trim() + " " + text;
            }
            parent = parent.parentNode;
        }
        return text.trim();
    }
    </script>
    
    </body>
    </html>
    
    
    
    תכנות

  • איך יוצרים את האייקון הזה בhtml?
    pcinfogmachP pcinfogmach

    @Sara-Rivka כתב באיך יוצרים את האייקון הזה בhtml?:

    שלום וברכה.
    אין לי ידע בספריות בhtml.
    ואני צריכה לשים את האייקון הזה (החץ הכחול):
    c8c0c0de-7fb5-4cbd-b7ae-bac040e15d50-image.png
    משהו יוכל לכתוב לי קוד לזה?
    תודה מראש.

    הכוונה לא ברורה מספיק:
    אתם מנסים לשים bullet או סתם אייקון או ליצור treeview?

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

    <span style="color: blue;">◂</span>
    

    נלקח מכאן
    https://www.compart.com/en/unicode/search?q=Triangle#characters
    יש שם גדלים שונים וגם כיוונים שונים. למעשה אפשר לשחק עם הגדלים גם בcss font size

    תכנות

  • רעיונות תעסוקה לחופש
    pcinfogmachP pcinfogmach

    במהלך הקורונה עלו המון רעיונות, צריך למצוא מישהו ששמר אותם.

    חפרתי קצת הנה מה שמצאתי

    https://drive.google.com/drive/folders/1FTf3m7tlXn5cVP20tIY2vAzfFPjrNf_i?usp=drive_link

    https://drive.google.com/drive/folders/12hDLhw9GHSfQraUCVDqvY_2ElyHyjRHZ?usp=drive_link

    https://drive.google.com/drive/folders/11oFrrfWzT42Xb2TB2pqlhC2CZoe04UYy?usp=drive_link

    הנה כמה רעיונות לפעילויות שעשיתי עם הילדים לאחרונה:

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

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

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

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

    ציור עם גיר על המדרכה
    החומרים הדרושים: גירים צבעוניים ומדרכה פנויה. (מאוד מלכלך).

    אורגמי
    דרוש ליווי מבוגר,
    יש הרבה אתרים מדהימים בשביל זה.

    עוד רעינונות מאת ידידנו chatgpt

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

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

    הכנת גלידה ביתית בשקית
    החומרים הדרושים: חלב, סוכר, וניל, קרח, מלח גס, שתי שקיות ניילון (אחת קטנה ואחת גדולה).
    א. בשקית הקטנה שמים את החלב, הסוכר, והווניל, וסוגרים היטב.
    ב. בשקית הגדולה שמים קרח ומלח גס.
    ג. מכניסים את השקית הקטנה לתוך הגדולה, מנערים היטב למשך כ-10 דקות, והגלידה מוכנה!

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

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

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

    גומלין - כללי

  • גמ"ח עזרה בvba מאקרו - עבור תוכנת וורד
    pcinfogmachP pcinfogmach

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

    תוכלו לעיין בנושאים אלו בתור התחלה.

    • קורסים למתחילים VBA
    • איך ליצור יוזרפורם userform
    • איך להכין תוסף לוורד בקלות מהקודים שלכם
    • איך להתקין קוד מאקרו בתוך תבנית
    • אוסף קודים שימושיים
    • אוסף תבניות מאקרו
    • תוסף לוורד עם המון קודים שימושיים (התוסף חינמי ואפשר להשתמש בקודים ללא הגבלה)
    • ידיעה חשובה ב-VBA: ביטול פעולה אחרונה למאקרו שלם כיחידה אחת
    • איך למנוע מסך לבן מפקודות מאקרו ארוכות: VBA

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

    תוכנה

  • עזרה ב git
    pcinfogmachP pcinfogmach

    @Sara-Rivka
    לתשומ לבכם
    עבודה ישירה עם Github בתוך Visual Studio Code היא הרבה יותר נוחה וכוללת תמיכה אינטגרטיבית שמפשטת את התהליך.

    תכנות

  • תוסף חיפוש רגקס בוורד
    pcinfogmachP pcinfogmach

    עקב בקשת הציבור
    ערכתי מדריך לתוסף ובתוכו גם המדריך הנפלא של @dovid עבור ביטויי רגקס מכאן

    RegexInWord UserGuide.dotm

    כמו כן הוספתי 2 לחצנים חשובים לתוסף:

    להורדת הגרסה המעודכנת לחצו כאן
    https://github.com/pcinfogmach/RegexInWordPublish/releases/tag/v2.3

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

    b7630531-edf9-4986-a759-9ebd8db5c7b6-image.png

    תכנות

  • מראה יותר אחיד ויפה לפקד ב-wpf
    pcinfogmachP pcinfogmach

    ממש מרגש כל העזרה שקיבלתי פה מחברי הפורום המיוחדים - תודה!

    להלן התוצאה לבינתיים:

    ea0b312b-29fd-4251-ab6b-6e299a8ef152-image.png

    2b3cdf2e-e7b2-4744-9771-7198e2a5b5bd-image.png

    תכנות

  • תוסף חיפוש רגקס בוורד
    pcinfogmachP pcinfogmach

    @pcinfogmach
    לכל מי שביקש נוסף כעת אפשרויות החלפה ברגקס
    תודה רבה לכל העוזרים ובפרט ל-@מד ול-@dovid שללא העצות שלהם לא יודע אם הייתי יכול להשלים את המלאכה

    0df33f4b-ab37-470a-9944-889378c7abb4-image.png

    לחץ כאן כעת

    תכנות

  • כיצד להשוות ערך range.Font.Color לצבע הקסדצימלי ב-VSTO?
    pcinfogmachP pcinfogmach

    @yossiz
    וואו! תודה רבה.
    להלן תקציר תוכן הכתבה:
    (אפשר לעשות דוקטורט בוורד רק מהנושא הזה 🙄 )

    בכתבה מוצג קוד לחישוב דינאמי של הערכים השונים של גווני ערכת הנושא (בערכים דצימליים המומרים ל-hex מיוחד לוורד).
    בנוסף, מופיע קוד לקבלת ערכי ה-hex הקלאסיים של צבעי ערכת הנושא

    העיקרון של הקודים הללו מוסבר בתת-כתבה, והוא קצר וברור.

    כמו כן, מוצג קוד המדמה את הגוונים ב-hex באמצעות HSL. מדובר בקוד מעט מורכב, ולא בהכרח חיוני — שכן בדיאלוג של Word יש רק ערכים סטטיים מסוימים. הדרך היחידה לייצר גוונים אחרים היא באמצעות הקוד שבכתבה, שרוב המשתמשים כלל אינם מכירים או מתעניינים בו.
    כמו"כ אין קוד המחשב כיצד הדיאלוג ב-Word מפיק את הגוונים ועבור אלו צבעים. למעשה, קיימים שלושה סוגי חישוב גוונים בדיאלוג: רקע, טקסט והדגשה. ואפשר לעשות זאת בצורה סטטית.

    תכנות

  • תוסף חיפוש רגקס בוורד
    pcinfogmachP pcinfogmach

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

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

    כמו"כ יצרתי גיטהאב והוספתי קוד בתוכנה עבור בדיקת עידכונים אוטומטית.
    https://github.com/pcinfogmach/RegexInWordPublish/releases/tag/v1

    8f656b54-e0e3-41d3-bf70-e66873821441-image.png

    תכנות

  • עזרה בביטוי רגולארי
    pcinfogmachP pcinfogmach

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

    אם נתעלם לרגע מהנקודה ומה-"|", נוכל להשתמש בשילוב של רג'קס וקוד רקורסיבי עם מבנה נתונים פשוט (@dovid רמז לזה כבר).
    אבל חשוב לציין שזה בהנחה שהטקסט לא מכיל שגיאות או אי-עקביות – אחרת זה כאב ראש * 20.
    להלן דוגמא ב-C# שהזנתי ל-LinqPad, הקוד הינו סקיצה בעלמא תוכל לשפר אותו כיד ה' הטובה עליך:

    void Main()
    {
        string content = "{{some content{{some more content{{some more content{{some more content}}}}}}}}";
            var root = new NestedContent(content, null);
            root.Dump(); // Dump the root object to view its structure
    }
    
    class NestedContent
    {
        public string Content { get; set; }
        public NestedContent Child { get; set; }
    
        public NestedContent(string content, NestedContent parent)
        {
            // Trim only the outermost braces (single pair at start and end)
            if (content.StartsWith("{{") && content.EndsWith("}}"))
            {
                content = content.Substring(2, content.Length - 4);
            }
    
            var match = Regex.Match(content, @"\{\{.*\}\}");
            if (match.Success)
            {
                string nestedContent = match.Value;
                this.Content = content.Replace(nestedContent, ""); // Replace inner braces content
                Child = new NestedContent(nestedContent, this); // Recursive call for nested content
            }
            else
            {
                this.Content = content; // Set content when no more nested structures
            }
        }
    }
    
    

    והתוצאה:

    d7b843dd-ffba-4875-bdb5-2e95805263aa-image.png

    תכנות

  • עזרה בביטוי רגולארי
    pcinfogmachP pcinfogmach

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

    אישית לא הייתי שואל ככה אלא איך לפתור את הבעיה והאם רגקס הוא כיוון טוב.

    תכנות

  • TextBoxFocusBehavior - לשיפור חוויית המשתמש ב-WPF
    pcinfogmachP pcinfogmach

    כאשר עובדים עם TextBox ב-WPF, לפעמים נרצה לשפר את חוויית המשתמש על ידי ביצוע פעולות אוטומטיות, כמו בחירת כל הטקסט כאשר הרכיב מקבל פוקוס או קביעה אוטומטית של פוקוס על TextBox בעת הטעינה.

    אשמח לקבל הערות והארות.

    מצו"ב הקוד:

    public class TextBoxFocusBehavior
    {
        public static bool GetSelectAll(FrameworkElement frameworkElement)
        {
            return (bool)frameworkElement.GetValue(SelectAllProperty);
        }
    
        public static void SetSelectAll(FrameworkElement frameworkElement, bool value)
        {
            frameworkElement.SetValue(SelectAllProperty, value);
        }
    
        public static bool GetCaptureFocus(FrameworkElement frameworkElement)
        {
            return (bool)frameworkElement.GetValue(CaptureFocusProperty);
        }
    
        public static void SetCaptureFocus(FrameworkElement frameworkElement, bool value)
        {
            frameworkElement.SetValue(CaptureFocusProperty, value);
        }
    
        public static readonly DependencyProperty CaptureFocusProperty =
            DependencyProperty.RegisterAttached("CaptureFocus",
                typeof(bool), typeof(TextBoxFocusBehavior),
                new FrameworkPropertyMetadata(false, OnCaptureFocusChanged));
    
        public static readonly DependencyProperty SelectAllProperty =
                 DependencyProperty.RegisterAttached("SelectAll",
                    typeof(bool), typeof(TextBoxFocusBehavior),
                    new FrameworkPropertyMetadata(false, OnSelectAllChanged));
    
        private static void OnSelectAllChanged
                   (DependencyObject d, DependencyPropertyChangedEventArgs e)
        {
            var frameworkElement = d as FrameworkElement;
            if (frameworkElement == null) return;
    
            if (e.NewValue is bool == false) return;
    
            if ((bool)e.NewValue)
            {
                frameworkElement.GotFocus += SelectAll;
                frameworkElement.PreviewMouseDown += IgnoreMouseButton;
            }
            else
            {
                frameworkElement.GotFocus -= SelectAll;
                frameworkElement.PreviewMouseDown -= IgnoreMouseButton;
            }
        }
    
        private static void OnCaptureFocusChanged
                  (DependencyObject d, DependencyPropertyChangedEventArgs e)
        {
            var frameworkElement = d as FrameworkElement;
            if (frameworkElement == null) return;
    
            if (e.NewValue is bool == false) return;
    
            if ((bool)e.NewValue)
            {
                frameworkElement.Loaded += FrameworkElement_Loaded;
            }
            else
            {
                frameworkElement.Loaded -= FrameworkElement_Loaded;
            }
        }
    
        private static void FrameworkElement_Loaded(object sender, RoutedEventArgs e)
        {
            var frameworkElement = e.OriginalSource as FrameworkElement;
            frameworkElement.Focus();
        }
    
        private static void SelectAll(object sender, RoutedEventArgs e)
        {
            var frameworkElement = e.OriginalSource as FrameworkElement;
            if (frameworkElement is TextBox)
                ((TextBoxBase)frameworkElement).SelectAll();
            else if (frameworkElement is PasswordBox)
                ((PasswordBox)frameworkElement).SelectAll();
        }
    
        private static void IgnoreMouseButton
                (object sender, System.Windows.Input.MouseButtonEventArgs e)
        {
            var frameworkElement = sender as FrameworkElement;
            if (frameworkElement == null || frameworkElement.IsKeyboardFocusWithin) return;
            e.Handled = true;
            frameworkElement.Focus();
        }
    }
    

    המחלקה TextBoxFocusBehavior מספקת שתי יכולות:

    Select All: בחירת כל הטקסט כאשר הרכיב מקבל פוקוס.
    Capture Focus: קביעה כי רכיב מסוים יקבל פוקוס אוטומטית בעת טעינת החלון.
    

    דוגמאות שימוש:

    <TextBox Text="Hello, World!" 
             local:TextBoxFocusBehavior.SelectAll="True" 
             local:TextBoxFocusBehavior.CaptureFocus="True" />
    
    תכנות

  • עיצוב מודרני עבור ScrollBar ב- Wpf
    pcinfogmachP pcinfogmach

    מצו"ב הקוד (מתאים במיוחד עבור DarkTheme)
    b7e2b204-9a70-4b9a-b3f4-bd461ed4d20f-image.png

    <ResourceDictionary xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
                        xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
                        xmlns:system="clr-namespace:System;assembly=mscorlib">
    
        <system:Double x:Key="ScrollBarWidth">16</system:Double>
        <system:Double x:Key="ScrollBarArrowHeight">4</system:Double>
        <system:Double x:Key="ScrollBarArrowWidth">8</system:Double>
    
        <SolidColorBrush x:Key="ScrollBarButtonBackgroundBrush" Color="#888888" Opacity="0.4" />
        <SolidColorBrush x:Key="ScrollBarButtonHighlightBackgroundBrush" Color="#B0B0B0" Opacity="0.4" />
    
        <Style TargetType="{x:Type ScrollBar}">
            <Setter Property="Foreground" Value="#FF999999"/>
            <Style.Triggers>
                <Trigger Property="Orientation" Value="Vertical">
                    <Setter Property="Width" Value="{StaticResource ScrollBarWidth}"/>
                    <Setter Property="Template">
                        <Setter.Value>
                            <ControlTemplate TargetType="{x:Type ScrollBar}">
                                <Border BorderThickness="1">
                                    <Border.BorderBrush>
                                        <SolidColorBrush Color="#888888" Opacity="0.6"/>
                                    </Border.BorderBrush>
                                    <Border.Background>
                                        <SolidColorBrush Color="#888888" Opacity="0.1"/>
                                    </Border.Background>
                                    <Grid>
                                        <Grid.RowDefinitions>
                                            <RowDefinition Height="Auto"/>
                                            <RowDefinition Height="*"/>
                                            <RowDefinition Height="Auto"/>
                                        </Grid.RowDefinitions>
    
                                        <Button Grid.Row="0"
                                            Command="ScrollBar.LineUpCommand"
                                            Height="{StaticResource ScrollBarWidth}">
                                            <Button.Template>
                                                <ControlTemplate TargetType="Button">
                                                    <Grid>
                                                        <Rectangle x:Name="ButtonRectangle" 
                                                               Fill="Transparent"/>
                                                        <Path x:Name="ButtonPath" HorizontalAlignment="Center"
                                                          VerticalAlignment="Center"
                                                          Data="M 0 10 L 10 10 L 5 0 Z" 
                                                          Fill="{Binding Foreground, RelativeSource={RelativeSource AncestorType=ScrollBar}}"
                                                          Stretch="Fill"
                                                          Height="{StaticResource ScrollBarArrowHeight}"
                                                          Width="{StaticResource ScrollBarArrowWidth}" />
                                                    </Grid>
                                                    <ControlTemplate.Triggers>
                                                        <Trigger Property="IsMouseOver" Value="True">
                                                            <Setter TargetName="ButtonRectangle" Property="Fill" Value="{StaticResource ScrollBarButtonHighlightBackgroundBrush}" />
                                                        </Trigger>
                                                    </ControlTemplate.Triggers>
                                                </ControlTemplate>
                                            </Button.Template>
                                        </Button>
    
                                        <Track Name="PART_Track" IsDirectionReversed="True" VerticalAlignment="Stretch" Grid.Row="1">
                                            <Track.DecreaseRepeatButton>
                                                <RepeatButton Command="ScrollBar.PageUpCommand"
                                                          Background="Transparent">
                                                    <RepeatButton.Template>
                                                        <ControlTemplate TargetType="RepeatButton">
                                                            <Rectangle Fill="{TemplateBinding Background}" 
                                                                   Height="{TemplateBinding ActualHeight}"
                                                                   Width="{TemplateBinding ActualWidth}" />
                                                        </ControlTemplate>
                                                    </RepeatButton.Template>
                                                </RepeatButton>
                                            </Track.DecreaseRepeatButton>
    
                                            <Track.Thumb>
                                                <Thumb>
                                                    <Thumb.Template>
                                                        <ControlTemplate TargetType="Thumb">
                                                            <Rectangle x:Name="ThumbRectangle" 
                                                                   Fill="{StaticResource ScrollBarButtonBackgroundBrush}" 
                                                                   Margin="1,0,1,0"/>
                                                            <ControlTemplate.Triggers>
                                                                <Trigger Property="IsMouseOver" Value="True">
                                                                    <Setter TargetName="ThumbRectangle" Property="Fill" Value="{StaticResource ScrollBarButtonHighlightBackgroundBrush}" />
                                                                </Trigger>
                                                            </ControlTemplate.Triggers>
                                                        </ControlTemplate>
                                                    </Thumb.Template>
                                                </Thumb>
                                            </Track.Thumb>
    
                                            <Track.IncreaseRepeatButton>
                                                <RepeatButton Command="ScrollBar.PageDownCommand" 
                                                          Background="Transparent">
                                                    <RepeatButton.Template>
                                                        <ControlTemplate TargetType="RepeatButton">
                                                            <Rectangle Fill="{TemplateBinding Background}" 
                                                                   Height="{TemplateBinding ActualHeight}"
                                                                   Width="{TemplateBinding ActualWidth}" />
                                                        </ControlTemplate>
                                                    </RepeatButton.Template>
                                                </RepeatButton>
                                            </Track.IncreaseRepeatButton>
                                        </Track>
    
                                        <Button Grid.Row="2"
                                            Command="ScrollBar.LineDownCommand"
                                            Height="{StaticResource ScrollBarWidth}">
                                            <Button.Template>
                                                <ControlTemplate TargetType="Button">
                                                    <Grid>
                                                        <Rectangle x:Name="ButtonRectangle" 
                                                               Fill="Transparent"/>
                                                        <Path HorizontalAlignment="Center"
                                                          VerticalAlignment="Center"
                                                          Data="M 0 0 L 10 0 L 5 10 Z"
                                                          Fill="{Binding Foreground, RelativeSource={RelativeSource AncestorType=ScrollBar}}"
                                                          Stretch="Fill"
                                                          Height="{StaticResource ScrollBarArrowHeight}"
                                                          Width="{StaticResource ScrollBarArrowWidth}" />
                                                    </Grid>
                                                    <ControlTemplate.Triggers>
                                                        <Trigger Property="IsMouseOver" Value="True">
                                                            <Setter TargetName="ButtonRectangle" Property="Fill" Value="{StaticResource ScrollBarButtonHighlightBackgroundBrush}" />
                                                        </Trigger>
                                                    </ControlTemplate.Triggers>
                                                </ControlTemplate>
                                            </Button.Template>
                                        </Button>
                                    </Grid>
                                </Border>
                            </ControlTemplate>
                        </Setter.Value>
                    </Setter>
                </Trigger>
    
                <Trigger Property="Orientation" Value="Horizontal">
                    <Setter Property="Foreground" Value="#FF999999"/>
                    <Setter Property="Height" Value="{StaticResource ScrollBarWidth}"/>
                    <Setter Property="Template">
                        <Setter.Value>
                            <ControlTemplate TargetType="{x:Type ScrollBar}">
                                <Border BorderThickness="1">
                                    <Border.BorderBrush>
                                        <SolidColorBrush Color="#888888" Opacity="0.6"/>
                                    </Border.BorderBrush>
                                    <Border.Background>
                                        <SolidColorBrush Color="#888888" Opacity="0.1"/>
                                    </Border.Background>
                                    <Grid>
                                        <Grid.ColumnDefinitions>
                                            <ColumnDefinition Width="Auto"/>
                                            <ColumnDefinition Width="*"/>
                                            <ColumnDefinition Width="Auto"/>
                                        </Grid.ColumnDefinitions>
    
                                        <Button Grid.Column="0"
                                            Command="ScrollBar.LineLeftCommand"
                                            Width="{StaticResource ScrollBarWidth}">
                                            <Button.Template>
                                                <ControlTemplate TargetType="Button">
                                                    <Grid>
                                                        <Rectangle x:Name="ButtonRectangle" 
                                                               Fill="Transparent"/>
                                                        <Path HorizontalAlignment="Center"
                                                          VerticalAlignment="Center"
                                                          Data="M 0 5 L 10 0 L 10 10 Z"
                                                          Fill="{Binding Foreground, RelativeSource={RelativeSource AncestorType=ScrollBar}}"
                                                          Stretch="Fill"
                                                          Height="{StaticResource ScrollBarArrowWidth}"
                                                          Width="{StaticResource ScrollBarArrowHeight}" />
                                                    </Grid>
                                                    <ControlTemplate.Triggers>
                                                        <Trigger Property="IsMouseOver" Value="True">
                                                            <Setter TargetName="ButtonRectangle" Property="Fill" Value="{StaticResource ScrollBarButtonHighlightBackgroundBrush}" />
                                                        </Trigger>
                                                    </ControlTemplate.Triggers>
                                                </ControlTemplate>
                                            </Button.Template>
                                        </Button>
    
                                        <Track Name="PART_Track" IsDirectionReversed="False" HorizontalAlignment="Stretch" Grid.Column="1">
                                            <Track.DecreaseRepeatButton>
                                                <RepeatButton Command="ScrollBar.PageLeftCommand"
                                                          Background="Transparent">
                                                    <RepeatButton.Template>
                                                        <ControlTemplate TargetType="RepeatButton">
                                                            <Rectangle Fill="{TemplateBinding Background}" 
                                                                   Height="{TemplateBinding ActualHeight}"
                                                                   Width="{TemplateBinding ActualWidth}" />
                                                        </ControlTemplate>
                                                    </RepeatButton.Template>
                                                </RepeatButton>
                                            </Track.DecreaseRepeatButton>
    
                                            <Track.Thumb>
                                                <Thumb>
                                                    <Thumb.Template>
                                                        <ControlTemplate TargetType="Thumb">
                                                            <Rectangle x:Name="ThumbRectangle" 
                                                                   Fill="{StaticResource ScrollBarButtonBackgroundBrush}" 
                                                                       Margin="0,1,0,1"/>
                                                            <ControlTemplate.Triggers>
                                                                <Trigger Property="IsMouseOver" Value="True">
                                                                    <Setter TargetName="ThumbRectangle" Property="Fill" Value="{StaticResource ScrollBarButtonHighlightBackgroundBrush}" />
                                                                </Trigger>
                                                            </ControlTemplate.Triggers>
                                                        </ControlTemplate>
                                                    </Thumb.Template>
                                                </Thumb>
                                            </Track.Thumb>
    
                                            <Track.IncreaseRepeatButton>
                                                <RepeatButton Command="ScrollBar.PageRightCommand" 
                                                          Background="Transparent">
                                                    <RepeatButton.Template>
                                                        <ControlTemplate TargetType="RepeatButton">
                                                            <Rectangle Fill="{TemplateBinding Background}" 
                                                                   Height="{TemplateBinding ActualHeight}"
                                                                   Width="{TemplateBinding ActualWidth}" />
                                                        </ControlTemplate>
                                                    </RepeatButton.Template>
                                                </RepeatButton>
                                            </Track.IncreaseRepeatButton>
                                        </Track>
    
                                        <Button Grid.Column="2"
                                            Command="ScrollBar.LineRightCommand"
                                            Width="{StaticResource ScrollBarWidth}">
                                            <Button.Template>
                                                <ControlTemplate TargetType="Button">
                                                    <Grid>
                                                        <Rectangle x:Name="ButtonRectangle" 
                                                               Fill="Transparent"/>
                                                        <Path HorizontalAlignment="Center"
                                                          VerticalAlignment="Center"
                                                          Data="M 10 5 L 0 0 L 0 10 Z"
                                                          Fill="{Binding Foreground, RelativeSource={RelativeSource AncestorType=ScrollBar}}"
                                                          Stretch="Fill"
                                                          Height="{StaticResource ScrollBarArrowHeight}"
                                                          Width="{StaticResource ScrollBarArrowWidth}" />
                                                    </Grid>
                                                    <ControlTemplate.Triggers>
                                                        <Trigger Property="IsMouseOver" Value="True">
                                                            <Setter TargetName="ButtonRectangle" Property="Fill" Value="{StaticResource ScrollBarButtonHighlightBackgroundBrush}" />
                                                        </Trigger>
                                                    </ControlTemplate.Triggers>
                                                </ControlTemplate>
                                            </Button.Template>
                                        </Button>
                                    </Grid>
                                </Border>
                            </ControlTemplate>
                        </Setter.Value>
                    </Setter>
                </Trigger>
            </Style.Triggers>
        </Style>
    </ResourceDictionary>
    
    
    תכנות

  • vba אקסס | שמירת משתנה בקוד כל זמן ריצת האקסס
    pcinfogmachP pcinfogmach

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

    תכנות

  • ספריית החיפוש meilisearch ב-בC#
    pcinfogmachP pcinfogmach

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

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

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

    תכנות

  • איך למרכז כפתורים בפקד ToolBar ב-WPF
    pcinfogmachP pcinfogmach

    קוד קצר למרכז כפתורים בפקד ToolBar ב-WPF כך שבמקום להיות מוצמדים לצד הכפתורים יהיו מוצמדים למרכז:

    בלי:
    92f0648b-3850-4698-b7ca-04cb677d7898-image.png
    עם:
    501ccfc3-a5e5-41db-9221-eea8bec094bf-image.png

    <ToolBar.Resources>
        <Style TargetType="{x:Type ToolBarPanel}">
            <Setter Property="HorizontalAlignment" Value="Center"/>
        </Style>
    </ToolBar.Resources>
    
    תכנות

  • פקד colorpicker מובנה של ווינדוס ב-C#
    pcinfogmachP pcinfogmach

    @dovid
    😂 😂 😂 😂 😂 🤣 🤣 🤣 🤣

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

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

    תכנות

  • קוד C# לאפשר ניווט ב-wpf combobox על ידי המקשים
    pcinfogmachP pcinfogmach

    קוד C# לאפשר ניווט ב-wpf combobox על ידי המקשים של המקלדת (אין אפשרות מובנית לעשות זו בצורה יעילה)

    void ComboBox_PreviewKeyDown(object sender, KeyEventArgs e)
            {
    ComboBox comboBox = sender as ComboBox;
                if (e.Key == Key.Up)
                {
                    if (comboBox.SelectedIndex > 0) // Move selection up
                        comboBox.SelectedIndex--;
                    e.Handled = true;
                }
                else if (e.Key == Key.Down)                 // Move selection down
                {
                    if (comboBox.SelectedIndex < comboBox.Items.Count - 1)
                        comboBox.SelectedIndex++;
                    e.Handled = true;
                }
                else if (e.Key == Key.Enter)
                {
                    if (e.OriginalSource is ComboBoxItem comboBoxItem)
                    {
                        //dosomething
                    }
                }
    
            }
    
    תכנות
  • 1
  • 2
  • 3
  • 4
  • 5
  • 13
  • 14
  • 2 / 14
  • התחברות

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

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