• 0
محمد رضى

إضافات ل #c

سؤال

السلام عليكــم ورحمـة الله وبركاتــه ،،

سيكون هذا الموضوع إن شاء الله جامعا لكل الأكواد التي سبق و كتبتها أو سأكتبها إن شاء الله في المستقبل. فبرأيي ما الفائدة من بقائها جامدة في حاسوبي وقد تكون دات فائدة للعديد من الإخوان و الأهم من هذا و ذاك الأجر العظيم الذي أتمناه عند الله تبارك و تعالى بهذه المشاركات... فلنبدأ بمشيئة الله مع أول إضافة :

هذه كلاس استعملتها في برامجي تمكنني أو تمكننا من إضهار كل من نافدة InputBox و MessageBox. الأولى شبيهة مثيلتها في بيئة Visual Basic مع إضافات كتمتعها بخاصية إذخال كلمات المرور و التحكم في مكان ضهورها أما الثانية فهي نافذة رسالة إلى المستخدم تتمتع بخاصية سهولة إضهار نص كبير.

			string result = "";
result = CodeUtils.CommonDialog.InputBox("prompt_text", "Title"); // 1
result = CodeUtils.CommonDialog.InputBox("prompt_text", "Title", true); // 2
result = CodeUtils.CommonDialog.InputBox("prompt_text", "Title", "default_text"); // 3
result = CodeUtils.CommonDialog.InputBox(this, "prompt_text", "Title", "default_text", FormStartPosition.CenterParent, 0, 0); // 4

DialogResult dr;
dr = CodeUtils.CommonDialog.ShowMessageBox(this, "Caption", "Title", MessageBoxButtons.YesNoCancel, MessageBoxIcon.Question, MessageBoxDefaultButton.Button3); // 5

الجملة رقم 1 تضهر نافدة إذخال لها رسالة للمستخدم و عنوان.

post-207152-1248084446_thumb.jpg

الجملة رقم 2 تضهر نافدة إذخال كلمة مرور لها رسالة للمستخدم و عنوان.

post-207152-1248084564_thumb.jpg

الجملة رقم 3 تضهر نافدة إذخال لها رسالة للمستخدم, عنوان, و نص افتراضي.

post-207152-1248084638_thumb.jpg

الجملة رقم 4 تضهر نافدة إذخال لها عنصر النافدة الأم, رسالة للمستخدم, عنوان, نص افتراضي, مكان ضهور النافدة (وسط النافدة الأم), مكان الضهور على المستوى الأفقي ثم على المستوى العمودي. للتحكم في مكان الضهور الأفقي و العمودي يجب تحديد FormStartPosition.Manual

post-207152-1248084638_thumb.jpg

الجملة رقم 5 تضهر نافدة رسالة إلى المستخدم بنفس طريقة الدالة MessageBox.Show

post-207152-1248085003_thumb.jpg

في الملف المرفق تجدون الكلاس و مشروع VC# يضهر خاصيات هذه الكلاس.

أتمنى أن تجدوا هذا مفيدا وحتى إضافة أخرى, أترككم في رعاية الله.

CommonDlgTest.rar

0

شارك هذا الرد


رابط المشاركة
شارك الرد من خلال المواقع ادناه

21 إجابة على هذا السؤال .

  • 0

السلام عليكــم ورحمـة الله وبركاتــه ،،

في هذه الإضافة الثانية سأتشارك معكم كلاس أو component أسميته ListBoxEx أو مربع لائحة مدعم. هذا التدعيم بإضافة خاصية تحرير أسطر الائحة داتيا. أي أن مربع الائحة يتيح للمستخدم تحرير سطر من أسطر الائحة و ذلك إما بالضغط على الزر F2 أو النقر مرتين على السطر و عندها تضهر مربع نص عليه محتوى السطر وبعد التحرير تتم عملية تغيير محتوى السطر بالضغط على الزر Enter أو الإلغاء بالضغط على الزر Escape.

post-207152-1248171555_thumb.jpgpost-207152-1248171575_thumb.jpg

لتدعيم مربع الائحة تمت زيادة خاصيتين و هما :

