السبت، 4 أبريل 2020
الجمعة، 13 مارس 2020
تعلم برنامج الاكسيس 2016 من الصفر الاحتراف ... متجدد
مجموعة من الدروس التعليمية تأخذك من الصفر الى الاحتراف فى التعامل مع برنامج اكسيس 2016 وسيتم في هذه الدروس التعرف على
1- واجهة البرنامج
2- انشاء الجداول
3- العلاقات بين الجداول
4- النماذج Forms
5- التقارير
6- الاسعلامات queries
ومجموعة من الموضوعات المتقدمة الاخرى مثل VBA وكثير من المشاريع التعليمية
الأربعاء، 4 مارس 2020
حفظ واسترجاع صورة بقاعدة البيانات
تصميم برنامج يقوم بعمل حفظ صورة داخل قاعدة بيانات اكسيس واسترجاعها والشرح بالفيديو ومرفق ملفات البرنامج
لتحميل ملفات المشروع من الرابط التالى
الاثنين، 2 مارس 2020
تعلم عمل برنامج دليل التليفونات بالفيديو
فى هذا الموضوع سنتعرف على طريقة عمل دليل تليفونات باستخدام برنامج vb.net وقاعدة بيانات الاكسيس فيديو صوت وصورة
الدرس الاول : -
الدرس الثانى : -
الدرس الثالث :-
الدرس الرابع :-
الدرس الخامس : -
الدرس السادس :-
تحميل ملفات المشروع التالى
الاثنين، 28 أكتوبر 2019
انشاء مشروع WPF فى الفيجوال ستوديو
لإنشاء مشروع WPF جديد ، يلزمك تشغيل Visual Studio واختيار خيار "مشروع جديد ..." من شاشة البدء. إذا قمت بتعطيل شاشة البدء ، فافتح قائمة "ملف" واختر "جديد" ، ثم "مشروع". يجب عرض مربع الحوار مشروع جديد.
يتم سرد قوالب WPF في قسم Windows ، والذي يمكن تحديده في الشجرة على اليسار. في الصورة ، يتم عرض قسم Windows داخل الفرع C # او VBمن الشجرة.
دد قالب "تطبيق WPF". أضف اسمًا للمشروع في Name TextBox وانقر فوق "موافق" لإنشاء الحل الجديد.
WPF WINDOWS
بمجرد إنشاء المشروع ، سترى النافذة الرئيسية لبرنامج Visual Studio ، والذي يقدم عددًا من إطارات التصميم والمحررات والأدوات. التصميم الفعلي لهذه النوافذ يعتمد على التكوين الخاص بك. يوجد أدناه تخطيط نموذجي يتضمن جميع الأدوات الأكثر استخدامًا لتصميم التطبيقات المستندة إلى XAML:
1- قائمة
2- أشرطة الأدوات
3- الأدوات
4- نافذة مصمم
5- محرر XAML
6- مكتشف الحل
7- نافذة الخصائص
الأحد، 27 أكتوبر 2019
WPF XAML
من المعتاد إنشاء برنامج "Hello World" عندما تصادف لغة برمجة جديدة لأول مرة. الكود أدناه هو مثل هذا البرنامج.
<
Page
xmlns
=
"http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x
=
"http://schemas.microsoft.com/winfx/2006/xaml"
>
<
Grid
>
<
TextBlock
>Hello, world!</
TextBlock
>
</
Grid
>
</
Page
>
إذا قمت بلصق XAML أعلاه في محرر Kaxaml ، واستبدال الكود الافتراضي ، سترى أن منطقة المعاينة يتم تحديثها لإظهار ما يلي:
Hello, world!
دعونا نلقي نظرة على مختلف عناصر Hello World XAML. أول شيء نراه هو عقدة الجذر ، والتي في هذه الحالة هي عنصر الصفحة. لن نرى المزيد من عنصر الصفحة في المقالات المستقبلية في هذه السلسلة ، حيث أننا سنستخدم بشكل رئيسي العقد الجذرية للنافذة. عادةً ما يتم استخدام صفحة في تطبيقات WPF نمط التنقل ، في حين يتم استخدام نافذة للنوافذ ومربعات الحوار القياسية. في هذا المثال ، تكون علامة الصفحة مفيدة بسبب سلوك Kaxaml. إذا قمت بتغيير نص "الصفحة" إلى "نافذة" ، فسترى أنك بحاجة إلى الضغط على مفتاح قبل عرض Kaxaml.تتضمن عقدة الجذر مساحات أسماء XML اثنين. هذه تعمل إلى حد ما مثل استخدام التوجيهات لمساحات C #. وهي تحدد المكان الذي سيبحث فيه المستند عن عناصر التحكم والعناصر الأخرى التي تضيفها إلى XAML. مساحات الاسمين المدرجة هي تلك الافتراضية التي توفر عناصر WPF القياسية. يمكنك أيضًا الرجوع إلى مساحات الأسماء الخاصة بك باستخدام بناء جملة مماثل. لاحظ أن أحد مساحات الأسماء له اسم مستعار ، "x". عند استخدام عناصر من مساحة الاسم هذه ، سترى أننا بحاجة إلى تضمين x في تعريفات العنصر.
يعرّف عنصر الشبكة شبكة ، والتي هي عنصر تحكم تخطيط قياسي في WPF. تحدد الشبكات الأعمدة والصفوف التي تتقاطع لتكوين خلايا. يمكن إضافة عناصر التحكم إلى هذه الخلايا لإعطاء تنظيم مرئي ممتع. في مثال Hello World ، لم يتم تضمين أي أعمدة أو صفوف حتى يكون للشبكة خلية واحدة فقط.
العنصر الأخير في المثال هو TextBlock. هذا يحتوي على مقدار صغير من النص الذي يمكن أن يتضمن بعض التنسيقات. قمت بتعريف النص بين علامتي الفتح والإغلاق لعنصر XML في هذه الحالة.
بعد TextBlock هناك بعض العلامات الختامية. هذه تضمن أن XML تم تشكيله بشكل جيد. إذا لم يكن كذلك ، فلن يعمل البرنامج.
مثال اخر
على سبيل المثال ، خذ بعين الاعتبار XAML التالي. لن أصفها بالتفصيل ، حيث سنرى هذا الرمز في المقالات المستقبلية. الاختلافات بين هذا والمثال السابق هي إضافة تعريفات للصف والعمود وإدراج بعض عناصر التحكم الإضافية. لاحظ عنصر StackPanel. هذا هو عنصر تحكم تخطيط آخر. بدلاً من إظهار العناصر في الشبكة ، يتحكم المكدس عموديًا أو أفقيًا.
<
Page
xmlns
=
"http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x
=
"http://schemas.microsoft.com/winfx/2006/xaml"
>
<
Grid
>
<
Grid.ColumnDefinitions
>
<
ColumnDefinition
Width
=
"100"
/>
<
ColumnDefinition
Width
=
"200"
/>
</
Grid.ColumnDefinitions
>
<
Grid.RowDefinitions
>
<
RowDefinition
Height
=
"auto"
/>
<
RowDefinition
Height
=
"auto"
/>
<
RowDefinition
Height
=
"auto"
/>
<
RowDefinition
Height
=
"auto"
/>
<
RowDefinition
Height
=
"auto"
/>
</
Grid.RowDefinitions
>
<
TextBlock
Text
=
"Forename"
/>
<
TextBlock
Grid.Row
=
"1"
Text
=
"Surname"
/>
<
TextBlock
Grid.Row
=
"2"
Text
=
"Age"
/>
<
TextBlock
Grid.Row
=
"3"
Text
=
"Sex"
/>
<
TextBox
Grid.Column
=
"1"
Text
=
"Bob"
/>
<
TextBox
Grid.Column
=
"1"
Grid.Row
=
"1"
Text
=
"Smith"
/>
<
TextBox
Width
=
"80"
Grid.Column
=
"1"
Grid.Row
=
"2"
HorizontalAlignment
=
"Left"
Text
=
"40"
/>
<
StackPanel
Grid.Column
=
"1"
Grid.Row
=
"3"
Orientation
=
"Horizontal"
>
<
RadioButton
Content
=
"Male"
/>
<
RadioButton
Content
=
"Female"
/>
</
StackPanel
>
</
Grid
>
</
Page
>
نتيجة الكود السابق
أحد الأسباب التي تجعل الأشخاص تحب WPF هي قدرته على إضافة التصميم إلى عناصر التحكم بطرق يصعب تحقيقها في Windows Forms. في الكود أدناه أضفت بعض التصميم الأساسي باستخدام خصائص عناصر التحكم المختلفة. يتم تعيين الخصائص باستخدام سمات XML. لقد أضفت هوامش إلى مربعات النص ، والمحاذاة العمودية إلى كتل النص والألوان إلى أزرار الاختيار.
<
Page
xmlns
=
"http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x
=
"http://schemas.microsoft.com/winfx/2006/xaml"
>
<
Grid
>
<
Grid.ColumnDefinitions
>
<
ColumnDefinition
Width
=
"100"
/>
<
ColumnDefinition
Width
=
"200"
/>
</
Grid.ColumnDefinitions
>
<
Grid.RowDefinitions
>
<
RowDefinition
Height
=
"auto"
/>
<
RowDefinition
Height
=
"auto"
/>
<
RowDefinition
Height
=
"auto"
/>
<
RowDefinition
Height
=
"auto"
/>
<
RowDefinition
Height
=
"auto"
/>
</
Grid.RowDefinitions
>
<
TextBlock
Text
=
"Forename"
VerticalAlignment
=
"Center"
/>
<
TextBlock
Grid.Row
=
"1"
Text
=
"Surname"
VerticalAlignment
=
"Center"
/>
<
TextBlock
Grid.Row
=
"2"
Text
=
"Age"
VerticalAlignment
=
"Center"
/>
<
TextBlock
Grid.Row
=
"3"
Text
=
"Sex"
VerticalAlignment
=
"Center"
/>
<
TextBox
Grid.Column
=
"1"
Text
=
"Bob"
Margin
=
"5"
/>
<
TextBox
Grid.Column
=
"1"
Grid.Row
=
"1"
Text
=
"Smith"
Margin
=
"5"
/>
<
TextBox
Width
=
"80"
Grid.Column
=
"1"
Grid.Row
=
"2"
HorizontalAlignment
=
"Left"
Text
=
"40"
Margin
=
"5"
/>
<
StackPanel
Grid.Column
=
"1"
Grid.Row
=
"3"
Orientation
=
"Horizontal"
Margin
=
"5"
>
<
RadioButton
Content
=
"Male"
Foreground
=
"Blue"
Margin
=
"0 0 10 0"
/>
<
RadioButton
Content
=
"Female"
Foreground
=
"DeepPink"
/>
</
StackPanel
>
</
Grid
>
</
Page
>
السبت، 26 أكتوبر 2019
WPF Windows Presentation Foundation
ما هو WPF ؟
المشار إليها فيما يلي باسم WPF ، هي إحدى تقنيات Microsoft التي تتيح لك إنشاء واجهات مستخدم غنية لتطبيقات سطح مكتب Windows. تم تقديم WPF مع .NET Framework الإصدار 3.0 كتكنولوجيا بديلة لـ Windows Forms.
يهدف WPF إلى السماح لك بإنشاء تجارب مستخدم أكثر ثراءً مما يمكنك تطويره بسهولة باستخدام Windows Forms. لتحقيق ذلك ، يغير WPF اختيار تكنولوجيا العرض الأساسية تمامًا. بينما تستند Windows Forms إلى واجهة جهاز الرسومات المستندة إلى البكسل (GDI) ، يستخدم WPF الأنظمة المستندة إلى ناقل DirectX.
نظرًا لأن معظم بطاقات الفيديو الحديثة تدعم DirectX ، فإن تطبيقات WPF تسمح بتدوير النصوص والصور المستندة إلى المتجهات وتدويرها دون استخدام البيكسل. يمكنك دمج رسومات ورسوم متحركة ثنائية وثلاثية الأبعاد ، والتي تستخدم تلقائيًا تسريع الأجهزة المتاحة لتحسين الأداء. يمكنك أيضًا استخدام WPF لتطبيقات الأعمال التي لا تتطلب مثل هذه الرسوم البيانية المزدهرة. على سبيل المثال ، يتضمن Visual Studio 2010 و 2012 واجهات المستخدم المطورة باستخدام WPF.
يهدف WPF إلى السماح لك بإنشاء تجارب مستخدم أكثر ثراءً مما يمكنك تطويره بسهولة باستخدام Windows Forms. لتحقيق ذلك ، يغير WPF اختيار تكنولوجيا العرض الأساسية تمامًا. بينما تستند Windows Forms إلى واجهة جهاز الرسومات المستندة إلى البكسل (GDI) ، يستخدم WPF الأنظمة المستندة إلى ناقل DirectX.
نظرًا لأن معظم بطاقات الفيديو الحديثة تدعم DirectX ، فإن تطبيقات WPF تسمح بتدوير النصوص والصور المستندة إلى المتجهات وتدويرها دون استخدام البيكسل. يمكنك دمج رسومات ورسوم متحركة ثنائية وثلاثية الأبعاد ، والتي تستخدم تلقائيًا تسريع الأجهزة المتاحة لتحسين الأداء. يمكنك أيضًا استخدام WPF لتطبيقات الأعمال التي لا تتطلب مثل هذه الرسوم البيانية المزدهرة. على سبيل المثال ، يتضمن Visual Studio 2010 و 2012 واجهات المستخدم المطورة باستخدام WPF.
Extensible Application Markup Language او XAML
يمكنك إنشاء تخطيطات WPF باستخدام مصمم Visual Studio. كما هو الحال مع Windows Forms ، يمكنك سحب وإسقاط عناصر التحكم من مربع الأدوات على سطح تصميم للإطار. عند إنشاء تصميمات واجهة المستخدم الخاصة بك بهذه الطريقة ، يقوم Visual Studio بإنشاء تعليمات برمجية باستخدام لغة جديدة باسم "لغة تمييز التطبيق القابلة للتوسيع". هذا هو اختصار ل XAML ، وضوحا "Zamm Ell".
بخلاف نماذج Windows ، لا يخفي WPF التعليمات البرمجية التي ينشئها المصمم. كود XAML سهل المشاهدة ، كما هو مبني على XML ، سهل الفهم. في الواقع ، من السهل للغاية التعامل معه بحيث يتم تشجيعك بنشاط على تحريره يدويًا. في كثير من الحالات ، يكون من السهل التعامل مع عناصر XML وسماتها مباشرةً بدلاً من إنشاء نفس النتائج مع مصمم. خلال البرنامج التعليمي ، سوف نركز على XAML ، بدلاً من العمل مع المصممين ، لأن هذا يتيح فهمًا أكبر للتكنولوجيا.
XAML لها تطبيقات أوسع من إنشاء واجهات مستخدم WPF. إنه أيضًا الأساس لتصميم واجهات Silverlight وبرامج وتطبيقات Windows Phone للأجهزة اللوحية التي تعمل بنظام Windows 8. هناك اختلافات بين التقنيات المستندة إلى XAML ولكن تعلم متغير واحد يجعل الانتقال إلى الآخرين أسهل. سنركز على إصدار WPF من XAML ، لأنه الوحيد الذي يسمح لك بإنشاء تطبيقات مع وصول كامل إلى ميزات نظام التشغيل Microsoft Windows.
من الميزات الرائعة لـ WPF والتطبيقات المستندة إلى XAML بشكل عام ، الفصل بين واجهة المستخدم والرمز الآخر في برنامجك. تعتمد تطبيقات Windows Forms اعتمادًا كبيرًا على الأحداث ، حيث ترتبط معالجات الأحداث بعناصر التحكم المرئية. يفصل WPF بين رمز XAML ، والذي يحدد تصميم التطبيق ورمز الخلفية الذي تنشئه باستخدام لغة .NET مثل C #.
على الرغم من أنه يمكنك الاتصال بالكود للتحكم في الأحداث ، إلا أنه من الأكثر شيوعًا الاستفادة من تقنيات الربط والبيانات القوية في XAML. هذه تتيح لك الرجوع إلى الخصائص والأساليب بشكل فضفاض حسب الاسم في سمات XML. في وقت التشغيل ، يتم تكوين عناصر التحكم وفقًا للخصائص المسماة. ترتبط الأزرار وعناصر التحكم الأخرى بالأوامر التي يتم تنفيذها استجابة لإجراءات المستخدم ، مع تغيير حالة عناصر التحكم المرتبطة تلقائيًا وفقًا لتوفر الأوامر.
يرتبط التصميم والرمز بشكل فضفاض بحيث يمكن للأشخاص المختلفين العمل على هذه العناصر المنفصلة. على سبيل المثال ، يمكن للمطور إنشاء فئات تحتوي على خصائص لربطها وأوامر تنفيذها دون معرفة تصميم واجهة المستخدم. مع توفر الحد الأدنى من التفاصيل للرمز الأساسي ، يمكن لمصمم واجهة المستخدم إنشاء XAML بشكل منفصل للمطور لدمجه في المشروع لاحقًا. قامت Microsoft بإنشاء أدوات منفصلة لهذين الدورين. يتم تشجيع المطورين على استخدام Visual Studio بينما يمتلك المصممون أدوات Expression Studio ، بما في ذلك Blend.
يتم توفير فصل آخر من المخاوف عن طريق التصميم. باستخدام مفهوم مماثل لفصل المحتوى والأسلوب في صفحات الويب التي يوفرها HTML و CSS ، يمكنك تحديد الأنماط باستخدام XAML وتطبيقها على عناصر تحكم متعددة. على سبيل المثال ، إذا قررت أن جميع الأزرار الموجودة في البرنامج يجب أن تكون حمراء وتحتوي على نص غامق ، فيمكنك تحديد نمط لذلك وإضافة النمط إلى جميع الأزرار. إذا قررت لاحقًا أن اللون الأزرق سيكون لونًا أفضل ، فيمكنك تحديث النمط في مكان واحد وستتخذ جميع عناصر التحكم التي تستخدم النمط الشكل الجديد.
على الرغم من أنه يمكنك الاتصال بالكود للتحكم في الأحداث ، إلا أنه من الأكثر شيوعًا الاستفادة من تقنيات الربط والبيانات القوية في XAML. هذه تتيح لك الرجوع إلى الخصائص والأساليب بشكل فضفاض حسب الاسم في سمات XML. في وقت التشغيل ، يتم تكوين عناصر التحكم وفقًا للخصائص المسماة. ترتبط الأزرار وعناصر التحكم الأخرى بالأوامر التي يتم تنفيذها استجابة لإجراءات المستخدم ، مع تغيير حالة عناصر التحكم المرتبطة تلقائيًا وفقًا لتوفر الأوامر.
يرتبط التصميم والرمز بشكل فضفاض بحيث يمكن للأشخاص المختلفين العمل على هذه العناصر المنفصلة. على سبيل المثال ، يمكن للمطور إنشاء فئات تحتوي على خصائص لربطها وأوامر تنفيذها دون معرفة تصميم واجهة المستخدم. مع توفر الحد الأدنى من التفاصيل للرمز الأساسي ، يمكن لمصمم واجهة المستخدم إنشاء XAML بشكل منفصل للمطور لدمجه في المشروع لاحقًا. قامت Microsoft بإنشاء أدوات منفصلة لهذين الدورين. يتم تشجيع المطورين على استخدام Visual Studio بينما يمتلك المصممون أدوات Expression Studio ، بما في ذلك Blend.
يتم توفير فصل آخر من المخاوف عن طريق التصميم. باستخدام مفهوم مماثل لفصل المحتوى والأسلوب في صفحات الويب التي يوفرها HTML و CSS ، يمكنك تحديد الأنماط باستخدام XAML وتطبيقها على عناصر تحكم متعددة. على سبيل المثال ، إذا قررت أن جميع الأزرار الموجودة في البرنامج يجب أن تكون حمراء وتحتوي على نص غامق ، فيمكنك تحديد نمط لذلك وإضافة النمط إلى جميع الأزرار. إذا قررت لاحقًا أن اللون الأزرق سيكون لونًا أفضل ، فيمكنك تحديث النمط في مكان واحد وستتخذ جميع عناصر التحكم التي تستخدم النمط الشكل الجديد.
عناصر تحكم محسنة
يغير WPF الطريقة التي تتحكم بها واجهة المستخدم في العمل. تحتوي معظم عناصر التحكم التي يشعر بها مطورو Windows Forms على ما يعادلها في WPF. لا تزال عناصر التحكم تتضمن خصائص تتيح لك تغيير شكلها وسلوكها ، مثل خيارات الألوان والخطوط. للتطبيقات البسيطة ، يمكن أن يكون هذا كافيا.
للسماح بتجارب أكثر حداثة ، تكون عناصر التحكم في WPF أكثر قوة. أولاً ، أنها قابلة للتكوين. هذا يعني أنه يمكنك تداخل عناصر التحكم داخل بعضها البعض. على سبيل المثال ، لا يحتاج الزر إلى تضمين وصف نصي فقط. يمكنك تضمين عنصر رسومي للذهاب مع النص. يمكن أن تكون القائمة المنسدلة أكثر من سلسلة من العناصر النصية. يمكن أن يكون كل خيار يمكن للمستخدم اختياره هو صورة أو رسم متحرك أو حتى فيديو.
عناصر تحكم WPF تستند إلى قوالب. يتم تعريف القالب باستخدام XAML ويتضمن جميع العناصر الرسومية التي تسمح لعنصر تحكم بالعمل بشكل صحيح. على سبيل المثال ، يتضمن قالب الزر ألوان الخلفية والتظليل والخطوط والمنحنيات ومناطق المحتوى التي تشكل زرًا. هذه المعلومات موجودة لكل حالة زر ، مثل الحالات الممكّنة والمعطلة والمركزة والماوس فوق والضغط. يتضمن القالب أيضًا تفاصيل التحولات المتحركة بين الحالات.
عند إنشاء تطبيقاتك ، يمكنك تعديل قوالب عناصر التحكم الحالية. يتيح لك هذا إمكانية تغيير شكل عناصر التحكم القياسية وشعورها لتتناسب مع تصميم البرنامج الذي تقوم بتطويره.
للسماح بتجارب أكثر حداثة ، تكون عناصر التحكم في WPF أكثر قوة. أولاً ، أنها قابلة للتكوين. هذا يعني أنه يمكنك تداخل عناصر التحكم داخل بعضها البعض. على سبيل المثال ، لا يحتاج الزر إلى تضمين وصف نصي فقط. يمكنك تضمين عنصر رسومي للذهاب مع النص. يمكن أن تكون القائمة المنسدلة أكثر من سلسلة من العناصر النصية. يمكن أن يكون كل خيار يمكن للمستخدم اختياره هو صورة أو رسم متحرك أو حتى فيديو.
عناصر تحكم WPF تستند إلى قوالب. يتم تعريف القالب باستخدام XAML ويتضمن جميع العناصر الرسومية التي تسمح لعنصر تحكم بالعمل بشكل صحيح. على سبيل المثال ، يتضمن قالب الزر ألوان الخلفية والتظليل والخطوط والمنحنيات ومناطق المحتوى التي تشكل زرًا. هذه المعلومات موجودة لكل حالة زر ، مثل الحالات الممكّنة والمعطلة والمركزة والماوس فوق والضغط. يتضمن القالب أيضًا تفاصيل التحولات المتحركة بين الحالات.
عند إنشاء تطبيقاتك ، يمكنك تعديل قوالب عناصر التحكم الحالية. يتيح لك هذا إمكانية تغيير شكل عناصر التحكم القياسية وشعورها لتتناسب مع تصميم البرنامج الذي تقوم بتطويره.
Multimedia
كانت نماذج Windows محدودة للغاية في دعمها للوسائط المتعددة. يقوم WPF بتصحيح ذلك باستخدام عناصر التحكم القياسية للصور والصوت والفيديو. يمكن تشغيل الصوت والفيديو بتنسيقات متعددة ودمجه في عناصر التحكم باستخدام تركيبة التحكم. يمكنك بسهولة تضمين الوسائط المتعددة التي يتم تشغيلها تلقائيًا أو التي يتم التحكم فيها بواسطة إجراءات المستخدم.عيوب WPF
WPF هي تقنية قوية للغاية ولكن لديها بعض العيوب. بالنسبة لمطوري Windows Forms ذوي الخبرة ، يكون الفرق بين الأسلوبين كبيرًا. تؤدي مرونة WPF إلى زيادة التعقيد في بعض السيناريوهات. هذا يعني أن WPF لديه منحنى تعليمي أكثر حدة من Windows Forms وأن الترحيل إلى WPF يتطلب الكثير من التعلم. يمكن اعتبار حقيقة أن WPF يمكن استخدامها بطريقة مشابهة لنماذج Windows بمثابة عيب. على الرغم من أنه يسمح بنقل أسرع ، إلا أنه في بعض الأحيان يعني أن مطوري WPF الجدد غير مدركين لقوة النموذج الجديد.
مشكلة أخرى مع WPF لمطوري واجهة المستخدم الموجودة هي أن بعض عناصر تحكم Windows Forms الأقل استخدامًا مفقودة. يمكنك تنزيل بعض إصدارات المصادر المفتوحة أو المجانية ، أو شراء مجموعة تحكم إذا كنت تفضل ذلك. لا يتم تضمين بعض عناصر التحكم لأنه يمكنك تعديل قوالب عناصر تحكم WPF الأخرى لإنشاءها بنفسك. ومع ذلك ، قد يبدو هذا كثيرًا من العمل عندما ترغب في تطوير منتج بسيط ونشره بسرعة.
WPF مرنة للغاية. في بعض الحالات ، يكون البرنامج مرنًا جدًا حيث يتيح لك التنقل باستخدام الرسوم المتحركة والوسائط والكائنات ثلاثية الأبعاد وما شابه ذلك. إذا كنت ، مثلي ، لست مصممًا جيدًا ، فمن السهل إنشاء واجهة مستخدم تصبح محبطة أو غير قابلة للاستخدام أو قبيحة. في هذه الحالات ، قد يكون من الأفضل الالتزام بعناصر تحكم أكثر بساطة أو استخدام مصمم لإنشاء واجهاتك.
مشكلة أخرى مع WPF لمطوري واجهة المستخدم الموجودة هي أن بعض عناصر تحكم Windows Forms الأقل استخدامًا مفقودة. يمكنك تنزيل بعض إصدارات المصادر المفتوحة أو المجانية ، أو شراء مجموعة تحكم إذا كنت تفضل ذلك. لا يتم تضمين بعض عناصر التحكم لأنه يمكنك تعديل قوالب عناصر تحكم WPF الأخرى لإنشاءها بنفسك. ومع ذلك ، قد يبدو هذا كثيرًا من العمل عندما ترغب في تطوير منتج بسيط ونشره بسرعة.
WPF مرنة للغاية. في بعض الحالات ، يكون البرنامج مرنًا جدًا حيث يتيح لك التنقل باستخدام الرسوم المتحركة والوسائط والكائنات ثلاثية الأبعاد وما شابه ذلك. إذا كنت ، مثلي ، لست مصممًا جيدًا ، فمن السهل إنشاء واجهة مستخدم تصبح محبطة أو غير قابلة للاستخدام أو قبيحة. في هذه الحالات ، قد يكون من الأفضل الالتزام بعناصر تحكم أكثر بساطة أو استخدام مصمم لإنشاء واجهاتك.
الأربعاء، 26 يوليو 2017
استخدام printDocument فى الفيجوال بيسك دوت نت
سنتعلم فى هذا الدرس كيفية استخدام العنصر
Print Document
حيث Print Document هو المكون الأساسي للطباعة داخل الدوت نت
وتتم الطباعة عبر استدعاء الطريقة Print للكائن PrintDocumet وهذه الطريقة تنادي علي الحدث PrintPage وهو الحدث الذى يوضع فيه كود تحديد خصائص الطباعة وذلك باستخدام طرق الرسم للكائن Griphic لنقوم بذلك أنشأ مشروع جديد وضع المكون PrintDocumet على الفورم واضف زر أمر Button
لكي نطبع الصفحة نكتب فى حدث الزر هذا الكود
Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
PrintDocument1.Print()
End Sub
اضعط ظغطتين علي المكون PrintDocumet يظهر الحدث PrintPage
Private Sub PrintDocument1_PrintPage(ByVal sender As System.Object, ByVal e As System.Drawing.Printing.PrintPageEventArgs) Handles
PrintDocument1.PrintPage
End Sub
البارمتر e : جميع الخواص التى فيه هى المسئولة عن خواص الطباعة
الخاصية Graphics : هى المسئولة عن تحديد مخرجات الطباعة التى ستطبع
الخاصية MarginBounds : الخاصية المسئولة عن الهوامش للصفحة وتحدد منطقة الطباعة
الخاصية PageSettings : الخاصية المسئولة عن خصائص الصفحة المطبوعة - حجم اصفحة - الاتجاه - الهوامش وغيرها من الخواص
ومن خواص الخاصية PageSettings الخاصية PrinterSettings وهي خاصية أخري تحتوى على خصائص حول الطابعة والاعدادات الخاصة بها
نتعامل مع الكود التالى فى الحدث PrintPage
يقوم بطباعة مستطيل يغلق منطقة الطباعه للصفحة(الهوامش)
يقوم بطباعة نص فى داخله كما يقوم بطباعة نص خارج منطقة الطباعة القيمة الافتراضية للهوامش هى 1 انش لكل جانب
سنتعلم من المثال كثير من الطرق المهمة لذا يجب الانتباه
Private Sub PrintDocument1_PrintPage(ByVal sender As System.Object, ByVal e As System.Drawing.Printing.PrintPageEventArgs) Handles PrintDocument1.PrintPage
Dim Gra As Graphics = e.Graphics
Dim X, Y, Widt, Heig As Integer
X = e.MarginBounds.X
Y = e.MarginBounds.Y
Widt = e.MarginBounds.Width
Heig = e.MarginBounds.Height
Gra.DrawRectangle(Pens.Red, New Rectangle(X, Y, Widt, Heig))
Dim printFont As New Font("tahoma", 36, FontStyle.Regular)
Gra.DrawString("BADRMEDIA SOFTWARE", printFont, _
Brushes.Green, 150, 300)
Gra.DrawString("Print Out Range", _
New Font("arial", 20, FontStyle.Regular), _
Brushes.Black, -10, -10)
End Sub
العنصر PageSettings
له عدة خصائص منها :
الخاصية Bounds وهى مثل الخاصية MarginBounds للبارمتر e فى الحدث printpage لكن هذه الخاصية هنا لا تهتم بالهوامش المحددة عن طريق المستخدم وهى تمثل شكل مستطيل Rectangle حجم صفحة A4 هى 827×1169 وصفحة letter هي 850×1100
الخاصية Margins :
تمثل الهوامش المحددة عم طريق المستخدم كخواص Top - Left - Right - Bottom
الخاصية PaperSize :
تمثل الخاصية حجم الورق وابعاد الورقة هى ابعاد الخاصية Bounds ولكن هناك خاصيتان مهمتان لهذا الكائن هما Kind و PaperName
الخاصية Kind تاخذ نوع الورق
الخاصية PaperSource :
تمثل نوع ملقم الورق أو درج الورق
SourceName للعنصر PaperSource هو ''Auto Sheet Feeder."
الخاصية PrinterResolution :
تمثل دقة الطباعة الخواص X,Y لهذا العنصر تعود بالقيم الافقية والعمودية على التوالى كنقاط لكل انش DPI والخاصية Kind تتضمن عدة خواص (Low, Medium, High, Custom, Draft )
الخاصية Color :
تسند لها قيمة منطقية True / False - تجعلها True لو كانت الطابعة ألوان
If printDoc.PrinterSettings.SupportsColor Then
e.PageSettings.Color = True
End If
================================
تعرفنا على الكائن PageSettings
تعال نتعرف الان على الكائن
الكائن PrinterSettings
من خواص هذا الكائن:
SupportsColor :
تستطيع عن طريقه أن تعود بقيمة منطقية تحدد اذا كانت الطابعة تدعم الطباعة بالالوان ام لا واستخدامناه فى الكود السابق
MaximumCopies :
يعطى اقصى عدد من النسخ ممكن أن تطبعه الطابعة فى المرة الواحدة
Copies :
تحدد فيها عدد النسخ المراد طباعتها
IsValid :
تعود بقيمة منطقية تحدد اذا كان اسم الطابعة صحيح وان الطابعة موجودة ومتاحة
InstalledPrinters :
يسترجع اسماء كل الطابعات الموجودة على الكمبيوتر والشبكة صناديق الحوار هناك ثلاث كائنات تكون كمربعات حوار أثناء التنفيذ تستخدم مع الكائن Print Document ووظيفتها التحكم فى عملية الطباعة والتعامل مع خيارات المستخدم
صندوق الحوار PageSetupDialog
هذا الصندوق يحدد اعدادات الصفحة اتجاه الطباعة - الهوامش - الورق الخ من أمور
صندوق الحوار PageSetupDialog يعود بكائن PageSetting يمثل الاعدادات المحددة من قبل المستخدم ويجب مراعاتها و جعل البرنامج يقوم بالطباعة على حسب ما حدده المستخدم
With PageSetupDialog1
.PageSettings = PrintDocument1.DefaultPageSettings
If .ShowDialog =DialogResult.OK Then _
PrintDocument1.DefaultPageSettings = .PageSettings
End With
مربع الحوار PrintDialog :
مربع الحوار هذا يسمح للمستخدم باختيار الطابعة وتحديد الخواص لها لو تجاهلته سيتم استخدام الافتراضية بخواصه
PrintDialog1.PrinterSettings = _
PrintDocument1.DefaultPageSettings.PrinterSettings
PrintDialog1.AllowSelection = True
PrintDialog1.AllowSomePages = True
If PrintDialog1.ShowDialog = DialogResult.OK Then
PageSetupDialog1.PageSettings =
PrintDocument1.DefaultPageSettings
If PageSetupDialog1.ShowDialog = DialogResult.OK Then
PrintDocument1.DefaultPageSettings = _
PageSetupDialog1.PageSettings
PrintDocument1.Print
End If
مربع الحوار PrintPreview :
لمعاينة المخرجات قبل طباعتها ومعرفة مدى ملاءمتها للطباعة ثم يحدد هل سيطبع ام لا وبذلك تلغي الأمر Print للكائن PrintDocument فتضع للعنصر ShowDialog الأمر PrintPreview
الثلاثاء، 18 يوليو 2017
طريقة طباعة الفورم فى الفيجوال بيسك دوت نت
بسم الله الرحمن الرحيم
وبهذه الطريقه تقوم بطباعة الفورم بطريقه سهله وسريعه لكن من عيوبها انك لاتستطيع اختيار اشياء من الطباعة اي انه سوفق يقوم بتصوير الفورم ويقوم بطباعته
الجمعة، 14 يوليو 2017
شرح عمل برنامج شات بالفيجوال بيسك دوت نت
شرح لكيفية عمل برنامج شات بالفيجوال بيسك دوت نت
chat application with vb.net
متطلبات العمل على هذا المشروع يجب ان تكون ملم بالموضوعات التالية :...
تعدد المسارات فى الفيجوال بيسك دوت نت
شرح HashTable
كتاب احتراف برمجة الشبكات
فى البداية سنقوم بعمل البرنامج الخاص بالسيرفر والذى سيقوم بالتنصت على البورت 8888 ويتعامل مع طلبات clients فعندما يطلب احد الكلينتس الاتصال يقوم السيرفر بتسجيله فى clientsList والتى هى عبارة عن HashTable ثم نقوم بانشاء مسار thread جديد للتعامل مع طلبات Clients
وعندما ترد رساله للسيرفر من العميل يقوم السيرفر بتحديد العميل مرسل الرسالة من clientsList ويرسل الرسالة للعملاء كلهم والتى يمكن ان نطلق على هذه العملية BroadCast لذا كل عميل يستطيع رؤية الرسائل المرسلة من باقى العملاء ويستطيع ارسال الرسائل ايضا
clientsList التى سوف يتم عملها ستقوم بتخزين اسماء العملاء Clients
اولاً : - انشاء برنامج السيرفر
1- نقوم بعمل مشروع جديد من نوع Console Application
2- استدعاء فضاء الاسماء الاتية
Imports System.Net.SocketsImports System.Text
3- داخل الموديول الرئيسى نقوم بانشاء كلاس يتعامل مع طلبات العملاء
Public Class handleClinet
Dim clientSocket As TcpClient
Dim clNo As String
Dim clientsList As Hashtable
هذا الاجراء يقوم بانشاء مسار لكل عميل يقوم بالاتصال بالسيرفر واستخدام الاجراء doChat
Public Sub startClient(ByVal inClientSocket As TcpClient, _
ByVal clineNo As String, ByVal cList As Hashtable)
Me.clientSocket = inClientSocket
Me.clNo = clineNo
Me.clientsList = cList
Dim ctThread As Threading.Thread =
New Threading.Thread(AddressOf doChat)
ctThread.Start()
End Sub
الاجراء التالى المستخدم من قبل المسار السابق
يقوم بعملية ارسال الرساله لباقى العملاء عن طريق استدعاء الاجراء broadCast
والذى سنقوم بعمله لاحقاً
Private Sub doChat()
Dim requestCount As Integer
Dim bytesFrom(10024) As Byte
Dim dataFromClient As String
Dim sendBytes As [Byte]()
Dim serverResponse As String
Dim rCount As String
requestCount = 0
While (True)
Try
requestCount = requestCount + 1
Dim networkStream As NetworkStream = _
clientSocket.GetStream()
networkStream.Read(bytesFrom, 0, CInt(clientSocket.ReceiveBufferSize))
dataFromClient = System.Text.Encoding.ASCII.GetString(bytesFrom)
dataFromClient = _
dataFromClient.Substring(0, dataFromClient.IndexOf("$"))
msg("From client - " + clNo + " : " + dataFromClient)
rCount = Convert.ToString(requestCount)
broadcast(dataFromClient, clNo, True)
Catch ex As Exception
MsgBox(ex.ToString)
End Try
End While
End Sub
End Class
4- انشاء اجراء broadCast والمسئول عن ارسال الرسالة لكل العملاء المسجلين بالسيرفر
Private Sub broadcast(ByVal msg As String, _
ByVal uName As String, ByVal flag As Boolean)
هنا يقوم بالمرور على كل المسجلين بالسيرفر وارسال الرساله لكل منهم Dim Item As DictionaryEntry For Each Item In clientsList Dim broadcastSocket As TcpClient broadcastSocket = CType(Item.Value, TcpClient) Dim broadcastStream As NetworkStream = _ broadcastSocket.GetStream() Dim broadcastBytes As [Byte]() If flag = True Then broadcastBytes = Encoding.ASCII.GetBytes(uName + " says : " + msg) Else broadcastBytes = Encoding.ASCII.GetBytes(msg) End If broadcastStream.Write(broadcastBytes, 0, broadcastBytes.Length) broadcastStream.Flush() Next End Sub
5- داخل الاجراء الرئيسى sub main الاكواد المتحكمه فى السيرفر
دى طبعا الليسته اللى بيتسجل فيها اسماء العملاء
Dim clientsList As New Hashtable Sub Main()
دا بيتنصت على البورت 8888 Dim serverSocket As New TcpListener(8888) Dim clientSocket As TcpClient Dim counter As Integer بدأ عملية التنصت serverSocket.Start() msg("Chat Server Started ....") counter = 0 While (True) counter += 1 clientSocket = serverSocket.AcceptTcpClient() Dim bytesFrom(10024) As Byte Dim dataFromClient As String استقبال طلبات اتصال العملاء Dim networkStream As NetworkStream = _ clientSocket.GetStream() networkStream.Read(bytesFrom, 0, CInt(clientSocket.ReceiveBufferSize)) dataFromClient = System.Text.Encoding.ASCII.GetString(bytesFrom) dataFromClient = _ dataFromClient.Substring(0, dataFromClient.IndexOf("$")) تسجيل العملاء بالليسته clientsList(dataFromClient) = clientSocket ارسال رساله لكل العملاء broadcast(dataFromClient + " Joined ", dataFromClient, False) msg(dataFromClient + " Joined chat room ")
انشاء اوبجكت من الكلاس للتعامل مع العملاء والتعامل مع رسائلهم Dim client As New handleClinet client.startClient(clientSocket, dataFromClient, clientsList) End While clientSocket.Close() serverSocket.Stop() msg("exit") Console.ReadLine() End Sub6- طبعا مننساش الاجراء الخاص بالطباعة على الشاشة
sub msg(ByVal mesg As String) mesg.Trim() Console.WriteLine(" >> " + mesg) End Sub
اولاً : - انشاء برنامج الكلينتسنقوم بانشاء برنامج windows form وستكون مهمته الاساسية ارسال الرسائل للسيرفر1- استدعاء فضاء الاسماءImports System.Net.Sockets Imports System.Text2- تعريفات عامةDim clientSocket As New System.Net.Sockets.TcpClient()
Dim serverStream As NetworkStream
Dim readData As String
Dim infiniteCounter As Integer
3- فى حدث الضغط على زر الاتصال بالسيرفر
Try
دى بتحول اسم العميل الى بايت عشان نرسلها للسيرفر Dim outStream As Byte() = Encoding.ASCII.GetBytes(TextBox1.Text & "$") الاتصال بالسيرفر 127.0.0.1 ودا لما يكون السيرفر على نفس الجهاز والبورت 8888
clientSocket.Connect("127.0.0.1", 8888)
بعدين تجهيز الرسالة وارسالها serverStream = clientSocket.GetStream serverStream.Write(outStream, 0, outStream.Length) serverStream.Flush() Catch ex As Exception MsgBox(ex.Message) End Try
4- زر ارسال الرسالة
readData = "Conected to Chat Server ..." msg()
نفس اللى عملناه فى السابق بس دى مع الرسالة serverStream = clientSocket.GetStream Dim outstream As Byte() = System.Text.Encoding.ASCII.GetBytes(TextBox3.Text & "$") serverStream.Write(outstream, 0, outstream.Length) serverStream.Flush()
عمل مسار عشان يتنصت على البورت ويتلقى الرسائل من السيرفر Dim ctThread As Threading.Thread = New Threading.Thread(AddressOf getMessage) ctThread.Start()
5- اجراء التنصت واستقبال الرسائل
Private Sub getMessage() For infinteCounter = 1 To 2 infinteCounter = 1 serverStream = clientSocket.GetStream Dim buffSize As Integer Dim inStream(10024) As Byte buffSize = clientSocket.ReceiveBufferSize serverStream.Read(inStream, 0, buffSize) Dim returnData As String = System.Text.Encoding.ASCII.GetString(inStream) returnData = "" + returnData msg() Next End Sub
والان تم الانتهاء من البرنامجين
تحميل الاكواد الخاصة بالبرنامجين السابقين : -
برنامج server
برنامج Client
الاشتراك في:
الرسائل (Atom)
تابعنا على الفيسبوك
المشاركات الشائعة
-
تستخدم المصفوفات لتخزين مجموعات بيانات متماثلة لتجميعها كوحدة واحدة. وهو مجموعة ثابتة من نفس نوع البيانات التي يتم تخزينها بشكل متلاصق والت...
-
برنامج يحتوى على اكبر مجموعة اكواد فى البرمجة بلغة الفيجوال بيسك دوت نت تحتوى المكتبة على اكواد فى 1- الانترنيت 2- الملفات و المجل...
-
سنتعلم فى هذا الدرس كيفية استخدام العنصر Print Document حيث Print Document هو المكون الأساسي للطباعة داخل الدوت نت وتتم الطباع...
-
يحتوى يحتوى على مجموعة اكود للتعامل مع datagridview فى الفيجوال بيسك دوت نت لا غنى عنها لاى مبرمج 1- اضافة اعمدة وصفوف 2- اضافة ازرار...
-
المتغير ليس سوى اسم معين لمنطقة التخزين التي يمكن لبرامجنا التلاعب بها. كل متغير في VB.Net له نوع محدد، والذي يحدد حجم وتخطيط ذاكرة المتغ...
-
أنواع البيانات تشير إلى نظام واسع يستخدم لإعلان المتغيرات أو وظائف من أنواع مختلفة. يحدد نوع المتغير مقدار المساحة التي يشغلها في التخزين ...
-
اولاً : جملة If ...... Then ابسط الجمل الشرطية فى الفيجوال بيسك دوت نت وتأخذ الشكل التالى If condition Then [ Statement ( s ...
-
اولا اضافة عدد 12 label كل ليبل منهم ياخد الرقم من 1 الى 12 بخلفيه بيضاء ثانيا : اضافة label ونعطيه الاسم time ثالثاً : اضافة اداة tim...
-
بسم الله الرحمن الرحيم هناك طرق كثيرة لطباعة الفورم واذا قمت بالبحث ستجد الكثير اسرع هذه الطرق هو ماتم مناقشته في منتدى ميكروسوفت وك...
-
شرح لكيفية عمل برنامج شات بالفيجوال بيسك دوت نت chat application with vb.net متطلبات العمل على هذا المشروع يجب ان تكون ملم بالم...