عبد الرزاق القرن

الأعضاء
  • المساهمات

    22
  • تاريخ الانضمام

  • تاريخ آخر زيارة

السُّمعة بالموقع

1 Neutral
  1. تستطيع جعل الحركة أكثر سلاسةً باستخدام التعليمة Transitions في CSS. لنفرض أنه لديك الكود التالي : .circle { width:35px; height:35px; border-radius:50px; background-color:#f00; } .circle:hover { height:50px; border-radius:50px; }<div class="circle"></div>عند التنفيذ سيزداد حجم الدائرة بشكل مباشر, ولجعل زيادة الحجم بشكل تدريجي اكتب الكود التالي : .circle { width:35px; height:35px; border-radius:50px; background-color:#f00; transition: all 200ms ease-in 0; } .circle:hover { height:50px; border-radius:50px; transition: all 300ms ease-in 0; }<div class="circle"></div>تنقسم التعليمة transition إلى 4 أقسام سنحدد وظيفتها كما يلي : transition: A B C D;1- قسم A : لتحديد الخاصّية الذي نريد تحريكها بسلاسة كأن نحدد الإطار فقط أو كل العنصر. 2- قسم B : لتحديد سرعة الحركة. 3- قسم C : لتحديد شكل الحركة. 4- قسم D : لتحديد زمن التأخير عن بدء الحركة. المصدر
  2. يمكنك إضافة ظل للنصوص باللون الذي ترغبه وبطريقة عرض الظل التي تناسبك. فقط أضف هذا الأمر إلى ملف التنسيقات CSS لعنصر الـ HTML الذي ترغب أن يَظهر ظلاً لمحتواه النصي : text-shadow: Xpx Ypx Zpx rgba(R, G, B, A);مع مراعاة استبدال الأحرف إلى قيم رقمية وفق الآتي : X : رقم يدل على مسافة ابتعاد الظل عن النص بشكل أفقي. Y : رقم يدل على مسافة ابتعاد الظل عن النص بشكل شاقولي. Z : رقم يدل على حجم Blur للظل (أن يصبح الظل أكثر ضبابيةً). R,G,B : ثلاثة قيم مجالها (من 0 إلى 255) تشكّل لون الظل حيث أن R للون الأحمر وG للون الأخضر B للون الأزرق. A : قيمة مجالها (من 0 إلى 1) تحدد الشفافية للظل. مثال عن ظل للنص يظهر أسفل النص مباشرة باللون الأسود وبشفافية متوسطة : text-shadow: 0px 3px 0px rgba(0, 0, 0, 0.5);المصدر
  3. عنصر Radio يُستخدم لتحديد خيار واحد فقط من عدّة خيارات, ولكن اذا احتوى النموذج Form على عناصر Radio لسؤالين مختلفين فيجب تمييز كُلٍّ منهم. للتمييز بين عناصر الـ Radio في C# عليك احتوائهم ضمن حاوية مثل GroupBox (تجدها ضمن قائمة Containers في صندوق الأدوات). يعتبر النموذج Form بشكل افتراضي حاوية للعناصر لذا عند إدراج 4 عناصر من نوع Radio على سبيل المثال ضمن النموذج نفسه فتتم معاملتهم على أنهم 4 خيارات لسؤال واحد. وللتمييز بين اختيارات الاسئلة نضع خيارات كُلًّ سؤالٍ ضمن حاوية مثل GroupBox . صورة توضيحية :
  4. الإجراءات المُخزّنة: هي جملة استعلام مخزنة في قاعدة البيانات يمكن أن تقوم بمجموعة من الأعمال، كإضافة سجل ثم تعديل البيانات في سجل آخر، والقيام بالحسابات على مجموعة أُخرى من السجلات وذلك اعتباراً من أمر واحد من المستخدم. عند استخدام الإجراءات المخزنة نقوم بإنشاء إجرائية مع معامِلات دخل وخرج بحيث يمكننا استدعاؤها بالصورة نفسها المُستخدمة في تعبيرات SQL المعيارية. تحتوي الإجراءات المخزنة تعبير أو مجموعة من تعبيرات SQL والتي تنفذ كجزء من تنفيذ الإجرائية مع إمكانيات التحكم بتدفق التنفيذ أو إضافة حلقات أو التنفيذ الشرطي، مما يعطي الإجرائيات المخزنة تمييزاً كبيراً. مثال بسيط عن الإجرائيات المُخزنة : CREATE PROCEDURE InsertContacts (@myName varchar(50), @myAddress varchar(50) = ‘Unknown’) AS Insert Into Contacts (contactName, contactAddress) Values (@myName, @myAddress);قمنا بإنشاء إجرائية اسمها InsertContacts بمعاملين من نمط varchar الثاني له قيمة افتراضية هي Unknown. وظيفة هذه الإجرائية تخزين الاسم والعنوان المُمرّرين عبر المعاملات ضمن قاعدة البيانات. ولاستدعاء الإجرائية نكتب الأمر التالي : EXECUTE InsertContacts ('ahmad','address'); >> للمزيد StoredProcedure.
  5. عندما نؤسّس اتصالاً بقاعدة البيانات فإننا نُمرّر استعلاماً ما ونفتح الاتصال، لذا يتوجب علينا تحديد طريقة تنفيذ الأمر. هناك عدّة طرق لتنفيذ هذه الأوامر ويتم استخدام الطريقة المناسبة للأمر الذي يحوي الاستعلام. الأوامر هي : • ExecuteReader : يستخدم عند تمرير استعلام يجلب أكثر من سجل من قاعدة البيانات ويتم تعريف DataReader لقراءة هذه السجلات والتعامل معها. string queryString = "SELECT * FROM table"; SqlCommand command = new SqlCommand(queryString, connection); connection.Open(); SqlDataReader reader = command.ExecuteReader(CommandBehavior.CloseConnection); while (reader.Read()) { Console.WriteLine(String.Format("{0}", reader[0])); }• ExecuteNonQuery : يُستخدم عند تمرير استعلام لتعديل البيانات من إضافة إلى حذف أو تعديل وبذلك لا توجد بيانات مُعادة من قاعدة البيانات. string queryString = "UPDATE table SET column='value' WHERE id=5"; SqlCommand command = new SqlCommand(queryString, connection); connection.Open(); SqlDataReader reader = command.ExecuteReader(CommandBehavior.CloseConnection); while (reader.Read()) { Console.WriteLine(String.Format("{0}", reader[0])); }• ExecuteScalar : يستخدم عند تمرير استعلام يجلب قيمة واحدة من قاعدة البيانات. string queryString = "SELECT COUNT(*) FROM table"; SqlCommand command = new SqlCommand(queryString, connection); connection.Open(); int count = command.ExecuteScalar(); Console.WriteLine("Count is : " + count); ويوجد أيضاً : • ExecuteXmlReader : يستخدم لتنفيذ الاستعلام وإعادته على شكل XML حيث يتم تعريف XmlReader وربط الناتج به لقراءته. المصدر SqlCommand Methods .
  6. الدالة "DateAdd" تُضيف قيمة رقمية إلى حقل من نوع تاريخ كإضافة بعض الأيام و الشهور و السنوات إلى تاريخ معين. صيغة الدالة كما يلي: DATEADD(Part_of_date, number, date) • المُعامل الأول Part_of_date يأخذ إحدى القيم الثلاثة: Year : لإجراء الإضافة على الجزء الخاص بالسنوات. Month : لإجراء الإضافة على الجزء الخاص بالشهور. Day: لإجراء الإضافة على الجزء الخاص بالأيام. • المعامل الثاني number يأخذ القيمة الرقمية المراد إضافتها. • المعامل الثالث date هو الحقل أو القيمة التاريخية المراد إجراء الإضافة إليها. مثال عن الدالة, استعلام يجلب لي الاسم الكامل للموظف وتاريخ العمل وتاريخ العمل مضافاً له 3 سنوات : SELECT FullName, Date_of_working as 'Date of working', DATEADD(year,3,Date_of_working) as 'Using DATADD' FROM Employee; للمزيد حول الدالة DATEADD .
  7. بإمكانك ترك الخيار للمستخدم في اختيار اللون للنص الذي يظهر له ضمن Label. الطريقة كالتالي : • نبني غرضّ من صف ColorDialog : ColorDialog MyDialog = new ColorDialog(); • نحدّد العنصر الذي سنُطبق اللون عليه وما إذا كان اللون سُيطبق على الخلفية أم على النص : MyDialog.Color = label1.ForeColor ; • أخيرًا وبعد اختيار المستخدم اللون نضع شرطاً نختبر بهِ فيما إذا استمر باختيار اللون أو ألغى العملية : if(MyDialog.ShowDialog() == DialogResult.OK) textBox1.ForeColor = MyDialog.Color; ملاحظة : الأوامر السابقة جميعها نضعها ضمن الطريقة المعالجة لحدث النقر على زر اختيار اللون. لتصبح كامل الأوامر كالتالي : private void button1_Click(object sender, EventArgs e) { ColorDialog MyDialog = new ColorDialog(); MyDialog.Color = label1.ForeColor ; if (MyDialog.ShowDialog() == DialogResult.OK) textBox1.ForeColor = MyDialog.Color; } المصدر.
  8. لإنشاء عدّاد يجب عليك اتباع الخطوات التالية : • من صندوق الأدوات أنشئ عنصر Button وعنصر TextBox وعنصر Label. • من صندوق الأدوات قم بإنشاء Timer واضبط من خصائصه الـ Interval للقيمة 1000. • انقر نقرتين على العنصر Timer لتوليد الطريقة المُعالجة لحدث Tick. • في الطريقة المعالجة لحدث Tick اكتب الأوامر الخاصّة بالعداد وشريط التقدم وهي: int first_time = int.Parse(textBox1.Text); // تخزين الوقت الكلي للعداد int percentage; // متحول لتخزين النسبة المئوية للعداد if (time > 0) { label1.Text = "Remained : " + time; // طباعة الوقت المتبقي من العداد percentage = time * 100 / first_time; // معادلة تحسب النسبة المئوية للوقت المتبقي progressBar1.Value = percentage; // تعديل قيمة شريط المعالجة إلى النسبة المئوية للوقت المتبقي time -= 1; // إنقاص عداد الوقت ثانية } else if (time == 0) { timer1.Stop(); // إيقاف العداد progressBar1.Value = 0; label1.Text = "Finished"; MessageBox.Show("انتهى العدّاد"); } else { timer1.Stop(); MessageBox.Show("يرجى إدخال قيمة رقميّة موجبة"); } • ضمن الطريقة المُعالجة لحدث النقر على زر بدء العداد اكتب الأوامرالتالية : time = int.Parse(textBox1.Text); timer1.Start(); // بدء العداد • قم بتعريف متحول عام ضمن الصف لقيمة العداد : int time; ليصبح كامل الكود هو : namespace WindowsFormsApplication2 { public partial class Form1 : Form { public Form1() { InitializeComponent(); } int time; private void button1_Click(object sender, EventArgs e) { time = int.Parse(textBox1.Text); timer1.Start(); } private void timer1_Tick(object sender, EventArgs e) { int first_time = int.Parse(textBox1.Text); int avg; if (time > 0) { label1.Text = "Remained : " + time; avg = time * 100 / first_time; progressBar1.Value = avg; time -= 1; } else if (time == 0) { timer1.Stop(); progressBar1.Value = 0; label1.Text = "Finished"; MessageBox.Show("انتهى العدّاد"); } else { timer1.Stop(); MessageBox.Show("يرجى إدخال قيمة رقميّة موجبة"); } } } }
  9. لإنشاء ساعة يجب عليك اتباع التالي : 1- أنشئ Label لنضع به الوقت واضبط خصائصه كما ترغب. 2- من الـ ToolBox أدرج الأداة Timer. 3- من خصائص الأداة اضّبط الخيارات الموضّحة في الصورة وفق الآتي : Enabled : True Interval : 1000 4- الآن انقر نقرتين على الأداة Timer كما هو موضّح في الصورة لينشئ البرنامج الطريقة المُعالجة للحدث Tick. 5- سنستعين بالأوامر التي تُعيد لنا الوقت وهي : DateTime.Now.Hour // لجلب الساعة الحالية DateTime.Now.Minute // لجلب الدقيقة الحالية DateTime.Now.Second // لجلب الثانية الحالية 6- ضمن الطريقة المُعالجة للحدث Tick نُدرج الأوامر التي سيُكرر تنفيذها وفق المدة التي حددّناها في الـ Interval وهي : label1.Text = DateTime.Now.Hour + ":" + DateTime.Now.Minute + ":" + DateTme.Now.Second; 7- بعد تنفيذ البرنامج ستظهر الساعة ضمن الـ ListBox وفق التنسيق التالي H:M:S . المزيد.
  10. لانجاز فكرتك تحتاج إلى تحديد الوقت الحالي وذلك ببناء غرض من ()Date ومناداة الطريقة getHours لتحديد الساعة الحالية. من ثم تفحّص الساعة الحالية وتنفيذ الشرط المناسب لها. عملياً يمكنك استخدام الأوامر التالية : <html> <head> <script> function ChangeBackGround() { var cd = new Date(); var hours = cd.getHours(); if(hour>=0 && hour<12) { document.body.style.backgroundImage = "url('pic1.jpg')"; } else if (hour>=12 && hour<23) { document.body.style.backgroundImage = "url('pic2.jpg')"; } } </script> </head> <body onLoad="ChangeBackGround();"> <!-- Body محتوى الوسم --> </body> </html>للمزيد حول Dates في جافا سكربت.
  11. يمكنك تغيير الارتباط أو أيّ خاصّية تابعة لوسم "الارتباط التشعبي" عبر الجافا السكربت بعد الوصول إلى العقدة التي تحويها من خلال الـ id الخاص بها. لنفترض أن صفحتك تحوي على كلمة Download لها ارتباط تشعبي بـ رابط تحميل ملفٍ ما . عند الضغط على Download سيفتح رابط التحميل ثم يتغير الارتباط التشعبي إلى الصفحة الرئيسية للموقع. عندها سيتكون الأوامر كالتالي : <html> <head> <script> /* إنشاء تابع يحدد وسم الارتباط ويغيّر خاصية href */ function ChangeLink() { var domain = 'http://YourSite.com/'; document.getElementById('d1').href = domain; } </script> </head> <body> <a id="d1" onClick="ChangeLink();" href="http://YourSite.com/File.ext" target="_blank">Download</a> </body> </html>
  12. تستطيع إنجاز ذلك عبر الصف الخاص بنافذة فتح ملف "OpenFileDialog" من خلال اتباع الخطوات التالية : 1- بناء غرض من هذا الصف. 2- تحديد الخصائص التي نريدها للنافذة. 3- إضافة شرط للتحقق من فتح النافذة واختيار ملف. الأوامر التي تحتاجها هي : OpenFileDialog ofd = new OpenFileDialog(); // بناء غرض /* خصائص النافذة */ ofd.Filter = "Pictures (*.jpg)|*.jpg"; // أنواع الملفات التي نستطيع مشاهدتها واختيارها ofd.Title = "Chose a picture"; // عنّوان النافذة if (ofd.ShowDialog() == DialogResult.OK) // التحقق من اتمام عملية اختيار الملف { string path = ofd.FileName; // الاوامر التي تريد تنفيذها بعد اختيار الملف }ويمكنك أيضاً إضافة خصائص ثانوية لنافذة فتح الملف مثل : ofd.InitialDirectory = "C:\\"; // لتحديد المسار الافتراضي للنافذة عند فتحها ofd.FileName = "summer.jpg"; // لتعيين اسم افتراضي للملف عند فتح النافذة للمزيد حول نافذة فتح ملف [ OpenFileDialog Class ] .
  13. يمكنك ترتيب البيانات تنازلياً وِفق رواتب الموظفين وتحديد العدد المطلوب من أعلى الرواتب لـ جلبهم. فـ باستخدام الكود البرمجي التالي يتم استدعاء 10 سجلات من قاعدة البيانات للموظفين مرتّبةً ترتيباً تنازلياً حسب الراتب الشهري لكل موظف: SELECT * FROM employee ORDER BY salary DESC LIMIT 10 ; تستطيع تغير قيمة الخاصّية OEDER BY من"salary" إلى أحدْ أسماء الأعمدة ليتم الترتيب وفق العمود المحدد. ملاحظة : بهذا الاستعلام سيتم المرور على جميع حقول الرواتب لـ غرض الترتيب ممّا سيؤثر سلباً على الأداء إذا حوى عمود "الرواتب" عدداً ضخماً من السجلات. يمكنك قراءة المزيد حول ترتيب البيانات المعادة من هنا.
  14. يوفّر نظام التشغيل ذاكرة مؤقتة تسمى Clipboard وظيفتها تخزين النصوص ونقلها من مكان إلى آخر ضمن نظام التشغيل نفسه. تقوم الطريقة Clipboard.SetText الموجودة ضمن المكتبة System.Windows.Forms بتخزين قيمة ما إلى الحافظة Clipboard. تتّسع هذه الحافظة إلى قيمة واحدة فقط وعند تخزين قيمة جديدة تُفرَّغ الحافظة من القيمة القديمة ويتم ملّؤها بالقيمة الجديدة. الحافظة Clipboard يتم استعمالها أيضاً في عمليات النسّخ واللصّق التي نجريها يومياً في عملنا. اكتب الكود التالي ضمن الطريقة المعالِجة لِحدث النّقر على زر النسّخ : string result = textBox1.Text ; System.Windows.Forms.Clipboard.SetText(result) ; المصدر
  15. يمكن تحديد العنوان بأكثر من طريقة. من ضمن تلك الطرق استخدام الخاصّية document.title وتحديد قيمة لها لتكون القيمة المُعطى هي عنوان الصفحة. وفي خلاف ذلك سيستخدم محتوى الوسم <title> كعنوان للصفحة. تقوم الخاصّية document.title بـإرجاع العنوان للصفحـة الحاليــة. ويمكن تعديل العنوان الحالي للصفحة بـإسناد قيمة جديدة لهذه الخاصّية عبر التعليمة التالية: document.title = "اكتب هنا العنوان الجديد";من الممّكن أن تحوي الصفحة على وسم العنوان <title> والخاصّية document.title معًاً فيتم عرض العنوان الموجود ضمن وسم <title> بدايةً ومن ثم يُستبدل العنوان بالقيمة التي أُسندت للخاصّية document.title عند تفعيل هذه الخاصّية. يجب التنويه إلى أنّ معظم محركات البحث تعتمد العنوان الموجود في وسم عنوان الصفحة <title> قبل تعليمات الـJavaScript . المصدر.