- Modified : قراءة و كتابة. لمعرفة مأ إذا تم تحرير أحد أسطر مربع الائحة. يمكن تحديد محتوى هذه الخاصية في false للتتم قراءة محتواها لاحقا لمعرفة تغيير المحتوى أم لا.

- TextBoxControl : عنصر مربع نص الذي يستعمل داخليا لتحرير محتوى أسطر مربع الائحة.

تمت كذلك زيادة أحدات للتمكن من التحكم في مربع الائحة :

- ItemModified : يحدت كلما تم تغيير محتوى سطر من أسطر الائحة. هذا الحدت يمكنكم من معرفة رقم السطر الذي تم تغييره, المحتوى القديم و الجديد للسطر.

- TextBoxControlTextChanged : يحدت كلما تم تغيير بمربع نص تحرير محتوى أسطر الائحة و هو الحدت TextChanged لمربع النص المستعمل داخليا لتحرير أسطر الائحة.

في الملف المرفق تجدون أداة ListBoxEx و برنامج صغير لتجريب الاداة.

إلى اللقاء في إضافة أخرى....

WindowsFormsApplication1.rar

تم تعديل بواسطه محمد رضى
0

شارك هذا الرد


رابط المشاركة
شارك الرد من خلال المواقع ادناه
  • 0

بارك الله فيك أخى محمد

0

شارك هذا الرد


رابط المشاركة
شارك الرد من خلال المواقع ادناه
  • 0

شكرا لك أخي بارك الله فيك

0

شارك هذا الرد


رابط المشاركة
شارك الرد من خلال المواقع ادناه
  • 0

السلام عليكم و رحمة الله تعالى و بركاته,,

شكرا لكم إخواني على التشجيع و بارك الله في كل الشباب العربي إن شاء الله...

في هذه الإضافة الثالثة, سأتشارك معكم مربع نص شبيه بتلك التي نجدها على مواقع الأنترنت والتي تظهر نص مساعدة للمستخدم بداخل مربع النص و عند تنشيطها يختفي نص المساعدة تاركا الفرصة للمستعمل بملئ مربع النص بالمعلومات. أسميته TipTextBox و له خاصيتان :

- TipText : تمكن من تحديد نص المساعدة و قراءته.

- TipTextColor : تمكن من تحديد لون نص المساعدة و قراءته. عادة ما يكون اللون رماديا.

post-207152-1248259830_thumb.jpg

يستعمل هذا المربع كأي مربع نص آخر و الخصائص موجودة على نافدة الخصائص. وتمت تجربته و هو مرتبط بقاعدة بيانات كذلك.

في الملف المرفق ستجدون الأداة و برنامج بسيط لإضهار خصائصها حيث سيضهر نص المساعدة عند إلغاء نشاط المربع ويختفي عند تنشيط المربع.

WindowsFormsApplication2.rar

0

شارك هذا الرد


رابط المشاركة
شارك الرد من خلال المواقع ادناه
  • 0

تسلم ايديك يا باشا

الف شكر لحضرتك

تقبل تحياتى

0

شارك هذا الرد


رابط المشاركة
شارك الرد من خلال المواقع ادناه
  • 0

شكرا أخي DotNet-XML...

في هذه الإضافة التالية, سأتشارك معكم هذا component الذي أسميته FloatingFormManager. هذا العنصر ليس له أي تمتيل أو شكل على واجهة المستخدم. بل كل عمله يتم في

الخلفية و عمله هو تسيير النوافد التي تظهر بجانب الأزرار لتسهيل إختيار المستخدم عنصر من لائحة أو قائمة أو ما شابه. لهذا component عدد من الخصائص أخص بالذكر

منها :

- AutoCorrectPosition : للتصحيح الأوتوماتيكي لمكان النافدة عند تغيير مكان النافدة الأم.

- CloseOnHide : للمنادة على الدالة Close() للنافدة بمجرد إخفائها.

- DeactivateHide : لإخفاء النافدة عند إلغاء تنشيط النافدة.

