ما الطريقة الصحيحة لحفظ إعدادات البرنامج بحيث لا تتغير عند نقل مجلد (Debuge) من جهاز إلى آخر
عند إنشاء متغير في settings ثم إسناد قيمة له من قبل المستخدم ثم مجلد البرنامج إلى جهاز آخر فإن قيمة المتغير تعود للقيمة الإفتراضية والمطلوب أن تظل القيمة التي أسندها المستخدم للمتغير قبل ذلك
أرجو أن يكون الحل بعيدًا عن استخدام قواعد البيانات وملفات XML
المشكلة دى جننتنى ، فبعد أن إنتهيت من عمل البرنامج و قمت بعمل الإعدادت للنصوص و الصور و حفظ هذه الإعدادات و لكن عند إنتقال الملف الذى تم صنعة بالبرنامج من جهاز لآخر لم أجد ما تم كتابته
أى عندما يقوم المستخدم بكتابة شىء فى البرنامج أو وضع صورة فإن البرنامج يحفظها عنده فقط و لا يفتح البيانات أو الصور فى أى جهاز أخر
أرجو تفسير ما حدث معى و كيفية معالجته
لا أنصحك بحفظ الإعدادات في My.Settings
لأنه سيحفظ الإعدادات في المسار التالي :
...... C:\Users\User_name\AppData
وضعت لك مثالا لحفظ الإعدادات النموذجية لـ Form1
والكود التالي سيقوم بحفظ الإعدادات التالية :
* لون الفورم
* حجم الفورم
* إلغاء تكبير الفورم
* إلغاء تصغير الفورم
* وضع الفورم في منتصف الشاشة
وهذه الإعدادات يمكنك تعديها في ملف Settings.txt
بداية يجب أن تقوم بإضافة ملف نصي جديد اسمه Settings وضعه في مجلد المشروع Debug
ضع في الملف النصي السطور الخمسة التالية ، ثم قم بحفظ الملف :
BackColor=Silver
Size=937x654
MaximizeBox=False
MinimizeBox=False
StartPosition=CenterScreen
بعد ذلك ضع الأكواد التالية في Form1
كود :
Imports System.ComponentModel
Imports System.IO
Public Class Form1
Dim SettingsPath As String = Path.Combine(Application.StartupPath, "Settings.txt")
Private Sub Form1_Load(sender As Object, e As EventArgs) Handles MyBase.Load
ApplySettings()
End Sub
Sub ApplySettings()
' القيم الافتراضية
Dim backColor As Color = Color.Silver
Dim formSize As Size = New Size(937, 654)
Dim maximizeBox As Boolean = False
Dim minimizeBox As Boolean = False
Dim startPos As FormStartPosition = FormStartPosition.CenterScreen
If File.Exists(settingsPath) Then
Dim lines() As String = File.ReadAllLines(settingsPath)
For Each line In lines
Dim parts() As String = line.Split("="c)
If parts.Length = 2 Then
Dim key As String = parts(0).Trim()
Dim value As String = parts(1).Trim()
Select Case key
Case "BackColor"
Try
backColor = Color.FromName(value)
Catch
End Try
Case "Size"
Dim sizeParts() As String = value.Split("x"c)
If sizeParts.Length = 2 Then
Dim width As Integer = Val(sizeParts(0))
Dim height As Integer = Val(sizeParts(1))
formSize = New Size(width, height)
End If
Case "MaximizeBox"
maximizeBox = (value.ToLower = "true")
Case "MinimizeBox"
minimizeBox = (value.ToLower = "true")
Case "StartPosition"
Select Case value
Case "CenterScreen"
startPos = FormStartPosition.CenterScreen
Case "Manual"
startPos = FormStartPosition.Manual
Case "WindowsDefaultLocation"
startPos = FormStartPosition.WindowsDefaultLocation
Case "WindowsDefaultBounds"
startPos = FormStartPosition.WindowsDefaultBounds
End Select
End Select
End If
Next
End If
Me.BackColor = backColor
Me.Size = formSize
Me.MaximizeBox = maximizeBox
Me.MinimizeBox = minimizeBox
Me.StartPosition = startPos
End Sub
Private Sub Form1_Closing(sender As Object, e As CancelEventArgs) Handles Me.Closing
Dim lines As New List(Of String)
lines.Add("BackColor=" & Me.BackColor.Name)
lines.Add("Size=" & Me.Width & "x" & Me.Height)
lines.Add("MaximizeBox=" & Me.MaximizeBox.ToString())
lines.Add("MinimizeBox=" & Me.MinimizeBox.ToString())
lines.Add("StartPosition=" & Me.StartPosition.ToString())
File.WriteAllLines(settingsPath, lines)
End Sub
End Class
(05-08-25, 11:38 AM)أبو جودة كتب : [ -> ]المشكلة دى جننتنى ، فبعد أن إنتهيت من عمل البرنامج و قمت بعمل الإعدادت للنصوص و الصور و حفظ هذه الإعدادات و لكن عند إنتقال الملف الذى تم صنعة بالبرنامج من جهاز لآخر لم أجد ما تم كتابته
أى عندما يقوم المستخدم بكتابة شىء فى البرنامج أو وضع صورة فإن البرنامج يحفظها عنده فقط و لا يفتح البيانات أو الصور فى أى جهاز أخر
أرجو تفسير ما حدث معى و كيفية معالجته
هذه ميزة وليست سلبية، لو عندك برنامج يعمل على عدة أجهزة في شركة واحدة، فلكل شخص سيكون إعدادت يفضلها، بالتالي الاعدادات التي تختارهات على هذا الجهاز ستختلف عن الإعدادت التي تشغلها على جهاز آخر..
فشخص بصره ضعيف فعنده قصر نظر أو طول نظر أو عنده عمى ألوان فإن إختياراته تختلف عن شخص آخر لا يعاني من هذه المشاكل ..
فكل شخص يختار ما يناسبه .. والكل في نفس الشركة يشغلون نفس البرنامج وكل شخص يرى برنامجه بمشاهد مختلفة مناسبة له..
إما إن كنت تريد حفظ بيانات، فهذه يتعلق بنوعين من قواعد البيانات ،ن إما قواعد حقيقة ومحركات بحث مثل آكسس، سيو إل سيرفر
أو نصية بسيطة مثل إكس إم إل ..
وهذه تحتاج أن تتعلمها جيدا لتحسن إستخدامها .