@מוטי-מן כתב בעבודה בתכנות ממספר מחשבים:
ניסיתי את וואן דרייב וגוגל דרייב - זוועת עולם.
אשמח לדעת מה היה הזוועה
@מוטי-מן כתב בעבודה בתכנות ממספר מחשבים:
ניסיתי את וואן דרייב וגוגל דרייב - זוועת עולם.
אשמח לדעת מה היה הזוועה
@dovid
השאלה היא גם מה וגם איך
אין לי גישה לספריא אבל אני לא צריך דווקא כמו שהם עשו כמו שבר אילן עשו גם טוב (שלוחצים על המספר).
אדרבה במחשבה שנייה מבחינתי יותר מסודר שהמספרים יהיו לחיצים ולא בטקסט. אבל לא הצלחתי.
התוצאה שאני רוצה היא שהמשתמש יוכל לנווט על ידי לחיצה למפרשים הקשורים לאותו הפסוק שהוא לחץ עליו.
@dovid כתב בhtml לחיץ אבל גם שיאפשר בחירה:
בהצעה האחרונה שלך, אתה בודק אם יש טקסט בחור, אבל תמיד בעת תחילת בחירה אין כלום שבחור כעת.
נכון, זה יכול ליצור קצת בעיות.
@dovid
אולי אפשר ככה (שהקוד בודר אם יש טקסט מסומן)
var liElements = document.querySelectorAll('li');
liElements.forEach(function (li) {
li.addEventListener('click', function(event) {
// Check if any text is selected
if (window.getSelection().toString() === '') {
// If no text is selected, call the showAlert function
showAlert.call(li, event);
}
});
});
מה אתה אומר?
@dovid
חשבתי אולי פשוט לעשות שרק המיספור עצמו יהיה לחיץ ולא הטקסט שלו אבל אל הצלחתי לעשות את זה
אני מנסה ליצור דף 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>
קוד C# להמרת מספר למספר עברי - מקווה שיהיה שימושי למישהו.
using System;
public class ClassHebrewNumbering
{
public static string ToHebrewNumber(int number)
{
if (number < 1)
{
throw new ArgumentOutOfRangeException("המספר צריך להיות מעל 1");
}
string hebrewNumber = "";
while (number >= 400)
{
hebrewNumber += "ת";
number -= 400;
}
// Handle numbers 100-390
if (number >= 300)
{
hebrewNumber += "ש";
number -= 300;
}
else if (number >= 200)
{
hebrewNumber += "ר";
number -= 200;
}
else if (number >= 100)
{
hebrewNumber += "ק";
number -= 100;
}
// Handle numbers 10-90
if (number >= 10)
{
int tensIndex = (number / 10) - 1; // Subtract 1 to match array indexing
hebrewNumber += Tens[tensIndex];
number -= (tensIndex + 1) * 10; // Add 1 back for indexing
}
// Handle numbers 1-9
if (number > 0)
{
hebrewNumber += Units[number - 1]; // Subtract 1 to match array indexing
}
hebrewNumber = hebrewNumber.Replace("יה", "טו");
hebrewNumber = hebrewNumber.Replace("יו", "טז");
//hebrewNumber.Replace("רעב", "ערב");
//hebrewNumber.Replace("רעד", "עדר");
//hebrewNumber.Replace("רע", "ער");
//hebrewNumber.Replace("רצח", "רחצ");
//hebrewNumber.Replace("תשמד", "תדשם");
//hebrewNumber.Replace("שמד", "שדמ");
//hebrewNumber.Replace("שד", "דש");
return hebrewNumber;
}
private static readonly string[] Units =
{
"א", "ב", "ג", "ד", "ה", "ו", "ז", "ח", "ט"
};
private static readonly string[] Tens =
{
"י", "כ", "ל", "מ", "נ", "ס", "ע", "פ", "צ", "ק"
};
}
@one1010 כתב בשימוש בעץ/שיח כדי למנוע היזק ראיה:
כמה זמן זה מצריך השקיה? כל חייו?
ממש לא רק עד שהוא נקלט. ואז הוא גודל לבד פחות או יותר.
@one1010
אתה יכול לעשות את זה לבד תשתול אותו בקרבת הגדר תשקה אותו. עיקר הצמיחה תהיה בקיץ כמובן עדיף לעשות את זה לקראת סוף החורף.
אתה יכול למצוא שכן שיש לו ופשוט לתלוש ענף ולשתול אותו.
הנה כתבה מעניינת שראיתי עכשיו לא יכול לאשר אותה.
https://netaplants.co.il/איזה-צמחים-מטפסים-מתאימים-לחומה-או-כיס/
@one1010
פסיפלורה לא התנסיתי. רוב השיחים המטפסים לא צריכים שום תחזוקה רק לגזום אותם כשהם עוברים מעבר למה שרצית.
תצטרך לשים שם איזשהו רשת או משהו שהוא יוכל לטפס עליו.
אגב צריך לוודא שהשיח מטפס הוא רב עונתי.
על שיח מטפס חשבת. תצא אחד שמוצא חן בעיניך ותשתול אותו. שים לב שיש כאלו שגדלים יותר מהר. איך שלא יהיה זה ייקח כמה שנים.
פסיפלורה גודל מאוד מהר אבל זה גם לא שורד לאורך שנים. אתה יכול אולי להתחיל עם פסיפלורה ובו זמנית לבוסיף עוד משהו.
@dovid
סליחה אבל אני עדיין מתקשה בהבנה. אשמח אם מישהו יסביר לי.
אשמח אם מישהו יכו להסביר לי מה זה בדיוק mvvm ומה אני מרוויח מ- mvvm
@dovid כתב באיך לבדוק אם 'קיים חלק ממחרוזת (ברצף) בתוך מסמך. בC#:
@pcinfogmach כן, אתה צריך לבנות אינדקס כמו שתיארתי לך בעבר.
ואז זה לא בעיה כי כל התאמת מילה מעלה את הציון של התוצאה, ואתה מציג את התוצאות הטובות ביותר.
סליחה, לא הבנתי.
ברור שכל התאמת מילה מעלה את התוצאה אבל חשבתי שזה עובד על בסיס חיפוש מילים בודדות. כלומר פיצול מחרוזת החיפוש למילים בודדות.
אבל כמו שציינתי אם אני מחפש ככה אז אקבל גם דברים שלא קשורים בכלל.
לדוגמא אם אחפש "כי ביצחק יקרא לך זרע"
אקבל גם משפט שמכיל את כל המילים הנ"ל אפילו אם יש הפרש גדול בים המילים - בעצם תוצאה לא רלוונטית. איך אני מסנן תוצאות ממין זה?
אוקיי בוא ננסה לשאול את השאלה שוב:
ו@dovid אתה צודק שאני לא בטוח במאה אחוז מה אני מנסה לעשות. ייתכן שהשאלה שלי היא בעצם איך ליצור מנוע חיפוש יותר יעיל. בוא נראה.
המטרה הסופית שלי היא ליצור תוכנה שתוכל ליצור דפי מקורות עבור טקסט מסויים מתוך מאגר של טקסטים בדומה למה שיש בספריא.
הרעיון שלי היה בעצם לערוך חיפוש של טקסטים שמכילים את הטקסט שהמשתמש הזין אבל לקבל גם תוצאות חלקיות.
כרגיל כשרוצים לקבל גם תוצאות חלקיות מה שעושים זה ליצור מערך של נקודות כלומר אם המסמך מכיל X כמות של מילים מתוך המחרוזת שקיבלת אז הוא מסומן כהתאמה.
אבל מה שקורה שאז מקבלים גם תוצאות שבכלל לא רלונטיות ובפרט אם אתה המחפש בתוך מחרוזת ארוכה שעלולה להכיל את המילים שהזנת בתפזורת גדולה.
אז מה שעושים זה ליצור סדר תוצאות לפי כל מיני שיטות ניקוד.
אני חשבתי אולי לסנן חלק מהתוצאות שאינן רלוונטיות על ידי הרעיון הנ"ל של חיפוש זוגות של מילים במקום מילים בודדות.
אני מנסה לעשות חיפוש בתוך מסמכי טקסט (זה פשוט) עם קבלת תוצאה גם על חלק מהמחרוזת. אבל דוקא ברצף.
כלומר אם אני מחפש "ויאמר אלי העבד אולי"
אני רוצה לקבל תוצאות גם עבור "ויאמר אלי" וגם עבור "אלי העבד" וכו'.
לכאורה הדרך לבנות הרבה מיני מחרוזות לחיפוש. השאלה האם שי דרך יותר יעילה לעשות זאת.
contains זה לא אופציה כי אני צריך תוצאות של מילים ברצף.
מקווה שהייתי מספיק ברור.
אני רוצה לבנות תוכנה עם חלון צד בו יהיה אפשרות להציג אפשרויות ופעולות שונות. קצת בדומה לחלונות צד שבוורד.
מה שקורה בוורד שהחלונות צד לא נסגרים אלא מוסתרים בלבד.
אם הייתי עושה זאת בwinforms הייתי עושה כמה userform ופועל עם הסתר הצג ו-bring to front.
השאלה בwpf מ הדרך הכי טובה userform page או משהו אחר לגמרי. ועם איזה פקודות מומלץ להשתמש בwpf כי הצג הסתר עובד שם קצת אחרת.
תודה מראש.
רציתי לשאול אם מישהו יודע מה אפשר לעשות כשיש קובץ xaml מאוד ארוך
האם יש צורה (חוץ מליצור userform) לפרק את הxaml לחתיכות יותר קטנות.
מדובר גם בxaml עם קודים וכו' ולא רק עיצוב בעלמא.
@פלורידה כתב בלמנוע ממשתמשים לסגור תוכנה.:
אני מחפש תוכנה / כלי, שתמנע את האפשרות של משתמשים לסגור תוכנה פעילה.
תודה רבה. וחנוכה שמח!
כלומר כלי שמונע מלסגור תוכנה שאה מגדיר שלא תוכל להיסגר? זה צריך להיות מובנה בתוכנה.
אשמח לקבל עזרה בערכת כפתור wpf:
בעיקרון מה שאמור לקרות בכפתורים של wpf שהטקסט צמוד לשוליים אלא א"כ הגדרתי padding.
כמתואר כאן https://wpf-tutorial.com/el/435/basic-controls/the-button-control/
בפרוייקט שלי פתאום נהיה שוליים מעל ומתחת הטקסט וזה הופך את הכפתור למגעיל - ואני לא מבין למה.
מצו"ב תמונה