- EscapeKeyPressHide : لإخفاء النافدة عند ضغط المستخدم على الزر Esc.

- LinkedControl : العنصر المرتبط بالنافدة والذي عند النقر عليه تظهر النافدة. في أغلب الأحيان يكون من نوع الزر.

- MouseLeaveHide : لإخفاء النافدة عند خروج مؤشر الفأرة عن إطار النافدة.

- ReturnKeyPressHide : لإخفاء النافدة عند ضغط المستخدم على الزر Enter.

- ShowModal : لإضهار النافدة بالشكل Modal.

- ShowOnClick : لإضهار النافدة عند الحدث Click للعنصر المرتبط عبر الخاصية LinkedControl.

- ShowOnMouseDown : لإضهار النافدة عند الحدث MouseDown للعنصر المرتبط عبر الخاصية LinkedControl.

و له كذلك عدد من الأحداث للتحكم الكامل في النافدة قبل و بعد ضهورها :

- Showing : يحدث قبيل إضهار النافدة و يمكن من القيام بعمليات كـ تهيئة النافدة أو تقرير قبول ضهور النافدة أو لا.

- Shown : يحدث مباشرة بعد ضهور النافدة.

الأحداث الباقية تتعلق بالإخبار في حالة تغيير محتوى خاصية من الخصائص المذكورة سالفا.

لتهيئة عنصر FloatingFormManager, نختار الأداة من على نافدة الأدوات و نزيدها على Form ثم نقوم باختيار العنصر الذي سيرتبط بالنافدة عبر الخاصية LinkedControl و

نختار النافدة الأم عبر الخاصية Owner التي ستكون النافدة التي تمت زيادة FloatingFormManager عليها. و لتتمة عملية التهيئة نقوم بربط الـ componenet بالنافدة

التي ستظهر عند النقر على العنصر المرتبط عن طريق الكود :

floatingFormManager1.FloatingForm = new FormObject();

و هنا لابد من الإشارة إلى أنه يلزم إعادة إنشاء النافدة قبل إضهارها في حالة ما إذا كانت الخاصية CloseOnHide == true

post-207152-1248561546_thumb.jpg

في الملف المرفق ستجدون الأداة FloatingForm و برنامج بسيط لإضهار خصائصها. الجميل في هذا الـ component هو عندما تكون الخاصية AutoCorrectPosition == true و نقوم

بتحريك النافدة الأم.

و حتى الإضافة التالية, أستودعكم الله و أتمنى لي و لكم البركة و النجاح في كل الأعمال...

WindowsFormsApplication3.rar

0

شارك هذا الرد


رابط المشاركة
شارك الرد من خلال المواقع ادناه
  • 0

السلام عليكــم ورحمـة الله وبركاتــه ،،

في هذا الموضوع سأتشارك معكم هذا الكنترول الذي طورته لتمكين المستخدم من سهولة اختيار رسم للكتابة. هذا الكنترول طورته لاستخدامه في مشروع أنا على وشك اتمامه إن شاء الله تعالى.

post-207152-1249993951_thumb.jpg

الكنترول الذي أسميته FontCollectionComboBox بسيط للغاية و لم يحتج إلا إلى ثلاث دوال للتشغيل الأولي.

public FormCollectionComboBox()

و هي دالة الباني الإفتراضي حيث سيتم تحديد الخصائص للإشتغال المثالي للكنتريل إضافة إلى إنشاء كائن للكلاس InstalledFonctCollection و الذي سيحتوي على مجموعة معلومات الرسوم المتبثة على النظام والتي من خلالها يتم ملء اللائحة التي ستظهر للمستخدم وتمكنه من اختيار نوع الرسم.

protected override void OnDrawItem(DrawItemEventArgs e)

هذه الدالة تتم المناداة عليها كلما وجب رسم عنصر من اللائحة. وداخل هذه الدالة يتم رسم العنصر بنوع الرسم الذي يظهر اسمه للمستخدم كما هو الحال في برنامج الورد مثلا.

protected override void OnMeasureItem(MeasureItemEventArgs e)

