- tarik
- عدد المساهمات : 134
تاريخ التسجيل : 08/10/2012
طرق حفظ اعدادات البرنامج
الأربعاء فبراير 06, 2013 4:48 pm
لطريقة الأولى : استخدام ملف نصي
تعد من اسهل الطرق
مشكلتها : يمكن حفظ إعداد واحد فقط في كل ملف نصي في شكل الكود البسيط
لكن ممكن بتعديل وتعقيد الاكواد أن يتم حفظ أكثر من إعداد واحد في كل ملف نصي واحد
لكن هنا سنستخدم الكود البسيط والذي يشمل القراءة من ملف نصي والكتابة إلى ملف نصي
في المثال الخاصية التي أريد حفظ تعديلها هي حالة النافذة التي تقبل ثلاث قيم (كبيرة , مصغرة , عادية ) وتمثلها دلالة
Me.WindowState
كود الكتابة إلى ملف نصي (حتى لو لم يكن الملف موجود مسبقاً فسيتم إنشاءه تلقائياً )
txt1.txt أسم الملف النصي (يحدد من قبل المبرمج )
فهذا يعني أن
Application.StartupPath & "\txt1.txt" هي مسار الملف النصي
Me.WindowState هي القيمة التي نريد كتابتها في الملف النصي (وتكون القيمة عدد صحيح )
False وتعني أننا نريد مسح كافة محتويات الملف النصي قبل الكتابة ,, أما لو أستخدمنا True فكان النص سيتراكم ولن نحصل على فائدة (تستخدم True في هذا الدوال في غير أماكن )
أما كود القراءة من ملف نصي فسيكون
أمر الكبح هنا هو جملة شرطية تراقب هل الملف موجود او لا
بعد التعرف على الأكواد لنضع الآن الأكواد في أحداثها
اولاً في كود تحميل الفورم Form1_Load نضع
أما أذا لم يكن موجود فقم بكتابة الملف وانسب له قيمة حالة الشاشة الافتراضية
الطريقة الثانية : حفظ القيمة في الريجستر
إيضاً من أسهل الطرق
يمكن في مفتاح واحد أنساب عدة قيم لعدة أعدادات وهذا يعطي سهولة في التصميم
لايوجد داعي لأوامر كبح في حال المفتاح غير موجود لأن كود القراءة نفسه يقوم بأنشاء المفتاح وأنساب قيمة أفتراضية له
من الممكن استخدامها في مجال تفعيل البرنامج أو جعل البرنامج تجريبي ,لكن في موضوعنا هذا سنشرح عن استخدامها في مجال حفظ الأعدادت
كود الكتابة العام في الريجستير سيكون من هذا الشكل
والآن في حدث إغلاق الفورم Form1_FormClosed نكتب
هذا هو الاستخدام البسيط والسهل للملف النصي لحفظ الإعدادت
ويجب دائماً أن تبدأ بقاعدة من الريجستر مثل HKEY_CURRENT_USER أما التالي فهو من أختيار المبرمج
arbtech تمثل أسم المفتاح ,, ويمكن في مسار مفتاح واحد وضع أكثر من اسم مفتاح وتخصيص قيمة لكل منها
a تمثل القيمة التي نريد كتابتها في هذا المفتاح
عند تنفيذ هذا الأمر سيتم أنشاء المفتاح في الريجستر وأنساب القيمة a له
الآن كود القراءة العام في الريجستير
والخاصية التي نريد حفظ التعديلات عليها هي حالة النافذة أيضا لذلك سيكون الكود من الشكل
القيمة 0 هي القيمة التي أريد من الكود كتابتها في حال لم يجد المفتاح ,,إذاً منه نجد أن الكود السابق هو قراءة وكتابة وأمر كبح أيضاً (معالجة الاستثناءات )
الآن لنضع الاكواد في الأحداث المناسبة
في حدث تحميل الفورم Form1_Load نضع كود القراءة
طريقة الثالثة : قواعد البيانات
يمكن حفظ كمية كبيرة جداً من الأعدادات في قواعد البيانات
حيث يتم أنشاء قاعدة منفصلة عن القاعدة الاساسية للبرنامج (أو حتى في القاعدة الاساسية يمكن انشاء جدول للأعدادات ) ويتم حفظ القيم في حقول في هذا الجدول مع إغلاق الفورم ويتم استدعاء هذه القيم مع تحميل الفورم
الطريقة متطورة وتتيح للمستخدم خيارات رائعة (في حال استخدمها المبرمج ) وتتيح للمبرمج السهولة أيضاً
يصبح بالأمكان حفظ ألوان النوافذ أو السمات المطبقة وحتى صورة شعار يحددها المستخدم والكثير
أكواد هذه الطريقة لن يتم شرحها والسبب هي أكواد الـ ADO.net نفسها أو أكواد الاتصال عن طريق المعالج وهذه الأكواد مشروحها في قسمها المخصص في المنتدى
يتبقى لنا أهم طريقة وهي My.Settings
الطريقة الرابعة : My.Settings
وهي طريقة نوعية مقدمة من بيئة التصميم نفسها (الفيجوال ستديو )
أولاً يجب التصريح عن المتغيرات التي نريد أنساب قيم الأعدادات لها
يتم ذلك بالأنتقال إلى خصائص المشروع من
Project >>> Project name properties
أو باختيار My Project من متصفح ملفات المشروع Solution
بعد ذلك نختار Settings
الآن نضع في الجدول التصريح عن المتغير الخاص بالأعدادت
حيث
Name هي أسم المتغير وسيكون في هذا المثال arbtech
type هي نوع المتغير ( سلسلة نصية ,, عدد صحيح ,, عبارة أتصال ...إلخ ) وسيكون في مثالنا Integer
Scope وسنختارها User
Value وهي القيمة الأفتراضية لأول مرة يعمل فيها البرنامج ولولاها لشاهدنا رسالة خطأ تفيد بعدم تطابق القيمة المنسوبة إلى الاعداد ,, وفي المثال ستكون القيمة الأفتراضية =0
الآن نكتب الاكواد ( الأعداد الذي أريد حفظه هو حالة النافذة عند الأغلاق والتي تقبل ثلاث قيم )
في حدث تحميل الفورم سنضع الكود
في حدث إغلاق الفورم سنضع الكود التالي
وأكوادها بسيطة
والأهم هو بأستخدام هذه الطريقة يمكن التعديل على عبارة الاتصال الموجودة في حالة الاتصال بقواعد البيانات عن طريق المعالج
ونحتاج إلى هذا التعديل عند توزيع القاعدة على مخدم والبرنامج على أكثر من جهاز
لكن العملية هنا تختلف قليلاً لأن عبارة الأتصال هي للقراءة فقط ولايمكن حفظ التعديل فيها لذلك ستكون بهذا الشكل (في حدث تحميل الفورم الرئيسية أو الأبوية )
d هو المتغير المحفوظ والمنسوب إليه عبارة الاتصال الجديدة
تعد من اسهل الطرق
مشكلتها : يمكن حفظ إعداد واحد فقط في كل ملف نصي في شكل الكود البسيط
لكن ممكن بتعديل وتعقيد الاكواد أن يتم حفظ أكثر من إعداد واحد في كل ملف نصي واحد
لكن هنا سنستخدم الكود البسيط والذي يشمل القراءة من ملف نصي والكتابة إلى ملف نصي
في المثال الخاصية التي أريد حفظ تعديلها هي حالة النافذة التي تقبل ثلاث قيم (كبيرة , مصغرة , عادية ) وتمثلها دلالة
Me.WindowState
كود الكتابة إلى ملف نصي (حتى لو لم يكن الملف موجود مسبقاً فسيتم إنشاءه تلقائياً )
- الكود:
My.Computer.FileSystem.WriteAllText(Application.StartupPath & "\txt1.txt", Me.WindowState, False)
txt1.txt أسم الملف النصي (يحدد من قبل المبرمج )
فهذا يعني أن
Application.StartupPath & "\txt1.txt" هي مسار الملف النصي
Me.WindowState هي القيمة التي نريد كتابتها في الملف النصي (وتكون القيمة عدد صحيح )
False وتعني أننا نريد مسح كافة محتويات الملف النصي قبل الكتابة ,, أما لو أستخدمنا True فكان النص سيتراكم ولن نحصل على فائدة (تستخدم True في هذا الدوال في غير أماكن )
أما كود القراءة من ملف نصي فسيكون
- الكود:
My.Computer.FileSystem.ReadAllText(Application.StartupPath & "\txt1.txt")
- الكود:
Me.WindowState = My.Computer.FileSystem.ReadAllText(Application.StartupPath & "\txt1.txt")
أمر الكبح هنا هو جملة شرطية تراقب هل الملف موجود او لا
بعد التعرف على الأكواد لنضع الآن الأكواد في أحداثها
اولاً في كود تحميل الفورم Form1_Load نضع
- الكود:
If My.Computer.FileSystem.FileExists(Application.StartupPath & "\txt1.txt") = True Then
Me.WindowState = My.Computer.FileSystem.ReadAllText(Application.StartupPath & "\txt1.txt")
Else
My.Computer.FileSystem.WriteAllText(Application.StartupPath & "\txt1.txt", Me.WindowState, True)
End If
أما أذا لم يكن موجود فقم بكتابة الملف وانسب له قيمة حالة الشاشة الافتراضية
الطريقة الثانية : حفظ القيمة في الريجستر
إيضاً من أسهل الطرق
يمكن في مفتاح واحد أنساب عدة قيم لعدة أعدادات وهذا يعطي سهولة في التصميم
لايوجد داعي لأوامر كبح في حال المفتاح غير موجود لأن كود القراءة نفسه يقوم بأنشاء المفتاح وأنساب قيمة أفتراضية له
من الممكن استخدامها في مجال تفعيل البرنامج أو جعل البرنامج تجريبي ,لكن في موضوعنا هذا سنشرح عن استخدامها في مجال حفظ الأعدادت
كود الكتابة العام في الريجستير سيكون من هذا الشكل
والآن في حدث إغلاق الفورم Form1_FormClosed نكتب
- الكود:
My.Computer.FileSystem.WriteAllText(Application.StartupPath & "\txt1.txt", Me.WindowState, False)
هذا هو الاستخدام البسيط والسهل للملف النصي لحفظ الإعدادت
- الكود:
My.Computer.Registry.SetValue("HKEY_CURRENT_USER\Software\tarik", "arbtech", a)
ويجب دائماً أن تبدأ بقاعدة من الريجستر مثل HKEY_CURRENT_USER أما التالي فهو من أختيار المبرمج
arbtech تمثل أسم المفتاح ,, ويمكن في مسار مفتاح واحد وضع أكثر من اسم مفتاح وتخصيص قيمة لكل منها
a تمثل القيمة التي نريد كتابتها في هذا المفتاح
عند تنفيذ هذا الأمر سيتم أنشاء المفتاح في الريجستر وأنساب القيمة a له
الآن كود القراءة العام في الريجستير
- الكود:
My.Computer.Registry.GetValue("HKEY_CURRENT_USER\Software\tarik", "arbtech", "0")
والخاصية التي نريد حفظ التعديلات عليها هي حالة النافذة أيضا لذلك سيكون الكود من الشكل
- الكود:
Me.WindowState = My.Computer.Registry.GetValue("HKEY_CURRENT_USER\Software\tarik", "arbtech", "0")
القيمة 0 هي القيمة التي أريد من الكود كتابتها في حال لم يجد المفتاح ,,إذاً منه نجد أن الكود السابق هو قراءة وكتابة وأمر كبح أيضاً (معالجة الاستثناءات )
الآن لنضع الاكواد في الأحداث المناسبة
في حدث تحميل الفورم Form1_Load نضع كود القراءة
- الكود:
Me.WindowState = My.Computer.Registry.GetValue("HKEY_CURRENT_USER\Software\tarik", "arbtech", "0")
- الكود:
Dim a As Integer = Me.WindowState
My.Computer.Registry.SetValue("HKEY_CURRENT_USER\Software\tarik", "arbtech", a)
طريقة الثالثة : قواعد البيانات
يمكن حفظ كمية كبيرة جداً من الأعدادات في قواعد البيانات
حيث يتم أنشاء قاعدة منفصلة عن القاعدة الاساسية للبرنامج (أو حتى في القاعدة الاساسية يمكن انشاء جدول للأعدادات ) ويتم حفظ القيم في حقول في هذا الجدول مع إغلاق الفورم ويتم استدعاء هذه القيم مع تحميل الفورم
الطريقة متطورة وتتيح للمستخدم خيارات رائعة (في حال استخدمها المبرمج ) وتتيح للمبرمج السهولة أيضاً
يصبح بالأمكان حفظ ألوان النوافذ أو السمات المطبقة وحتى صورة شعار يحددها المستخدم والكثير
أكواد هذه الطريقة لن يتم شرحها والسبب هي أكواد الـ ADO.net نفسها أو أكواد الاتصال عن طريق المعالج وهذه الأكواد مشروحها في قسمها المخصص في المنتدى
يتبقى لنا أهم طريقة وهي My.Settings
الطريقة الرابعة : My.Settings
وهي طريقة نوعية مقدمة من بيئة التصميم نفسها (الفيجوال ستديو )
أولاً يجب التصريح عن المتغيرات التي نريد أنساب قيم الأعدادات لها
يتم ذلك بالأنتقال إلى خصائص المشروع من
Project >>> Project name properties
أو باختيار My Project من متصفح ملفات المشروع Solution
بعد ذلك نختار Settings
الآن نضع في الجدول التصريح عن المتغير الخاص بالأعدادت
حيث
Name هي أسم المتغير وسيكون في هذا المثال arbtech
type هي نوع المتغير ( سلسلة نصية ,, عدد صحيح ,, عبارة أتصال ...إلخ ) وسيكون في مثالنا Integer
Scope وسنختارها User
Value وهي القيمة الأفتراضية لأول مرة يعمل فيها البرنامج ولولاها لشاهدنا رسالة خطأ تفيد بعدم تطابق القيمة المنسوبة إلى الاعداد ,, وفي المثال ستكون القيمة الأفتراضية =0
الآن نكتب الاكواد ( الأعداد الذي أريد حفظه هو حالة النافذة عند الأغلاق والتي تقبل ثلاث قيم )
في حدث تحميل الفورم سنضع الكود
- الكود:
Me.WindowState = My.Settings.arbtech
في حدث إغلاق الفورم سنضع الكود التالي
- الكود:
My.Settings.arbtech = Me.WindowState
وأكوادها بسيطة
والأهم هو بأستخدام هذه الطريقة يمكن التعديل على عبارة الاتصال الموجودة في حالة الاتصال بقواعد البيانات عن طريق المعالج
ونحتاج إلى هذا التعديل عند توزيع القاعدة على مخدم والبرنامج على أكثر من جهاز
لكن العملية هنا تختلف قليلاً لأن عبارة الأتصال هي للقراءة فقط ولايمكن حفظ التعديل فيها لذلك ستكون بهذا الشكل (في حدث تحميل الفورم الرئيسية أو الأبوية )
- الكود:
My.Settings("arbtech") = d
d هو المتغير المحفوظ والمنسوب إليه عبارة الاتصال الجديدة
صلاحيات هذا المنتدى:
لاتستطيع الرد على المواضيع في هذا المنتدى