מצו"ב הקוד
<Window x:Class="WpfApp3.MainWindow"
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
xmlns:d="http://schemas.microsoft.com/expression/blend/2008"
xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"
xmlns:local="clr-namespace:WpfApp3"
mc:Ignorable="d"
Title="MainWindow" Height="450" Width="800">
<Grid Background="#F4F4F4">
<Grid.ColumnDefinitions>
<ColumnDefinition Width="Auto"/>
<ColumnDefinition Width="Auto"/>
<ColumnDefinition Width="*"/>
</Grid.ColumnDefinitions>
<!-- Sidebar 1 -->
<Border Grid.Column="0" Background="#3498DB" Width="Auto" >
<StackPanel>
<Button
FontSize="36"
Background="{x:Null}"
Foreground="White"
BorderBrush="{x:Null}" HorizontalAlignment="Center" VerticalAlignment="Center">
+
</Button>
<!-- Add sidebar 1 options as needed -->
</StackPanel>
</Border>
<!-- Sidebar 2 -->
<Border x:Name="sidePanel" Grid.Column="1" Background="#3498DB" Width="200" Visibility="Collapsed">
<StackPanel>
<TextBlock Text="Sidebar 2" Foreground="White" FontSize="24" Margin="10"/>
<!-- Add sidebar 2 options as needed -->
</StackPanel>
</Border>
<!-- Main Content Area with Border -->
<Border Grid.Column="2" Grid.Row="1" Background="White" Margin="10">
<Grid>
<Grid.RowDefinitions>
<RowDefinition Height="Auto"/>
<RowDefinition Height="*"/>
</Grid.RowDefinitions>
</Grid>
</Border>
</Grid>
</Window>
@pcinfogmach כתב בשאלה בwpf האם יש דרך להסיר את הצל שסביב האובייקט window:
אבל מסתבר שאם עושים את זה אז מאבדים את היכולת לשנות את הגודל של החלון.
עריכה: צריך לעשות כך במקום
<WindowChrome.WindowChrome>
<WindowChrome GlassFrameThickness="0"
CornerRadius="0"
CaptionHeight="0"/>
</WindowChrome.WindowChrome>
מצו"ב על הדרך קוד לuserform עם אפשרות דומה לחלון של הגדלה וגרירה (לא מושלם אבל עובד)
using System.Windows;
using System.Windows.Controls;
using System.Windows.Input;
namespace newresizableusercontrol
{
public partial class MainWindow : Window
{
private enum HitType
{
None, Body, UL, UR, LR, LL, L, R, B, T
};
private HitType MouseHitType = HitType.None;
private bool DragInProgress = false;
private Point LastPoint;
public MainWindow()
{
InitializeComponent();
}
private HitType SetHitType(Grid grid, Point point)
{
double left = Canvas.GetLeft(grid);
double top = Canvas.GetTop(grid);
double right = left + grid.Width;
double bottom = top + grid.Height;
const double GAP = 10;
if (point.X < left || point.X > right || point.Y < top || point.Y > bottom)
return HitType.None;
if (point.X - left < GAP)
{
if (point.Y - top < GAP) return HitType.UL;
if (bottom - point.Y < GAP) return HitType.LL;
return HitType.L;
}
else if (right - point.X < GAP)
{
if (point.Y - top < GAP) return HitType.UR;
if (bottom - point.Y < GAP) return HitType.LR;
return HitType.R;
}
if (point.Y - top < GAP) return HitType.T;
if (bottom - point.Y < GAP) return HitType.B;
return HitType.Body;
}
private void SetMouseCursor()
{
Cursor desiredCursor = Cursors.Arrow;
switch (MouseHitType)
{
case HitType.None:
desiredCursor = Cursors.Arrow;
break;
case HitType.Body:
desiredCursor = Cursors.ScrollAll;
break;
case HitType.UL:
case HitType.LR:
desiredCursor = Cursors.SizeNWSE;
break;
case HitType.LL:
case HitType.UR:
desiredCursor = Cursors.SizeNESW;
break;
case HitType.T:
case HitType.B:
desiredCursor = Cursors.SizeNS;
break;
case HitType.L:
case HitType.R:
desiredCursor = Cursors.SizeWE;
break;
}
if (Cursor != desiredCursor) Cursor = desiredCursor;
}
private void canvas1_MouseDown(object sender, MouseButtonEventArgs e)
{
MouseHitType = SetHitType(rectangle1, e.GetPosition(canvas1));
SetMouseCursor();
if (MouseHitType == HitType.None) return;
LastPoint = e.GetPosition(canvas1);
DragInProgress = true;
}
private void canvas1_MouseMove(object sender, MouseEventArgs e)
{
if (DragInProgress)
{
Point point = e.GetPosition(canvas1);
double offsetX = point.X - LastPoint.X;
double offsetY = point.Y - LastPoint.Y;
double newX = Canvas.GetLeft(rectangle1);
double newY = Canvas.GetTop(rectangle1);
double newWidth = rectangle1.Width;
double newHeight = rectangle1.Height;
switch (MouseHitType)
{
case HitType.Body:
newX += offsetX;
newY += offsetY;
break;
case HitType.UL:
newX += offsetX;
newY += offsetY;
newWidth -= offsetX;
newHeight -= offsetY;
break;
case HitType.UR:
newY += offsetY;
newWidth += offsetX;
newHeight -= offsetY;
break;
case HitType.LR:
newWidth += offsetX;
newHeight += offsetY;
break;
case HitType.LL:
newX += offsetX;
newWidth -= offsetX;
newHeight += offsetY;
break;
case HitType.L:
newX += offsetX;
newWidth -= offsetX;
break;
case HitType.R:
newWidth += offsetX;
break;
case HitType.B:
newHeight += offsetY;
break;
case HitType.T:
newY += offsetY;
newHeight -= offsetY;
break;
}
if ((newWidth > 0) && (newHeight > 0))
{
Canvas.SetLeft(rectangle1, newX);
Canvas.SetTop(rectangle1, newY);
rectangle1.Width = newWidth;
rectangle1.Height = newHeight;
LastPoint = point;
}
}
else
{
MouseHitType = SetHitType(rectangle1, e.GetPosition(canvas1));
SetMouseCursor();
}
}
private void canvas1_MouseUp(object sender, MouseButtonEventArgs e)
{
DragInProgress = false;
}
}
}
היה מעניין אבל מרגיש לי קצת בזבוז זמן. שוין.