لأن حجم كل رسم يختلف عن الآخر و بالتالي تختلف أحجام كل عنصر من عناصر اللائحة لتحتوي اسم الرسم كما يجب. هذه الدالة تتم المناداة عليها قبيل المناداة على الدالة OnDrawItem كي نخبر مسير الواجهة بحجم العنصر لتتم عملية رسمه في أحسن الظروف.

في ما يلي كود الكلاس FontCollectionComboBox و في نهاية الموضوع ستجدون مشروع ملحق به الكلاس و برنامج صغير لإضهار امكانيات الكنترول.

	public class FormCollectionComboBox : ComboBox
{
// الكائن الذي يحتوي على لائحة باسم كل أنواع الرسم المتبثة على النظام
private InstalledFontCollection fontCollection;

// الباني الإفتراضي
public FormCollectionComboBox()
{
// إنشاء الكائن الذي سيحتوي على معلومات تخص كل أنواع الرسم المتبثة على النظام
this.fontCollection = new InstalledFontCollection();
// لتسهيل إيجاد اسم رسم عن طريق المساعدة عند الكتابة
this.AutoCompleteMode = AutoCompleteMode.Append;
this.AutoCompleteSource = AutoCompleteSource.ListItems;
// لتنبيه مسير الواجهة أن عناصر الائحة ليست لها نفس الإرتفاع
this.DrawMode = DrawMode.OwnerDrawVariable;
// لنبدأ من الصفر
this.Items.Clear();
// نملأ الائحة بأسماء أنواع الرسوم
if (LicenseManager.UsageMode == LicenseUsageMode.Runtime)
{
foreach (FontFamily ff in this.fontCollection.Families)
{
this.Items.Add(ff.Name);
}
}
this.IntegralHeight = true;
}

// هذه الدالة تتم المناداة عليها في كل مرة يجب فيها رسم عنصر من الائحة
protected override void OnDrawItem(DrawItemEventArgs e)
{
// للحماية من الأخطاء
if ((e.Index >= this.fontCollection.Families.Count<FontFamily>()) | (e.Index < 0))
{
base.OnDrawItem(e);
}
else
{
// رسم خلفية العنصر
e.DrawBackground();
// رسم العنصر بنوع الرسم الذي يشير إلى اسمه
Font f = new Font(this.fontCollection.Families[e.Index].Name, e.Font.Size, FontStyle.Bold);
SolidBrush b = new SolidBrush(e.ForeColor);
StringFormat sf = new StringFormat {
LineAlignment = StringAlignment.Center
};
e.Graphics.DrawString(this.fontCollection.Families[e.Index].Name, f, b, e.Bounds, sf);
f.Dispose();
b.Dispose();
// رسم إطار الفوكيوس
e.DrawFocusRectangle();
// تمرير الحدث إلى الكائن الموروث عنه كي يقوم بعمله
base.OnDrawItem(e);
}
}

// تتم المناداة على هذه الدالة قبيل رسم عنصر من الائحة لحساب و تحديد
// حجم العنصر في حالة ما إذا كانت العناصر ليست متساوية في الحجم
protected override void OnMeasureItem(MeasureItemEventArgs e)
{
// للحماية من الأخطاء
if ((e.Index >= this.fontCollection.Families.Count<FontFamily>()) | (e.Index < 0))
{
base.OnMeasureItem(e);
}
else
{
// حساب حجم العنصر بناء على نوع الرسم الذي سيستعمل لرسم الإسم
Font f = new Font(this.fontCollection.Families[e.Index].Name, this.Font.Size, FontStyle.Bold);
e.ItemHeight = (int) Math.Round((double) (f.GetHeight(e.Graphics) * 1.1));
e.ItemWidth = this.DropDownWidth;
f.Dispose();
//تمرير الحدث إلى الكائن الموروث عنه كي يقوم بعمله هو الآخر
base.OnMeasureItem(e);
}
}
}

و حتى الإضافة التالية بإذن الله...

تحياتي...

WindowsFormsApplication5.rar

0

شارك هذا الرد


رابط المشاركة
شارك الرد من خلال المواقع ادناه
  • 0

