עברית, עברית, עברית

Zeliran

New member
עברית, עברית, עברית

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

gilad g

New member
כן, יש בעיה עם זה... ../images/Emo13.gif

פה: http://www.codeproject.com/useritems/Mirrored_Controls.asp יש מאמר שמסביר על אילו קונטרולים זה חל. הפיתרון שלו הוא לתת Style מסוים:
For forms, you can set an extended Window style to cause mirroring. For most controls that require mirroring, you can create a mirrored control by inheriting from the base control and setting the same Windows extended style.​
את זה תשיג ע"י קוד API. אם אתה צריך דוגמא -- יש לי דוגמא שכתבתי בעבודה, שמטפלת בהפיכת ListView לעברית. אתה יכול לחכות עד יום ראשון?
 

Zeliran

New member
הממ..

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

gilad g

New member
../images/Emo41.gif Zeliran..

יש לי בשבילך את הקוד שהופך ListView:
public struct RECT { int Left; int Top; int Right; int Bottom; } public class HebrewListView : ListView { private const int GWL_EXSTYLE = -20; private const int WS_EX_LAYOUTRTL = 0x00400000; private const int GW_CHILD = 5; //------------------------------------------------------------------------- [DllImport("user32.dll")] public static extern System.IntPtr GetWindow(System.IntPtr hWnd, int wCmd); [DllImport("user32.dll")] public static extern int GetWindowLong(System.IntPtr hWnd, short index); [DllImport("user32.dll")] public static extern int SetWindowLong(System.IntPtr hWnd, short index, int newValue); [DllImport("user32.dll")] public static extern int GetClientRect(System.IntPtr hWnd, ref RECT r); [DllImport("user32.dll")] public static extern int InvalidateRect(System.IntPtr hWnd, ref RECT r, bool Erase); //------------------------------------------------------------------------- public HebrewListView() : base() { } protected override void OnCreateControl() { if(this.RightToLeft==RightToLeft.Yes) { base.OnCreateControl (); int old = GetWindowLong(this.Handle, GWL_EXSTYLE); SetWindowLong(this.Handle, GWL_EXSTYLE, old | WS_EX_LAYOUTRTL); RECT r = new RECT(); GetClientRect(this.Handle, ref r); InvalidateRect(this.Handle, ref r, true); System.IntPtr c = GetWindow(this.Handle, GW_CHILD); old = GetWindowLong(c, GWL_EXSTYLE); SetWindowLong(c, GWL_EXSTYLE, old | WS_EX_LAYOUTRTL); GetClientRect(c, ref r); InvalidateRect(c, ref r, true); } } }​
זוהי בעצם מחלקה היורשת מ-ListView
 

Zeliran

New member
עוד שאלה..

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

gilad g

New member
למה לא לכתוב הכל בבת אחת? ../images/Emo13.gif

string x = myTextBox.Text; StreamWriter r = new StreamWriter(@"C:\myfile.txt"); r.Write(x); r.Close();​
 

Zeliran

New member
בעצם... אולי בגלל זה לא..

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

Zeliran

New member
הערה..

קופסת הטקסט היא בת כמה שורות, לא שורה אחת.. (אם לא הבהרתי את זה מקודם..)
 

Zeliran

New member
הקוד..

saveFileDialog1.ShowDialog(); saveFileDialog1.Title = "Save File To..." ; saveFileDialog1.InitialDirectory = @"c:\" ; saveFileDialog1.Filter = "Text Files (*.txt)|*.txt|All files (*.*)|*.*" ; saveFileDialog1.FilterIndex = 1 ; saveFileDialog1.RestoreDirectory = true ; string path = saveFileDialog1.FileName; string txt = txtBox.Text; StreamWriter sw = new StreamWriter(path); sw.Write(txt); sw.Close();​
 

gilad g

New member
כן..

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

Zeliran

New member
כן

כן.. גם כשאני משתמש ב:
string txt = txtBox.Text; StreamWriter sw = new StreamWriter(@"c:\\Text.txt"); sw.Write(txt); sw.Close();​
הקובץ עדיין ריק.. (WTF?!)
 

Zeliran

New member
עוד משהו...

רשמתי עכשיו את השורה:
MessageBox.Show (txt);​
כדי לראות מה הסטרינג באמת מכיל, וכשאני מריץ את התוכנית, אני מקבל את ההודעה ריקה..
 

gilad g

New member
אוקיי

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

Zeliran

New member
מוזר.. אבל עובד

אין לי מושג מה הייתה הבעיה, אבל מה שעשיתי זה שפשוט מחקתי את ה textBix ושמתי אחד חדש, ועכשיו הכל עובד.. אוקיי...
 
למעלה