@dovid כתב בwpf treeview עם scrollBar יותר יפה:
חפש בגוגל WPF THEMES ותמצא משהו כלבבך ובדוק שהוא מספיק מתוחזק/פופולרי ותשתמש בו.
לא מצאתי משהו שמטפל בscrollbar מישהו מכיר?
הפורום כעת לקריאה בלבד, לקריאה נוספת.
@dovid כתב בwpf treeview עם scrollBar יותר יפה:
חפש בגוגל WPF THEMES ותמצא משהו כלבבך ובדוק שהוא מספיק מתוחזק/פופולרי ותשתמש בו.
לא מצאתי משהו שמטפל בscrollbar מישהו מכיר?
אני מנסה ליצור דף html בו כל האלמנטים של li הם לחיצים לדוגמא מחזיר את מספר האלמנט. אבל בלי לאבד את הנוחות של בחירת הטקסט והעתקתו. ש משהו דומה בספריא.
בעצם הרעיון הוא שאם למשל יש לי מסמך שמציג את החומש אז כל פסוק יהיה אפשר ללחוץ עליו כדי לקבל מפרשים וכו'.
הבעיה שניתקלתי בה שברגע שהגדרתי את האלמנט כלחיץ אז זה מפריע לבחירת הטקסט בלי לחיצה עליו.
מקווה שהשאלה מספיק ברורה
מצו"ב הקוד שעשיתי לבינתיים
<!DOCTYPE html>
<html lang="he">
<head>
<meta charset="UTF-8">
<style>
body {
text-align: right;
text-align: justify;
direction: rtl;
}
h2 {
cursor: pointer;
color: #4169E1;
}
h3 {
cursor: pointer;
color: #6495ED;
}
ol {
list-style-type: hebrew;
}
li:hover {
background-color: #f0f0f0; /* Change the background color to your desired color */
}
</style>
</head>
<body>
<h1>במדבר</h1>
<h2>פרק א</h2>
<ol list-style-type: hebrew;>
<li>וַיְדַבֵּ֨ר יְהֹוָ֧ה אֶל־מֹשֶׁ֛ה בְּמִדְבַּ֥ר סִינַ֖י בְּאֹ֣הֶל מוֹעֵ֑ד בְּאֶחָד֩ לַחֹ֨דֶשׁ הַשֵּׁנִ֜י בַּשָּׁנָ֣ה הַשֵּׁנִ֗ית לְצֵאתָ֛ם מֵאֶ֥רֶץ מִצְרַ֖יִם לֵאמֹֽר׃</li>
<li>שְׂא֗וּ אֶת־רֹאשׁ֙ כׇּל־עֲדַ֣ת בְּנֵֽי־יִשְׂרָאֵ֔ל לְמִשְׁפְּחֹתָ֖ם לְבֵ֣ית אֲבֹתָ֑ם בְּמִסְפַּ֣ר שֵׁמ֔וֹת כׇּל־זָכָ֖ר לְגֻלְגְּלֹתָֽם׃</li>
<li>מִבֶּ֨ן עֶשְׂרִ֤ים שָׁנָה֙ וָמַ֔עְלָה כׇּל־יֹצֵ֥א צָבָ֖א בְּיִשְׂרָאֵ֑ל תִּפְקְד֥וּ אֹתָ֛ם לְצִבְאֹתָ֖ם אַתָּ֥ה וְאַהֲרֹֽן׃</li>
<li>וְאִתְּכֶ֣ם יִהְי֔וּ אִ֥ישׁ אִ֖ישׁ לַמַּטֶּ֑ה אִ֛ישׁ רֹ֥אשׁ לְבֵית־אֲבֹתָ֖יו הֽוּא׃</li>
<li>וְאֵ֙לֶּה֙ שְׁמ֣וֹת הָֽאֲנָשִׁ֔ים אֲשֶׁ֥ר יַֽעַמְד֖וּ אִתְּכֶ֑ם לִרְאוּבֵ֕ן אֱלִיצ֖וּר בֶּן־שְׁדֵיאֽוּר׃</li>
<li>לְשִׁמְע֕וֹן שְׁלֻמִיאֵ֖ל בֶּן־צוּרִֽישַׁדָּֽי׃</li>
<li>לִֽיהוּדָ֕ה נַחְשׁ֖וֹן בֶּן־עַמִּינָדָֽב׃</li>
<li>לְיִ֨שָׂשכָ֔ר נְתַנְאֵ֖ל בֶּן־צוּעָֽר׃</li>
</ol>
<script>
// Define the onclick handler globally
function showAlert() {
// Check if the clicked element is an ol
if (this.tagName.toLowerCase() === 'li' && this.parentElement.tagName.toLowerCase() === 'ol') {
// Get the ordered list number and show an alert
alert(Array.from(this.parentElement.children).indexOf(this) + 1);
} else {
// If not an ol, show the text content
alert(this.textContent);
}
}
// Attach the click event to all elements with the correct classes
var customHeader = document.querySelectorAll('.customHeader');
var customHeader2 = document.querySelectorAll('.customHeader2');
customHeader.forEach(function (header) {
header.addEventListener('click', showAlert);
});
customHeader2.forEach(function (header) {
header.addEventListener('click', showAlert);
});
// Attach the click event to all h1 elements
var h3Elements = document.querySelectorAll('h3');
h3Elements.forEach(function (h3) {
h3.addEventListener('click', showAlert);
});
// Attach the click event to all h2 elements
var h2Elements = document.querySelectorAll('h2');
h2Elements.forEach(function (h2) {
h2.addEventListener('click', showAlert);
});
var liElements = document.querySelectorAll('li');
liElements.forEach(function (li) {
li.addEventListener('click', showAlert);
});
</script>
</body>
</html>
@קומפיונט כתב בשאלה בwpf האם יש דרך להסיר את הצל שסביב האובייקט window:
חלון קלאסי מקבל את העיטורים והלחצנים (של ה'סגור', 'מזער' וכו') ממערכת ההפעלה, זה משתנה בין מערכות הפעלה וזה כולל גם את הצל שמסביב, אם אתה רוצה חלון ללא עיטורים תגדיר את
WindowStyleל -None, בכזה מקרה תקבל מלבן לבן בלי שם דברים מסביב.
לא עזר בשביל הצל רק לשאר הדברים
צריך לעשות גם AllowsTransparency = true;
כמו ש@קומפיונט כתב
אבל מסתבר שאם עושים את זה אז מאבדים את היכולת לשנות את הגודל של החלון.
@dovid כתב בשאלה בC# האם יש דרך קלה להוסיף כפתור dropdown:
ותשנה את הLayout Style שלו לFlow ואת הGrid Style לHidden.
כוונתך כנראה ל-Grip style
ושוב תודה על הכל
@121244 כתב בקוד לעורך טקסט בhtml - שמישהו שלח לי - אולי יהיה שימושי למישהו:
@pcinfogmach
זה מה שעשיתי מזה https://795697842.000webhostapp.com/CreatingHtml
מדהים!
אגב צריך לסדר את הגודל של הלחצנים בסרגל
@dovid
תודה על ההיענות
צור חלונית צד בvsto
הוסף פקד webbrowser
ועוד כפתור
הזן קוד זה עבור הכפתור
private void button1_Click(object sender, EventArgs e)
{
// Generate a temporary file name
string tempHtmlFile = Path.GetTempFileName() + ".html";
// Create and write the HTML content to the temporary file
File.WriteAllText(tempHtmlFile, @"
<!DOCTYPE html>
<html>
<head>
<meta http-equiv='X-UA-Compatible' content='IE=10'>
<script>
function showMessage() {
alert('Button clicked!');
}
</script>
</head>
<body>
<button onclick='showMessage()'>Click Me</button>
</body>
</html>
");
// Load the temporary HTML file into the WebBrowser control
webBrowser1.Navigate(tempHtmlFile);
}
}
וכך זה נראה

מסתבר שטעיתי הקוד שהבאתי לא עשה כלום - הסיבה שלא היה את הבעיה כי במקום לטעון מסמך html עשיתי הזרקה של טקסט לתוך עמוד about:blank
ניסיתי את הקוד שלך וגם לא עזר - אז עכשיו שוב אני תקוע.
(ולעשות כל פעם הזרקה של טקסט במקום טעינת עמוד זה קצת בעייתי מכיון שאני צריך את הפונקציונליות של תנועה קדימה ואחורה בדפים שהמשתמש פתח).
@dovid
ממש תודה! פשוט אין מילים
@dovid כתב בשלאה בקוד C#: איך לעשות חיפוש בתוך מסמך html שהוא פתוח בwebbrowser:
בWinForms יש לזה פתרון, אבל סביר שהוא לא עובד בVSTO (אולי כן, תבדוק)
לבינתיים הקוד הזה עשה את העבודה וגם אין צורך לשחק ברגסטרי
<meta http-equiv='X-UA-Compatible' content='IE=10'>
ושוב תודה
@dovid
מצאתי פיתרון!
Globals.ThisAddIn.Application.WindowDeactivate += Application_WindowDeactivate;
private void Application_WindowDeactivate(Document Doc, Window Wn)
{
if (taskPane != null && taskPane.Visible) { windowSnap = true; }
}
זה קולט את המצב של החלונית צד בעת פתיחת מסמך חדש.
אבל מצאתי גם בעיה אחרת
כאשר סוגרים מסמך ללא שמירה החלונית נעלמת עד המעבר הבא בין מסמכים.
לבינתיים רק מצאתי לזה אילתור מצחיק ובלתי מומלץ מסיבות פשוטות
Globals.ThisAddIn.Application.DocumentBeforeClose += Application_DocumentBeforeClose;
private void Application_DocumentBeforeClose(Document Doc, ref bool Cancel)
{
Globals.ThisAddIn.Application.ActiveWindow.WindowState = WdWindowState.wdWindowStateMinimize;
}
מה שיוצר מצב שהחלונית הנסגרת איננה החלונית האקטיבית
אני רוצה לסכם היכן אנחנו אוחזים:
בעצם יש לנו קוד נפלא של @dovid שמעביר את החלונית צד מממסמך למסמך בצורה נקייה וטובה.
אפשר להגדיר bool שיקבל ערך שקר בעת לחיצה על לחצן הסגירה של חלונית הצד על ידי taskPane.VisibleChanged += TaskPane_VisibleChanged;
ומאידך יקבל ערך אמת על ידי לחיצה על כפתור הפתיחה של החלונית צד.
אפשר גם להוסיף עוד bool ב settings של התוכנה שיתן למשתמש אפשרות לבחור אם החלונית צד תקפוץ ממסמך למסמך או לא.
ויש לנו את ההצעה של @YAKOV2024 שטוען שאולי אפשר להשתמש עם רשימה שרושמת את המסמכים הפתוחים ובכך נוכל להגדיר שרק במסמך המסויים בו נסגר החלונית צד שמה לא יצוץ שוב אבל יישאר בכל שאר המסמכים.
@dovid כתב בשאלה: איך עושים בתוסף vsto לוורד שtaskpane יישאר תמיד בחלונית האקטיבית:
אבל כל הסיפור הזה זה השתלשלות בלתי נסבלת מנושא אחר. כי אין פה שום אזכור בנושא מתי אתה רוצה להציג את החלונית, והיה במשמע שאתה תמיד רוצה.
סליחה שלא כתבתי בהתחלה מספיק ברור.
הרעיון שלי היה לעשות שהחלונית תשאר סטטית בכל המסמכים הפתוחים דהיינו או פתוחה או סגורה.
כי המצב המובנה של וורד שהוא רק פותח חלונית במסמך הנוכחי מאוד מעצבן בתוסף כמו שלי.
אז רציתי לדמות כאילו התוסף פתוח או סגור באותה רמה בכל המסמכים הפתוחים. ושאם כבר פתוח במסמך אחד אז גם ייפתח אוטומטית במסמכים חדשים.
מקווה שכתבתי מספיק ברור.
לגבי הטריגר הוא אמור היות הכפתור סגירה רק שהסתכתי עם זה ועם הbool כנ"ל
ושוב תודה
@dovid
שמתי לב לבעיה בקוד שעשית
מה שקורה הוא שבעצם הקוד לא מסיר את המופע הקודם של ה taskpane אלא רק מסתיר אותו וכאשר אני חוזר אל המסמך הקודם שהייתי בו אז הוא יוצר taskpane חדש וחוזר חלילה.
מה שצריך לעשות זה להוסיף בדיקה עם
|| taskPane.Window != Globals.ThisAddIn.Application.ActiveWindow
ולהוסיף
else
{
taskPane.Visible = true;
}
שפושוט יחזיר את המופע המקורי במקרה שהוא כבר קיים במסמך זה ולא ייצור חדש שוב ושוב
נ.ב. שוב תודה רבה על כל העזרה הנפלאה
@dovid כתב בבקשת עזרה עם קוד בc#:
הקוד שלך נראה כמו של אחד שלא שמע על המושג פונקציה/פרוצדורה מימיו, וזה מאוד מקשה עליך לעבוד.
אתה צריך להתרגל לחלק את הקוד לפיסות קטנות, שעל כל פיסה יש תפקיד מוגדר וסגור. את שיתוף המידע בין הפיסות עושים או עם שדות/מאפיינים משותפים במחלקה (OOP).
תודה על ההערה אני מכיר את המושג פשוט התעצלתי אתה צודק. במאה אחוז.
אגב שאלה האם פיצול קוד ארוך להרבה חלקים עלול להאט את הקוד (כי למעשה עכשיו יש קצת יותר שורות בקוד מאם אילו הכל היה בתוך קוד אחד)
@dovid כתב בבקשת עזרה עם קוד בc#:
if (searchBookList.Contains(filePath))
לא הבנתי שורה זו כי כאן חזרת לstring המקורי לכאורה אז היכן אני משתמש בhashset
Private Sub App_PresentationOpen(ByVal Pres As Presentation)
חוץ מהשאלה שלך שים לב שדלת הזזה מאוד קשה לאטום מבחינת מזג אויר