السلام عليكــم ورحمـة الله وبركاتــه ،،

تحدير : استعمال البرنامج و الكود قد يؤديان إلى خسارة بياناتكم إذا لم يستعملا كما يجب. المرجو انشاء قاعدة بيانات للتجربة و عدم تشغيل الكود على قاعدة بيانات مهمة إلا بعد فهم الكود فهما جيدا.

في هذا الموضوع سأتشارك معكم كود عانيت الأمرين ليشتغل على كل الأجهزة. في كل مرة أنقحه و أتبث الإصدارة الجديدة يتصل بي الزبون بعد أيام ليقول لي أن هناك أخطاء عند إنشاء نسخة احتياطية لقاعدة البيانات. المهم, هاهو الكود جاهز للاشتغال و سهل إلصاقه و تنقيحه للعمل في مشروعات الأعضاء الكرام. الكود سيسهل عمليات إنشاء نسخ احتياطية لقواعد البيانات من نوع SQL Server و استعادتها وقت الحاجة و كل هذه العمليات ستكون بطريقة برمجية.

post-207152-1250168236_thumb.jpg

لمن له مع لغة VB.NET فهذا الرابط به الشرح و الكود معا.

في الملف المرفق ستجدون مشروع برنامج يقوم بإنشاء نسخ احتياطية لقواعد بيانات SQL Server و كذلك استعادتها من ملفات النسخ الإحتياطية. الكود معلق عليه بالتفصيل الممل و أنا جاهز للإجابة عن استفساراتكم.

ملاحظة : لضمان نجاح عمليات إنشاء نسخ احتياطية عبر كود هذه الإضافة, المرجو انشاء مجلد به كل الأذونات للمستخدم Users و ذلك بواسطة نافدة خصائص المجلد عبر Tab Security.

تحياتي...

WindowsFormsApplication6.rar

تم تعديل بواسطه محمد رضى
0

شارك هذا الرد


رابط المشاركة
شارك الرد من خلال المواقع ادناه
  • 0

السلام عليكم و رحمة الله تعالى و بركاته,,,

في هذه الإضافة, مربع نص بسيط, شعرت أنني سأحتاجه يوما نظرا لكثرة طلبات الأعضاء مثله. مربع النص هذا أظفت إليه خاصيتان :

post-207152-1251157520_thumb.jpg

FilterChars : من نوع string حيث يمكن للمبرمج تحديد الكاراكترز التي يريد قبولها أو رفضها من المستخدم.

FilterType : من نوع enum يقبل FilterType.Ignore لتصبح الكاراكترز في الخاصية FilterChars مرفوضة ولن يقبلها من المستخدم الذي سيسمع صوت تنبيه عند محاولة إدخال كاراكتر مرفوض. يقبل FilterType.Accept لتصبح الكاراكترز في الخاصية FilterChars هي وحدها المقبولة و لن يقبل غيرها من المستخدم الذي سيسمع صوت تنبيه في حالة محاولة إدخاله كاراكتر غير التي هي مقبولة.

الأداة متوفرة على خاصية التنظيف الأوتوماتيكي للنص في حالة إلصاقه من طرف المستخدم.

هذا كود الكلاس CharFilterTextBox :

using System;
using System.Linq;
using System.Windows.Forms;

namespace WindowsFormsApplication8
{
class CharFilterTextBox : TextBox
{
#region Private Constants
/// <summary>
/// WM_PASTE Windows message ID
/// </summary>
private const int WM_PASTE = 0x302;
#endregion

#region Internal Data
/// <summary>
/// FilterType يحوي كل الكاراكترز التي ستكون إما مقبولة أو مرفوظة حسب محتوى الخاصية
/// </summary>
internal string filterChars = string.Empty;
/// <summary>
/// أو قبولها FilterChars نوعية الفلتر, إما رفض الكاراكترز الموجودة بالخاصية
/// </summary>
internal FilterType filterType = FilterType.Ignore;
/// <summary>
/// لتنظيف نص المربع بعد عملية اللصق
/// </summary>
internal bool clearAfterPaste = false;
#endregion

#region Properties
/// <summary>
/// FilterType يحوي كل الكاراكترز التي ستكون إما مقبولة أو مرفوظة حسب محتوى الخاصية
/// </summary>
public string FilterChars
{
get { return filterChars; }
set { filterChars = value; }
}

/// <summary>
/// أو قبولها FilterChars نوعية الفلتر, إما رفض الكاراكترز الموجودة بالخاصية
/// </summary>
public FilterType FilterType
{
get { return filterType; }
set {filterType = value; }
}
#endregion

#region Overloaded functions
// FilterType التقاط الكاراكترز قبل وصولها إلى المربع لقبولها أو رفضها حسب الخاصية
protected override void OnKeyPress(KeyPressEventArgs e)
{
if (!char.IsControl(e.KeyChar)) {
if(filterType == FilterType.Accept) {
if(!filterChars.Contains(e.KeyChar)) e.Handled = true;
} else if(filterType == FilterType.Ignore) {
if(filterChars.Contains(e.KeyChar)) e.Handled = true;
}
if(e.Handled) System.Media.SystemSounds.Asterisk.Play();
}

base.OnKeyPress(e);
}

// إلتقاط رسالة الويندوز التي مفادها أن نصا قد تم لصقه على مربع النص
protected override void DefWndProc(ref Message m)
{
// مربع النص يحتاج التنظيف
if (m.Msg == WM_PASTE) clearAfterPaste = true;
base.DefWndProc(ref m);
}

// فقط عندما يحتاج المربع إلى التنظيف بعد لصق نص
protected override void OnTextChanged(EventArgs e)
{
if(clearAfterPaste) {
for(int i = 0; i < base.Text.Length; i++) {
if(filterType == FilterType.Accept) {
if (!filterChars.Contains(base.Text[i])) base.Text = base.Text.Remove(i, 1);
} else if(filterType == FilterType.Ignore) {
if (filterChars.Contains(base.Text[i])) base.Text = base.Text.Remove(i, 1);
}
}
clearAfterPaste = false;
}

base.OnTextChanged(e);
}
#endregion
}

/// <summary>
/// نوعية الفلتر التي من خلالها سيتم زيادة أو رفض الكاراكترز المدخلة من طرف المستخدم
/// </summary>
public enum FilterType
{
/// <summary>
/// سيتم قبولها FilterChars مجموعة الكاراكترز الموجودة على الخاصية
/// </summary>
Accept,
/// <summary>
/// سيتم رفضها FilterChars مجموعة الكاراكترز الموجودة على الخاصية
/// </summary>
Ignore
};
}

في الملف المرفق الأداة CharFilterTextBox و مشروع صغير يبين خصائص الأداة.

تحياتي...

WindowsFormsApplication8.rar

0

شارك هذا الرد


رابط المشاركة
شارك الرد من خلال المواقع ادناه
  • 0

هذا كود منقح للدالة OnTextChanged :

		// فقط عندما يحتاج المربع إلى التنظيف بعد لصق نص
protected override void OnTextChanged(EventArgs e)
{
if(clearAfterPaste) {
clearAfterPaste = false;
string s = base.Text;
for(int i = 0; i < s.Length; i++) {
if(filterType == FilterType.Accept) {
if (!filterChars.Contains(s[i])) s = s.Remove(i--, 1);
} else if(filterType == FilterType.Ignore) {
if (filterChars.Contains(s[i])) s = s.Remove(i--, 1);
}
}
base.Text = s;
base.SelectionStart = s.Length;
}

base.OnTextChanged(e);
}

تحياتي...

تم تعديل بواسطه محمد رضى
0

شارك هذا الرد


رابط المشاركة
شارك الرد من خلال المواقع ادناه
  • 0

مفيد جداً هذه الكنترولز لكن لى إستفسار واحد كيف استطيع إستخدام هذه الكنترولز فى الويب سايت ؟ لأنى حاولت أضيفه ما أستطعت

أشكركم

مع التحية

0

شارك هذا الرد


رابط المشاركة
شارك الرد من خلال المواقع ادناه
  • 0

شكرا لكما أخوي الكريمين :)

بالنسبة لسؤال الأخ الكريم MasterDotNet, أفترض أنك تعمل على ASP.NET إذا كان افتراضي صحيح فحاول أن تخصص مكتبة تزيد فيها الكنترول و حاول زيادة Reference إليه على مشروعك. نشط نافذة الأدوات و انقر عليها بالزر الأيمن للفأرة ثم اختر من القائمة Choose elements... على النافذة التي ستظهر انقر على الزر Browse... ابحث عن المكتبة التي بها الأداة و اخترها. إذا كان الأمر ممكنا سوف تظهر على نافذة الأدوات. صراحة لم أجرب.

تحياتي...

0

شارك هذا الرد


رابط المشاركة
شارك الرد من خلال المواقع ادناه
  • 0

لم أجرب هذه الدوات لكن ان كانت مجهزه للعمل على WindowsForms فلن تعمل على الـ WebForms.

عموماً مجهود رائع أخي محمد رضى جزاك الله عنه كل خير :)

تم تعديل بواسطه hazzoom
تصحيح خطأ مطبعي
0

شارك هذا الرد


رابط المشاركة
شارك الرد من خلال المواقع ادناه
  • 0

السلام عليكــم ورحمـة الله وبركاتــه ،،

شكرا لك أخي حزوم على المرور و التشجيع...

في هذه الإضافة, قمت بترجمة الفئة RegistryFinder التي صممتها خصيصا للموضوع تعاملات متقدمة على سجل ويندوز على قسم VB.NET هذه الفئة تفوم بعمل بحث داخل سجل ويندوز مستعملة في ذلك مسلكا خاصا يمكن البرنامج الذي تعمل فيه على استكمال عمله في أفضل الضروف دون التسبب في تقله أو فقدان فعاليته. الكود وراء هذه الفئة سهل و بسيط للغاية تجدون دراسة له على الموضوع المخصص لشرحه.

post-207152-1252203234_thumb.png

في الملف المرفق ستجدون الكود الكامل للفئة RegistryFinder و برنامج صغير يظهر وضائفها كما هو مبين في صورة واجهة المستخدم أعلاه. الكود معلق عليه بالتفصيل الممل و الموضوع الذي يناقش الكود موجود هو الآخر و أنا جاهز في أي لحظة لاستفساراتكم.

أظن أنني لن أستعرض الكود على هذا الرد و إنما فقط كود صغير لمشروع كونسول يمكنكم من البحث داخل سجل ويندوز.

using System;

namespace ConsoleApplication1
{
class Program
{
static void Main(string[] args)
{
// تهيئة الكومبوننت على شكل فئة
RegistryFinder rf = new RegistryFinder();
// اشتراك في الحدث الذي يحدث عند العثور على عنصر تتوفر فيه شروط البحث
rf.EntryFound += new RegistryFinder.EntryFoundEventHandler(rf_EntryFound);
// النص المبحوث عنه
rf.TextToFind = "Windows";
// بدء عملية البحث
rf.Start();
// انتظار نهاية عملية البحث
while (rf.IsRunning);
}

// الدالة المشتركة في الحدث الذي يحدث عند العثور على عنصر تتوفر فيه شروط البحث
static void rf_EntryFound(object sender, EntryFoundEventArgs e)
{
// كتابة اسم المفتاح الذي وجد عليه
Console.WriteLine(e.KeyName);
}
}
}

تحياتي...

RegFinder.rar

0

شارك هذا الرد


رابط المشاركة
شارك الرد من خلال المواقع ادناه
  • 0

السلام عليكــم ورحمـة الله وبركاتــه ،،

في هذه الإضافة, زر أو Button بنمط ويندوز فيستا. هذه الأداة ستمكننا من إضافة أزرار مثل تلك التي تظهر على واجهات البرامج المتبثة مع نظام تشغيل ويندوز فيستا بكل سهولة. لهذه الأداة خاصيتان :

NoteText : خاصية من نوع string تمكننا من تحديد أو قراء نص التعليق الضاهر على الزر.

ShieldIcon : خاصية من نوع bool تمكننا من إضهار شارة درع حماية ويندوز إذا كانت true أو سهم أخضر بجانب نص الزر في حالة false. هذه الخاصية تمكننا من إخبار المستخدم أن الوظيفة التي يشغلها الزر تحتاج إلى صلاحيات مدير النظام.

post-207152-1252537676_thumb.jpg

الكود بسيط للغاية و موجود على الملف المرفق الذي هو عبارة عن مشروع C# به الأداة CommandLinkButton مع التعليق و مشروع صغير يضهر خصائص الأداة. و لمن يريد المزيد من المعلومات, هذا رابط نحو موضوع في قسم VB.NET به شرح مفصل للكود.

تحياتي...

CommandLink.rar

0

شارك هذا الرد


رابط المشاركة
شارك الرد من خلال المواقع ادناه
  • 0

السلام عليكم و رحمة الله تعالى و بركاته,,,

كنت في هذا الرد في نفس الموضوع الحالي قد تكلمت عن مربع نص يمكننا من تحديد نص مساعدة للمستخدم و عندما يقوم هذا الأخير بتنشيط المربع يختفي نص المساعدة تاركا الحرية للمستخدم لإدخال المعلومات التي يريد. تلك الأداة قمت بتطويرها من الصفر و تطلبت ما يقارب المائتين من الأسطر. اكتشفت أخيرا أننا يمكن أن نقوم بنفس العمل بكود مكون من أقل من عشرة أسطر كما يلي :

نقوم أولا بكتابة تعريفات لاستعمال إجراءات API :

		private const int ECM_FIRST = 0x1500;
// رسالة ويندوز لتحديد نص المساعدة
private const int EM_SETCUEBANNER = (ECM_FIRST + 1);

// دالة إرسال رسائل ويندوز
[System.Runtime.InteropServices.DllImport("user32.dll", CharSet=System.Runtime.InteropServices.CharSet.Unicode)]
private static extern IntPtr SendMessage(System.Runtime.InteropServices.HandleRef hWnd, uint Msg, IntPtr wParam, string lParam);

لتحديد نص المساعدة على مربع نص, نقوم بالمناداة على الدالة SendMessage و تمرير مرجع المربع كبارامتر أول. البارامتر الثاني نحدد من خلاله الرسالة EM_SETCUEBANNER. البارامتر الثالث نحدده على الصفر للحفاظ على طريقة الإشتغال العادية. البارامتر الأخير نمرر من خلاله نص المساعدة الذي نريد أن نظهره على مربع ألنص. و هذا كود توضيحي :

			// تحديد نص المساعدة على مربع النص
SendMessage(new System.Runtime.InteropServices.HandleRef(textBox1, textBox1.Handle), EM_SETCUEBANNER, IntPtr.Zero, "نص المساعدة.");

يمكنكم أيضا تجريب الكود على مربع من نوع Combo box.

تحياتي...

0

شارك هذا الرد


رابط المشاركة
شارك الرد من خلال المواقع ادناه
  • 0

بصراحة ألق فاق الأفق .. كتب الله لك الأجر .. لايعمل هذا إلا شخص كريم .. مثلك

0

شارك هذا الرد


رابط المشاركة
شارك الرد من خلال المواقع ادناه
  • 0

السلام عليكم

اين اضع الكود بتاع نص المساعده حتى يعمل

وهل هناك دروس للتعامل مع ال API

وياريت يااخ محمد تعطينا فكره مختصره عنها ارجو الرد وجزاك الله خيرا وزادك علما

0

شارك هذا الرد


رابط المشاركة
شارك الرد من خلال المواقع ادناه
  • 0

اكرمك الله بنظر الي وجه الكريم

0

شارك هذا الرد


رابط المشاركة
شارك الرد من خلال المواقع ادناه

من فضلك سجل دخول لتتمكن من التعليق

ستتمكن من اضافه تعليقات بعد التسجيل



سجل دخولك الان

  • يستعرض القسم حالياً   0 members

    لا يوجد أعضاء مسجلين يشاهدون هذه الصفحة .