<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
	xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
	xmlns:georss="http://www.georss.org/georss" xmlns:geo="http://www.w3.org/2003/01/geo/wgs84_pos#" xmlns:media="http://search.yahoo.com/mrss/"
	>

<channel>
	<title>مدونة النبهاني &#187; Visual Basic .Net</title>
	<atom:link href="http://alnabhani.wordpress.com/category/visual-basic-net/feed/" rel="self" type="application/rss+xml" />
	<link>http://alnabhani.wordpress.com</link>
	<description>أحدث مواضيعي البرمجية والتقنية</description>
	<lastBuildDate>Sat, 28 Nov 2009 17:05:07 +0000</lastBuildDate>
	<generator>http://wordpress.com/</generator>
	<language>ar</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<cloud domain='alnabhani.wordpress.com' port='80' path='/?rsscloud=notify' registerProcedure='' protocol='http-post' />
<image>
		<url>http://www.gravatar.com/blavatar/91abf77f7c013d66c6f253d8802f990d?s=96&#038;d=http://s.wordpress.com/i/buttonw-com.png</url>
		<title>مدونة النبهاني &#187; Visual Basic .Net</title>
		<link>http://alnabhani.wordpress.com</link>
	</image>
			<item>
		<title>Collections Initializers في Visual Basic 2010</title>
		<link>http://alnabhani.wordpress.com/2009/06/19/collections-initializers-visual-basic-2010/</link>
		<comments>http://alnabhani.wordpress.com/2009/06/19/collections-initializers-visual-basic-2010/#comments</comments>
		<pubDate>Fri, 19 Jun 2009 11:49:39 +0000</pubDate>
		<dc:creator>alnabhani</dc:creator>
				<category><![CDATA[Visual Basic .Net]]></category>
		<category><![CDATA[beta]]></category>
		<category><![CDATA[collections]]></category>
		<category><![CDATA[vb10]]></category>
		<category><![CDATA[vs2010]]></category>

		<guid isPermaLink="false">http://alnabhani.wordpress.com/2009/06/19/collections-initializers-%d9%81%d9%8a-visual-basic-2010/</guid>
		<description><![CDATA[
في كل اصدارة جديدة جديد برمجي ، هذا ما عودتنا عليه مايكروسوفت خصوصا في السنوات الاخيرة ، حيث تجد العديد من التطويرات الجديدة في لغة البرمجة مما يكسبها المزيد منت المرونة والقوة في نفس الوقت .
من التطويرات الجديدة في النسخة القادمة من Visual Basic والتي تحمل الرقم 10 هي ما يدعى بمنشئات المجموعات Collection Initializers [...]<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=alnabhani.wordpress.com&blog=454111&post=125&subd=alnabhani&ref=&feed=1" />]]></description>
			<content:encoded><![CDATA[<div class='snap_preview'><br /></p>
<p>في كل اصدارة جديدة جديد برمجي ، هذا ما عودتنا عليه مايكروسوفت خصوصا في السنوات الاخيرة ، حيث تجد العديد من التطويرات الجديدة في لغة البرمجة مما يكسبها المزيد منت المرونة والقوة في نفس الوقت .</p>
<p>من التطويرات الجديدة في النسخة القادمة من Visual Basic والتي تحمل الرقم 10 هي ما يدعى بمنشئات المجموعات Collection Initializers . في هذه المقالة سنتعرف على الـ Collections Initializers .</p>
</p>
<p> <span id="more-125"></span>
<p>ظهر في الاصدار التاسع من visual basic ما يعرف بمنشئات الكائنات Objects Initializers حيث اصبح بإمكانك انشاء نسخه جديدة من فئة معينه واسناد قيم ابتدائيه لبعض خصائصها في نفس السطر بدون ان تستخدم منشيء الفئة New . لنفترض ان لدينا الفئة التالية :</p>
</p>
<table border="1" cellspacing="0" cellpadding="2" width="500">
<tbody>
<tr>
<td dir="ltr" valign="top" width="500">
<div class="code"><font color="#0000ff">Class</font><font color="#808080">&#160;</font><font color="#000000">Student</font><font color="#808080">             <br />&#160;&#160;&#160; </font><font color="#0000ff">Private</font><font color="#808080">&#160;</font><font color="#000000">_Age</font><font color="#808080">&#160;</font><font color="#0000ff">As</font><font color="#808080">&#160;</font><font color="#0000ff">Byte</font><font color="#808080">             <br />&#160;&#160;&#160; </font><font color="#0000ff">Public</font><font color="#808080">&#160;</font><font color="#0000ff">Property</font><font color="#808080">&#160;</font><font color="#000000">Age()</font><font color="#808080">&#160;</font><font color="#0000ff">As</font><font color="#808080">&#160;</font><font color="#0000ff">Byte</font><font color="#808080">             <br />&#160;&#160;&#160;&#160;&#160;&#160;&#160; </font><font color="#0000ff">Get</font><font color="#808080">             <br />&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160; </font><font color="#0000ff">Return</font><font color="#808080">&#160;</font><font color="#000000">_Age</font><font color="#808080">             <br />&#160;&#160;&#160;&#160;&#160;&#160;&#160; </font><font color="#0000ff">End</font><font color="#808080">&#160;</font><font color="#0000ff">Get</font><font color="#808080">             <br />&#160;&#160;&#160;&#160;&#160;&#160;&#160; </font><font color="#0000ff">Set</font><font color="#000000">(</font><font color="#0000ff">ByVal</font><font color="#808080">&#160;</font><font color="#000000">value</font><font color="#808080">&#160;</font><font color="#0000ff">As</font><font color="#808080">&#160;</font><font color="#0000ff">Byte</font><font color="#000000">)</font><font color="#808080">             <br />&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160; </font><font color="#000000">_Age</font><font color="#808080">&#160;</font><font color="#0000ff">=</font><font color="#808080">&#160;</font><font color="#000000">value</font><font color="#808080">             <br />&#160;&#160;&#160;&#160;&#160;&#160;&#160; </font><font color="#0000ff">End</font><font color="#808080">&#160;</font><font color="#0000ff">Set</font><font color="#808080">             <br />&#160;&#160;&#160; </font><font color="#0000ff">End</font><font color="#808080">&#160;</font><font color="#0000ff">Property</font><font color="#808080">             </p>
<p>&#160;&#160;&#160; </font><font color="#0000ff">Private</font><font color="#808080">&#160;</font><font color="#000000">_Name</font><font color="#808080">&#160;</font><font color="#0000ff">As</font><font color="#808080">&#160;</font><font color="#0000ff">String</font><font color="#808080">             <br />&#160;&#160;&#160; </font><font color="#0000ff">Public</font><font color="#808080">&#160;</font><font color="#0000ff">Property</font><font color="#808080">&#160;</font><font color="#000000">Age()</font><font color="#808080">&#160;</font><font color="#0000ff">As</font><font color="#808080">&#160;</font><font color="#0000ff">String</font><font color="#808080">             <br />&#160;&#160;&#160;&#160;&#160;&#160;&#160; </font><font color="#0000ff">Get</font><font color="#808080">             <br />&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160; </font><font color="#0000ff">Return</font><font color="#808080">&#160;</font><font color="#000000">_Age</font><font color="#808080">             <br />&#160;&#160;&#160;&#160;&#160;&#160;&#160; </font><font color="#0000ff">End</font><font color="#808080">&#160;</font><font color="#0000ff">Get</font><font color="#808080">             <br />&#160;&#160;&#160;&#160;&#160;&#160;&#160; </font><font color="#0000ff">Set</font><font color="#000000">(</font><font color="#0000ff">ByVal</font><font color="#808080">&#160;</font><font color="#000000">value</font><font color="#808080">&#160;</font><font color="#0000ff">As</font><font color="#808080">&#160;</font><font color="#0000ff">String</font><font color="#000000">)</font><font color="#808080">             <br />&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160; </font><font color="#000000">_Age</font><font color="#808080">&#160;</font><font color="#0000ff">=</font><font color="#808080">&#160;</font><font color="#000000">value</font><font color="#808080">             <br />&#160;&#160;&#160;&#160;&#160;&#160;&#160; </font><font color="#0000ff">End</font><font color="#808080">&#160;</font><font color="#0000ff">Set</font><font color="#808080">             <br />&#160;&#160;&#160; </font><font color="#0000ff">End</font><font color="#808080">&#160;</font><font color="#0000ff">Property</font><font color="#808080">             </p>
<p></font><font color="#0000ff">End</font><font color="#808080">&#160;</font><font color="#0000ff">Class</font> </div>
</td>
</tr>
</tbody>
</table>
<p>حيث اسمها Student وتحتوي على خاصيتين وهما Age و Name ، الىن افرض انك تود انشاء عدة كائنات جديدة من هذه الفئة واسناد قيم للخاصيتين Age و Name معا بسطر واحد وبشكل مختصر تماما في الكود ، سيكون شكل الكود بالطريقة التالية حيث نستخدم الكلمة المحجوزة With :</p>
<table border="1" cellspacing="0" cellpadding="2" width="500">
<tbody>
<tr>
<td dir="ltr" valign="top" width="500">
<div class="code"><font color="#808080">&#160;&#160;&#160;&#160;&#160;&#160;&#160; </font><font color="#006400">&#8216;you can write it in this way             <br /></font><font color="#808080">&#160;&#160;&#160;&#160;&#160;&#160;&#160; </font><font color="#0000ff">Dim</font><font color="#808080">&#160;</font><font color="#000000">Ahmed</font><font color="#808080">&#160;</font><font color="#0000ff">As</font><font color="#808080">&#160;</font><font color="#0000ff">New</font><font color="#808080">&#160;</font><font color="#000000">Student</font><font color="#808080">             <br />&#160;&#160;&#160;&#160;&#160;&#160;&#160; </font><font color="#000000">Ahmed.Age</font><font color="#808080">&#160;</font><font color="#0000ff">=</font><font color="#808080">&#160;</font><font color="#800000">20</font><font color="#808080">             <br />&#160;&#160;&#160;&#160;&#160;&#160;&#160; </font><font color="#000000">Ahmed.Name</font><font color="#808080">&#160;</font><font color="#0000ff">=</font><font color="#808080"> &quot;Ahmed&quot;             </p>
<p>&#160;&#160;&#160;&#160;&#160;&#160;&#160; </font><font color="#0000ff">Dim</font><font color="#808080">&#160;</font><font color="#000000">Naser</font><font color="#808080">&#160;</font><font color="#0000ff">As</font><font color="#808080">&#160;</font><font color="#0000ff">New</font><font color="#808080">&#160;</font><font color="#000000">Student</font><font color="#808080">             <br />&#160;&#160;&#160;&#160;&#160;&#160;&#160; </font><font color="#000000">Naser.Age</font><font color="#808080">&#160;</font><font color="#0000ff">=</font><font color="#808080">&#160;</font><font color="#800000">22</font><font color="#808080">             <br />&#160;&#160;&#160;&#160;&#160;&#160;&#160; </font><font color="#000000">Naser.Name</font><font color="#808080">&#160;</font><font color="#0000ff">=</font><font color="#808080"> &quot;Student&quot;             </p>
<p>&#160;&#160;&#160;&#160;&#160;&#160;&#160; </font><font color="#006400">&#8216;or this way             <br /></font><font color="#808080">&#160;&#160;&#160;&#160;&#160;&#160;&#160; </font><font color="#0000ff">Dim</font><font color="#808080">&#160;</font><font color="#000000">Mohammed</font><font color="#808080">&#160;</font><font color="#0000ff">As</font><font color="#808080">&#160;</font><font color="#0000ff">New</font><font color="#808080">&#160;</font><font color="#000000">Student</font><font color="#808080">&#160;</font><font color="#0000ff">With</font><font color="#808080">&#160;</font><font color="#000000">{.Age</font><font color="#808080">&#160;</font><font color="#0000ff">=</font><font color="#808080">&#160;</font><font color="#800000">20</font><font color="#000000">,</font><font color="#808080">&#160;</font><font color="#000000">.Name</font><font color="#808080">&#160;</font><font color="#0000ff">=</font><font color="#808080"> &quot;Ahmed&quot;</font><font color="#000000">}</font><font color="#808080">             <br />&#160;&#160;&#160;&#160;&#160;&#160;&#160; </font><font color="#0000ff">Dim</font><font color="#808080">&#160;</font><font color="#000000">Salim</font><font color="#808080">&#160;</font><font color="#0000ff">As</font><font color="#808080">&#160;</font><font color="#0000ff">New</font><font color="#808080">&#160;</font><font color="#000000">Student</font><font color="#808080">&#160;</font><font color="#0000ff">With</font><font color="#808080">&#160;</font><font color="#000000">{.Age</font><font color="#808080">&#160;</font><font color="#0000ff">=</font><font color="#808080">&#160;</font><font color="#800000">22</font><font color="#000000">,</font><font color="#808080">&#160;</font><font color="#000000">.Name</font><font color="#808080">&#160;</font><font color="#0000ff">=</font><font color="#808080"> &quot;Salim&quot;</font><font color="#000000">}</font> </div>
</td>
</tr>
</tbody>
</table>
<p>طبعا قد يعترض احدهم ويقول : لماذا لا نقوم بإضافة مشيد للفئة Student من خلاله نقوم بإسناد القيم مباشرة إلى الخصائص المراده ؟ سأحترم رأيك وهو ذاته الذي تكون لدي في البداية ، لكن في بعض الحالات لا اعتقد انك تود كتابة مشيد للفئة من اجل اسناد قيم مجموعة كبيرة من الخصائص ، فافرض ان لدينا حوالي 10 خصائص وتود اسناد القيم لها ، فما الداعي ان تكتب 10 سطور في مشيد معين للفئة لتقوم بإسناد تلك الخصائص ، فضلا عن انك قد تحتاج لكتابة اكثر من مشيد واحد للفئة حسب الحاجه ، فهذه الطريقة تختصر عليك الكثير من الوقت والجهد .</p>
<p>الطريقة ذاتها مدعومة بشكل واضح في LINQ ، فلو افترضنا انه لدينا List بالـ students بالإسم ClassStudents كما وتود الاستعلام عن احدها ، فسيكون الكود بالشكل التالي :</p>
</p>
<table border="1" cellspacing="0" cellpadding="2" width="500">
<tbody>
<tr>
<td dir="ltr" valign="top" width="500">
<div class="code"><font color="#808080">&#160;&#160;&#160;&#160;&#160;&#160;&#160; </font><font color="#0000ff">Dim</font><font color="#808080">&#160;</font><font color="#000000">Mohammed</font><font color="#808080">&#160;</font><font color="#0000ff">As</font><font color="#808080">&#160;</font><font color="#0000ff">New</font><font color="#808080">&#160;</font><font color="#000000">Student</font><font color="#808080">&#160;</font><font color="#0000ff">With</font><font color="#808080">&#160;</font><font color="#000000">{.Age</font><font color="#808080">&#160;</font><font color="#0000ff">=</font><font color="#808080">&#160;</font><font color="#800000">20</font><font color="#000000">,</font><font color="#808080">&#160;</font><font color="#000000">.Name</font><font color="#808080">&#160;</font><font color="#0000ff">=</font><font color="#808080"> &quot;Ahmed&quot;</font><font color="#000000">}</font><font color="#808080">             <br />&#160;&#160;&#160;&#160;&#160;&#160;&#160; </font><font color="#0000ff">Dim</font><font color="#808080">&#160;</font><font color="#000000">Salim</font><font color="#808080">&#160;</font><font color="#0000ff">As</font><font color="#808080">&#160;</font><font color="#0000ff">New</font><font color="#808080">&#160;</font><font color="#000000">Student</font><font color="#808080">&#160;</font><font color="#0000ff">With</font><font color="#808080">&#160;</font><font color="#000000">{.Age</font><font color="#808080">&#160;</font><font color="#0000ff">=</font><font color="#808080">&#160;</font><font color="#800000">22</font><font color="#000000">,</font><font color="#808080">&#160;</font><font color="#000000">.Name</font><font color="#808080">&#160;</font><font color="#0000ff">=</font><font color="#808080"> &quot;Salim&quot;</font><font color="#000000">}</font><font color="#808080">             </p>
<p>&#160;&#160;&#160;&#160;&#160;&#160;&#160; </font><font color="#0000ff">Dim</font><font color="#808080">&#160;</font><font color="#000000">ClassStudents</font><font color="#808080">&#160;</font><font color="#0000ff">As</font><font color="#808080">&#160;</font><font color="#0000ff">New</font><font color="#808080">&#160;</font><font color="#2b91af">List</font><font color="#000000">(Of</font><font color="#808080">&#160;</font><font color="#000000">Student)</font><font color="#808080">             <br />&#160;&#160;&#160;&#160;&#160;&#160;&#160; </font><font color="#000000">ClassStudents.Add(Mohammed)</font><font color="#808080">             <br />&#160;&#160;&#160;&#160;&#160;&#160;&#160; </font><font color="#000000">ClassStudents.Add(Salim)</font><font color="#808080">             </p>
<p>&#160;&#160;&#160;&#160;&#160;&#160;&#160; </font><font color="#0000ff">Dim</font><font color="#808080">&#160;</font><font color="#000000">sStudent</font><font color="#808080">&#160;</font><font color="#0000ff">=</font><font color="#808080">&#160;</font><font color="#000000">From</font><font color="#808080">&#160;</font><font color="#000000">student</font><font color="#808080">&#160;</font><font color="#0000ff">In</font><font color="#808080">&#160;</font><font color="#000000">ClassStudents</font><font color="#808080">&#160;</font><font color="#000000">_</font><font color="#808080">             <br />&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160; </font><font color="#0000ff">Select</font><font color="#808080">&#160;</font><font color="#0000ff">New</font><font color="#808080">&#160;</font><font color="#000000">Student</font><font color="#808080">&#160;</font><font color="#000000">_</font><font color="#808080">             <br />&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160; </font><font color="#0000ff">With</font><font color="#808080">&#160;</font><font color="#000000">{.Name</font><font color="#808080">&#160;</font><font color="#0000ff">=</font><font color="#808080"> &quot;Ahmed&quot;</font><font color="#000000">,</font><font color="#808080">&#160;</font><font color="#000000">.Age</font><font color="#808080">&#160;</font><font color="#0000ff">=</font><font color="#808080">&#160;</font><font color="#800000">20</font><font color="#000000">}</font> </div>
</td>
</tr>
</tbody>
</table>
<p>لكنك تلاحظ من الكود السابق ان عملية انشاء List واضافة عناصر اليها في نفس السطر غير ممكنة حتى الاصدار التاسع لذلك في الكود السابق قمنا بإنشاء كائنين جديدين من الفئة Student ثم قمنا بإضافتهما الى القائمة List المحددة . البعض قد يقترح انشاء Array حيث ذلك ممكن ، لكننا هنا نرغب بعمل List وليس مصفوفة ، اضف الى ان عملية التحويل ستكون مستهلكه لسطور من الاكواد – ستحتاج الى انشاء مصفوفة اولا وتضيف لها العناصر ثم تقوم بانشاء القائمة List وتسند لها المصفوفة ! &#8211; وبالتالي دعنا على الحالة الراهنة افضل من اللف والدوران ووجع الرأس !</p>
<p>في Visual Basic 10 اصبح هذا الامر ممكنا بفضل الكلمة المحجوزة From كما بالكود التالي :</p>
</p>
<table border="1" cellspacing="0" cellpadding="2" width="500">
<tbody>
<tr>
<td dir="ltr" valign="top" width="500">
<div class="code"><font color="#0000ff">Dim</font><font color="#808080">&#160;</font><font color="#000000">studentList</font><font color="#808080">&#160;</font><font color="#0000ff">As</font><font color="#808080">&#160;</font><font color="#0000ff">New</font><font color="#808080">&#160;</font><font color="#2b91af">List</font><font color="#000000">(Of</font><font color="#808080">&#160;</font><font color="#000000">Student)</font><font color="#808080">&#160;</font><font color="#000000">From</font><font color="#808080">             <br />&#160;&#160;&#160; </font><font color="#000000">{</font><font color="#0000ff">New</font><font color="#808080">&#160;</font><font color="#000000">Student</font><font color="#808080">&#160;</font><font color="#0000ff">With</font><font color="#808080">&#160;</font><font color="#000000">{.Age</font><font color="#808080">&#160;</font><font color="#0000ff">=</font><font color="#808080">&#160;</font><font color="#800000">10</font><font color="#000000">,</font><font color="#808080">&#160;</font><font color="#000000">.Name</font><font color="#808080">&#160;</font><font color="#0000ff">=</font><font color="#808080"> &quot;Mohammed&quot;</font><font color="#000000">},</font><font color="#808080">             <br />&#160;&#160;&#160;&#160; </font><font color="#0000ff">New</font><font color="#808080">&#160;</font><font color="#000000">Student</font><font color="#808080">&#160;</font><font color="#0000ff">With</font><font color="#808080">&#160;</font><font color="#000000">{.Age</font><font color="#808080">&#160;</font><font color="#0000ff">=</font><font color="#808080">&#160;</font><font color="#800000">11</font><font color="#000000">,</font><font color="#808080">&#160;</font><font color="#000000">.Name</font><font color="#808080">&#160;</font><font color="#0000ff">=</font><font color="#808080"> &quot;Salim&quot;</font><font color="#000000">},</font><font color="#808080">             <br />&#160;&#160;&#160;&#160; </font><font color="#0000ff">New</font><font color="#808080">&#160;</font><font color="#000000">Student</font><font color="#808080">&#160;</font><font color="#0000ff">With</font><font color="#808080">&#160;</font><font color="#000000">{.Age</font><font color="#808080">&#160;</font><font color="#0000ff">=</font><font color="#808080">&#160;</font><font color="#800000">12</font><font color="#000000">,</font><font color="#808080">&#160;</font><font color="#000000">.Name</font><font color="#808080">&#160;</font><font color="#0000ff">=</font><font color="#808080"> &quot;Nasser&quot;</font><font color="#000000">},</font><font color="#808080">             <br />&#160;&#160;&#160;&#160; </font><font color="#0000ff">New</font><font color="#808080">&#160;</font><font color="#000000">Student</font><font color="#808080">&#160;</font><font color="#0000ff">With</font><font color="#808080">&#160;</font><font color="#000000">{.Age</font><font color="#808080">&#160;</font><font color="#0000ff">=</font><font color="#808080">&#160;</font><font color="#800000">13</font><font color="#000000">,</font><font color="#808080">&#160;</font><font color="#000000">.Name</font><font color="#808080">&#160;</font><font color="#0000ff">=</font><font color="#808080"> &quot;Khalid&quot;</font><font color="#000000">}}</font> </div>
</td>
</tr>
</tbody>
</table>
</p>
<p>اعتقد ان الكثيرين ممنا سيقرأون الكود السابق سيصيبهم الدوار والحول وسيقولون هذا ليس كود Visual Basic فأين الشرطة المنخفضة _ او المعروفة بـ Underscore نهاية كل سطر ؟ وماذا دهى الألوان والخط حتى ! مهلا مهلا يا جماعة الخير هل نسيتم اننا نستخدم تقنية من شركة مايكروسوفت وبالتالي كل شيء يتغير في يوم وليلة ؟ في فيجوال بيسك 10 لسنا بحاجه الى كتابة underscore نهاية كل سطر ، فضلا عن تغيير تلوين الكلمات شيئا ما – اصبح مثل اكواد C# الى حد كبير جدا .</p>
<p>طيب ما رأيك بتسهيل الكود السابق اكثر اذا علمنا ان الطرق الموسعة Extension Methods مدعومة في هذه القضية ! شاهد معي الكود التالي :</p>
</p>
<table border="1" cellspacing="0" cellpadding="2" width="500">
<tbody>
<tr>
<td dir="ltr" valign="top" width="500">
<div class="code"><font color="#000000">&lt;Runtime.CompilerServices.Extension()&gt;</font><font color="#808080">             <br /></font><font color="#0000ff">Sub</font><font color="#808080">&#160;</font><font color="#000000">Add(</font><font color="#0000ff">ByVal</font><font color="#808080">&#160;</font><font color="#000000">list</font><font color="#808080">&#160;</font><font color="#0000ff">As</font><font color="#808080">&#160;</font><font color="#2b91af">List</font><font color="#000000">(Of</font><font color="#808080">&#160;</font><font color="#000000">Student),</font><font color="#808080">             <br />&#160;&#160;&#160;&#160;&#160;&#160;&#160; </font><font color="#0000ff">ByVal</font><font color="#808080">&#160;</font><font color="#000000">age</font><font color="#808080">&#160;</font><font color="#0000ff">As</font><font color="#808080">&#160;</font><font color="#0000ff">Integer</font><font color="#000000">,</font><font color="#808080">             <br />&#160;&#160;&#160;&#160;&#160;&#160;&#160; </font><font color="#0000ff">ByVal</font><font color="#808080">&#160;</font><font color="#000000">name</font><font color="#808080">&#160;</font><font color="#0000ff">As</font><font color="#808080">&#160;</font><font color="#0000ff">String</font><font color="#000000">)</font><font color="#808080">             </p>
<p>&#160;&#160;&#160; </font><font color="#000000">list.Add(</font><font color="#0000ff">New</font><font color="#808080">&#160;</font><font color="#000000">Student</font><font color="#808080">&#160;</font><font color="#0000ff">With</font><font color="#808080">&#160;</font><font color="#000000">{.Age</font><font color="#808080">&#160;</font><font color="#0000ff">=</font><font color="#808080">&#160;</font><font color="#000000">age,</font><font color="#808080">&#160;</font><font color="#000000">.Name</font><font color="#808080">&#160;</font><font color="#0000ff">=</font><font color="#808080">&#160;</font><font color="#000000">name})</font><font color="#808080">             <br /></font><font color="#0000ff">End</font><font color="#808080">&#160;</font><font color="#0000ff">Sub</font> </div>
</td>
</tr>
</tbody>
</table>
<p>بعد كتابة تلكم السطيرات – تعبير جديد ! – اصبح بإمكاننا كتابة الكود التالي :</p>
</p>
<table border="1" cellspacing="0" cellpadding="2" width="500">
<tbody>
<tr>
<td dir="ltr" valign="top" width="500">
<div class="code"><font color="#0000ff">Dim</font><font color="#808080">&#160;</font><font color="#000000">studentList</font><font color="#808080">&#160;</font><font color="#0000ff">As</font><font color="#808080">&#160;</font><font color="#0000ff">New</font><font color="#808080">&#160;</font><font color="#2b91af">List</font><font color="#000000">(Of</font><font color="#808080">&#160;</font><font color="#000000">Student)</font><font color="#808080">&#160;</font><font color="#000000">From</font><font color="#808080">             <br />&#160;&#160;&#160; </font><font color="#000000">{{</font><font color="#800000">10</font><font color="#000000">,</font><font color="#808080"> &quot;Ahmed&quot;</font><font color="#000000">},</font><font color="#808080">&#160;</font><font color="#000000">{</font><font color="#800000">11</font><font color="#000000">,</font><font color="#808080"> &quot;Salim&quot;</font><font color="#000000">},</font><font color="#808080">&#160;</font><font color="#000000">{</font><font color="#800000">12</font><font color="#000000">,</font><font color="#808080"> &quot;Nasser&quot;</font><font color="#000000">}}</font> </div>
</td>
</tr>
</tbody>
</table>
<p>ما رأيك بالعملية السابقة ؟</p>
<p>آخر ما تبقى عرضه هو امكانيه اضافة العناصر بشكل مباشر دون استخدام الكلمة From كما بالشكل التالي :</p>
</p>
<table border="1" cellspacing="0" cellpadding="2" width="500">
<tbody>
<tr>
<td dir="ltr" valign="top" width="500">
<div class="code"><font color="#0000ff">Dim</font><font color="#808080">&#160;</font><font color="#000000">nums</font><font color="#808080">&#160;</font><font color="#0000ff">As</font><font color="#808080">&#160;</font><font color="#0000ff">New</font><font color="#808080">&#160;</font><font color="#2b91af">List</font><font color="#000000">(Of</font><font color="#808080">&#160;</font><font color="#0000ff">Integer</font><font color="#000000">)({</font><font color="#800000">1</font><font color="#000000">,</font><font color="#808080">&#160;</font><font color="#800000">2</font><font color="#000000">,</font><font color="#808080">&#160;</font><font color="#800000">3</font><font color="#000000">,</font><font color="#808080">&#160;</font><font color="#800000">4</font><font color="#000000">,</font><font color="#808080">&#160;</font><font color="#800000">5</font><font color="#000000">})</font> </div>
</td>
</tr>
</tbody>
</table>
<p>نترقب الاصدار 2010 بفارغ الصبر !</p>
<p>مقتبس ومترجم بتصرف مع بعض الرتوش البسيطة من :</p>
<p><a href="http://blogs.msdn.com/bethmassi/archive/2009/06/05/collection-initializers-in-visual-basic-10.aspx">http://blogs.msdn.com/bethmassi/archive/2009/06/05/collection-initializers-in-visual-basic-10.aspx</a></p>
<p>تحياتي</p>
Posted in Visual Basic .Net Tagged: beta, collections, vb10, vs2010 <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/alnabhani.wordpress.com/125/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/alnabhani.wordpress.com/125/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/alnabhani.wordpress.com/125/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/alnabhani.wordpress.com/125/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/alnabhani.wordpress.com/125/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/alnabhani.wordpress.com/125/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/alnabhani.wordpress.com/125/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/alnabhani.wordpress.com/125/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/alnabhani.wordpress.com/125/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/alnabhani.wordpress.com/125/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=alnabhani.wordpress.com&blog=454111&post=125&subd=alnabhani&ref=&feed=1" /></div>]]></content:encoded>
			<wfw:commentRss>http://alnabhani.wordpress.com/2009/06/19/collections-initializers-visual-basic-2010/feed/</wfw:commentRss>
		<slash:comments>2</slash:comments>
	
		<media:content url="" medium="image">
			<media:title type="html">alnabhani</media:title>
		</media:content>
	</item>
		<item>
		<title>مراقبة الملفات الموجودة في الحافظة Clipboard</title>
		<link>http://alnabhani.wordpress.com/2009/02/01/%d9%85%d8%b1%d8%a7%d9%82%d8%a8%d8%a9-%d8%a7%d9%84%d9%85%d9%84%d9%81%d8%a7%d8%aa-%d8%a7%d9%84%d9%85%d9%88%d8%ac%d9%88%d8%af%d8%a9-%d9%81%d9%8a-%d8%a7%d9%84%d8%ad%d8%a7%d9%81%d8%b8%d8%a9-clipboard/</link>
		<comments>http://alnabhani.wordpress.com/2009/02/01/%d9%85%d8%b1%d8%a7%d9%82%d8%a8%d8%a9-%d8%a7%d9%84%d9%85%d9%84%d9%81%d8%a7%d8%aa-%d8%a7%d9%84%d9%85%d9%88%d8%ac%d9%88%d8%af%d8%a9-%d9%81%d9%8a-%d8%a7%d9%84%d8%ad%d8%a7%d9%81%d8%b8%d8%a9-clipboard/#comments</comments>
		<pubDate>Sun, 01 Feb 2009 07:19:15 +0000</pubDate>
		<dc:creator>alnabhani</dc:creator>
				<category><![CDATA[Visual Basic .Net]]></category>
		<category><![CDATA[clipboard]]></category>
		<category><![CDATA[files]]></category>
		<category><![CDATA[files drop list]]></category>

		<guid isPermaLink="false">http://alnabhani.wordpress.com/2009/02/01/%d9%85%d8%b1%d8%a7%d9%82%d8%a8%d8%a9-%d8%a7%d9%84%d9%85%d9%84%d9%81%d8%a7%d8%aa-%d8%a7%d9%84%d9%85%d9%88%d8%ac%d9%88%d8%af%d8%a9-%d9%81%d9%8a-%d8%a7%d9%84%d8%ad%d8%a7%d9%81%d8%b8%d8%a9-clipboard/</guid>
		<description><![CDATA[
في بعض الاحيان قد تحتاج الى كتابة كود لمراقبة الملفات الموجودة في الحافظة Clipboard ، وأدنى ما تحتاجه غالبا هو معرفة المسار الكامل للملف والعملية ادت الى وضع الملف في الحافظة سواء كانت نسخ copy او قص Cut ، قد تتخيل لوهلة أن العملية قد تكون معقدة وصعبة للغاية ، لكن دعني اخبرك بان الكائن [...]<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=alnabhani.wordpress.com&blog=454111&post=122&subd=alnabhani&ref=&feed=1" />]]></description>
			<content:encoded><![CDATA[<div class='snap_preview'><br /></p>
<p>في بعض الاحيان قد تحتاج الى كتابة كود لمراقبة الملفات الموجودة في الحافظة Clipboard ، وأدنى ما تحتاجه غالبا هو معرفة المسار الكامل للملف والعملية ادت الى وضع الملف في الحافظة سواء كانت نسخ copy او قص Cut ، قد تتخيل لوهلة أن العملية قد تكون معقدة وصعبة للغاية ، لكن دعني اخبرك بان الكائن My.computer.clipboard الخاص بالتعامل مع حافظة النظام يحتوي على طرق Methods تسهل معرفه محتوى الحافظة سواء كان صوت او نص او ملفات ، فلنتابع معا الفكرة التي اقتبستها من احد المواقع الاجنبية .</p>
<p>الطريقة GetFileDropList تعود لنا بـ Collection تمثل قائمة بالملفات الموجودة في الذاكرة ، وسيكون بإمكاننا بسهوله كتابة كود كالتالي للحصول عليها في اداة TextBox متعددة الاسطر:</p>
</p>
<table cellspacing="0" cellpadding="2" width="500" border="1">
<tbody>
<tr>
<td dir="ltr" valign="top" width="500">
<div class="code"><font color="#808080">&#160;&#160;&#160;&#160;&#160;&#160;&#160; </font><font color="#0000ff">If</font><font color="#808080">&#160;</font><font color="#000000">My.Computer.Clipboard.ContainsFileDropList</font><font color="#808080">&#160;</font><font color="#0000ff">=</font><font color="#808080">&#160;</font><font color="#0000ff">True</font><font color="#808080">&#160;</font><font color="#0000ff">Then</font><font color="#808080">             <br />&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160; </font><font color="#0000ff">Dim</font><font color="#808080">&#160;</font><font color="#000000">FileNameCollection</font><font color="#808080">&#160;</font><font color="#0000ff">As</font><font color="#808080">&#160;</font><font color="#000000">Collections.Specialized.StringCollection</font><font color="#808080">&#160;</font><font color="#0000ff">=</font><font color="#808080">&#160;</font><font color="#000000">_</font><font color="#808080">             <br />&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160; </font><font color="#000000">My.Computer.Clipboard.GetFileDropList()</font><font color="#808080">             <br />&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160; </font><font color="#0000ff">For</font><font color="#808080">&#160;</font><font color="#0000ff">Each</font><font color="#808080">&#160;</font><font color="#000000">FileName</font><font color="#808080">&#160;</font><font color="#0000ff">As</font><font color="#808080">&#160;</font><font color="#0000ff">String</font><font color="#808080">&#160;</font><font color="#0000ff">In</font><font color="#808080">&#160;</font><font color="#000000">FileNameCollection</font><font color="#808080">             </p>
<p>&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160; </font><font color="#000000">TextBox1.AppendText(FileName</font><font color="#808080">&#160;</font><font color="#000000">&amp;</font><font color="#808080">&#160;</font><font color="#000000">vbNewLine)</font><font color="#808080">             <br />&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160; </font><font color="#0000ff">Next</font><font color="#808080">             </p>
<p>&#160;&#160;&#160;&#160;&#160;&#160;&#160; </font><font color="#0000ff">End</font><font color="#808080">&#160;</font><font color="#0000ff">If</font> </div>
</td>
</tr>
</tbody>
</table>
<p>هكذا نكون قد تمكنا من الحصول على قائمة بأسماء الملفات ، والآن نرغب في الحصول على الاجراء الذي أدى الى وجود هذه الملفات في الحافظة ، هل هو نسخ Copy أم نقل Move ؟</p>
<p>للحصول على نوع الاجراء Drop Effect Type، سنقوم بعمل كائن من النوع Object ونسند له القيمة:</p>
<table cellspacing="0" cellpadding="2" width="500" border="1">
<tbody>
<tr>
<td dir="ltr" valign="top" width="500">
<div class="code"><font color="#000000">My.Computer.Clipboard.GetData(</font><font color="#808080">&quot;Preferred DropEffect&quot;</font><font color="#000000">)</font><font color="#808080">&#160;</font> </div>
</td>
</tr>
</tbody>
</table>
<p>، نقوم بعدها بقراءه اول اربع بايتات الى مصفوفة ، يمثل الحرف الأول منها نوع الاجراء ، وهو المهم هنا !</p>
<p>السطور التالية توضح ذلك :</p>
</p>
<table cellspacing="0" cellpadding="2" width="500" border="1">
<tbody>
<tr>
<td dir="ltr" valign="top" width="500">
<div class="code"><font color="#808080">&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160; </font><font color="#0000ff">Dim</font><font color="#808080">&#160;</font><font color="#000000">DropEffectData(</font><font color="#800000">3</font><font color="#000000">)</font><font color="#808080">&#160;</font><font color="#0000ff">As</font><font color="#808080">&#160;</font><font color="#0000ff">Byte</font><font color="#808080">             <br />&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160; </font><font color="#0000ff">Dim</font><font color="#808080">&#160;</font><font color="#000000">DropEffectCheck</font><font color="#808080">&#160;</font><font color="#0000ff">As</font><font color="#808080">&#160;</font><font color="#0000ff">Object</font><font color="#808080">&#160;</font><font color="#0000ff">=</font><font color="#808080">&#160;</font><font color="#000000">_</font><font color="#808080">             <br />&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160; </font><font color="#000000">My.Computer.Clipboard.GetData(</font><font color="#808080">&quot;Preferred DropEffect&quot;</font><font color="#000000">)</font><font color="#808080">             <br />&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160; </font><font color="#000000">DropEffectCheck.Read(DropEffectData,</font><font color="#808080">&#160;</font><font color="#800000">0</font><font color="#000000">,</font><font color="#808080">&#160;</font><font color="#000000">DropEffectData.Length)</font> </div>
</td>
</tr>
</tbody>
</table>
<p>والآن اصبحنا جاهزين تماما للقيام بالمهمه الكاملة ، لذلك قمت بوضع مثال بسيط هذا هو الكود الخاص به :</p>
<table cellspacing="0" cellpadding="2" width="500" border="1">
<tbody>
<tr>
<td dir="ltr" valign="top" width="500">
<div class="code"><font color="#006400">&#8216;*&gt;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;-             <br /></font><font color="#808080">&#160;&#160;&#160;&#160;&#160;&#160;&#160; </font><font color="#006400">&#8216;*&gt;Handle Droplist             <br /></font><font color="#808080">&#160;&#160;&#160;&#160;&#160;&#160;&#160; </font><font color="#006400">&#8216;*&gt;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;-             <br /></font><font color="#808080">&#160;&#160;&#160;&#160;&#160;&#160;&#160; </font><font color="#0000ff">If</font><font color="#808080">&#160;</font><font color="#000000">My.Computer.Clipboard.ContainsFileDropList()</font><font color="#808080">&#160;</font><font color="#0000ff">Then</font><font color="#808080">             </p>
<p>&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160; </font><font color="#006400">&#8216;*&gt;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;-             <br /></font><font color="#808080">&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160; </font><font color="#006400">&#8216;*&gt;Get DropEffect Type             <br /></font><font color="#808080">&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160; </font><font color="#006400">&#8216;*&gt;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;-             <br /></font><font color="#808080">&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160; </font><font color="#0000ff">Dim</font><font color="#808080">&#160;</font><font color="#000000">DropEffectData(</font><font color="#800000">3</font><font color="#000000">)</font><font color="#808080">&#160;</font><font color="#0000ff">As</font><font color="#808080">&#160;</font><font color="#0000ff">Byte</font><font color="#808080">             <br />&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160; </font><font color="#0000ff">Dim</font><font color="#808080">&#160;</font><font color="#000000">DropEffectCheck</font><font color="#808080">&#160;</font><font color="#0000ff">As</font><font color="#808080">&#160;</font><font color="#0000ff">Object</font><font color="#808080">&#160;</font><font color="#0000ff">=</font><font color="#808080">&#160;</font><font color="#000000">_</font><font color="#808080">             <br />&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160; </font><font color="#000000">My.Computer.Clipboard.GetData(</font><font color="#808080">&quot;Preferred DropEffect&quot;</font><font color="#000000">)</font><font color="#808080">             <br />&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160; </font><font color="#000000">DropEffectCheck.Read(DropEffectData,</font><font color="#808080">&#160;</font><font color="#800000">0</font><font color="#000000">,</font><font color="#808080">&#160;</font><font color="#000000">DropEffectData.Length)</font><font color="#808080">             </p>
<p>&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160; </font><font color="#0000ff">Dim</font><font color="#808080">&#160;</font><font color="#000000">DropEff</font><font color="#808080">&#160;</font><font color="#0000ff">As</font><font color="#808080">&#160;</font><font color="#000000">DragDropEffects</font><font color="#808080">             <br />&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160; </font><font color="#0000ff">Dim</font><font color="#808080">&#160;</font><font color="#000000">DropEffType</font><font color="#808080">&#160;</font><font color="#0000ff">As</font><font color="#808080">&#160;</font><font color="#0000ff">String</font><font color="#808080">             </p>
<p>&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160; </font><font color="#0000ff">Select</font><font color="#808080">&#160;</font><font color="#0000ff">Case</font><font color="#808080">&#160;</font><font color="#000000">DropEffectData(</font><font color="#800000">0</font><font color="#000000">)</font><font color="#808080">             <br />&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160; </font><font color="#0000ff">Case</font><font color="#808080">&#160;</font><font color="#800000">2</font><font color="#808080">             <br />&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160; </font><font color="#000000">DropEff</font><font color="#808080">&#160;</font><font color="#0000ff">=</font><font color="#808080">&#160;</font><font color="#000000">DragDropEffects.Move</font><font color="#808080">             <br />&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160; </font><font color="#000000">DropEffType</font><font color="#808080">&#160;</font><font color="#0000ff">=</font><font color="#808080"> &quot;Move&quot;             <br />&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160; </font><font color="#0000ff">Case</font><font color="#808080">&#160;</font><font color="#800000">5</font><font color="#808080">             <br />&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160; </font><font color="#000000">DropEff</font><font color="#808080">&#160;</font><font color="#0000ff">=</font><font color="#808080">&#160;</font><font color="#000000">DragDropEffects.Copy</font><font color="#808080">             <br />&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160; </font><font color="#000000">DropEffType</font><font color="#808080">&#160;</font><font color="#0000ff">=</font><font color="#808080"> &quot;Copy&quot;             <br />&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160; </font><font color="#0000ff">Case</font><font color="#808080">&#160;</font><font color="#0000ff">Else</font><font color="#808080">             <br />&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160; </font><font color="#000000">DropEffType</font><font color="#808080">&#160;</font><font color="#0000ff">=</font><font color="#808080"> &quot;???&quot;             <br />&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160; </font><font color="#0000ff">End</font><font color="#808080">&#160;</font><font color="#0000ff">Select</font><font color="#808080">             </p>
<p>&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160; </font><font color="#000000">DropEffect.Text</font><font color="#808080">&#160;</font><font color="#0000ff">=</font><font color="#808080">&#160;</font><font color="#000000">DropEffType</font><font color="#808080">             </p>
<p>&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160; </font><font color="#006400">&#8216;*&gt;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;-             <br /></font><font color="#808080">&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160; </font><font color="#006400">&#8216;*&gt;Get File Names             <br /></font><font color="#808080">&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160; </font><font color="#006400">&#8216;*&gt;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;-             <br /></font><font color="#808080">&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160; </font><font color="#0000ff">Dim</font><font color="#808080">&#160;</font><font color="#000000">FileNameCollection</font><font color="#808080">&#160;</font><font color="#0000ff">As</font><font color="#808080">&#160;</font><font color="#000000">Collections.Specialized.StringCollection</font><font color="#808080">&#160;</font><font color="#0000ff">=</font><font color="#808080">&#160;</font><font color="#000000">_</font><font color="#808080">             <br />&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160; </font><font color="#000000">My.Computer.Clipboard.GetFileDropList()</font><font color="#808080">             <br />&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160; </font><font color="#0000ff">For</font><font color="#808080">&#160;</font><font color="#0000ff">Each</font><font color="#808080">&#160;</font><font color="#000000">FileName</font><font color="#808080">&#160;</font><font color="#0000ff">As</font><font color="#808080">&#160;</font><font color="#0000ff">String</font><font color="#808080">&#160;</font><font color="#0000ff">In</font><font color="#808080">&#160;</font><font color="#000000">FileNameCollection</font><font color="#808080">             </p>
<p>&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160; </font><font color="#000000">DataText.AppendText(FileName</font><font color="#808080">&#160;</font><font color="#000000">&amp;</font><font color="#808080">&#160;</font><font color="#000000">vbNewLine)</font><font color="#808080">             <br />&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160; </font><font color="#0000ff">Next</font><font color="#808080">             </p>
<p>&#160;&#160;&#160;&#160;&#160;&#160;&#160; </font><font color="#0000ff">End</font><font color="#808080">&#160;</font><font color="#0000ff">If</font> </div>
</td>
</tr>
</tbody>
</table>
<p>&#160;<img src="http://img150.imageshack.us/my.php?image=figxa4.gif" /></p>
Posted in Visual Basic .Net Tagged: clipboard, files, files drop list <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/alnabhani.wordpress.com/122/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/alnabhani.wordpress.com/122/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/alnabhani.wordpress.com/122/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/alnabhani.wordpress.com/122/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/alnabhani.wordpress.com/122/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/alnabhani.wordpress.com/122/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/alnabhani.wordpress.com/122/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/alnabhani.wordpress.com/122/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/alnabhani.wordpress.com/122/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/alnabhani.wordpress.com/122/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=alnabhani.wordpress.com&blog=454111&post=122&subd=alnabhani&ref=&feed=1" /></div>]]></content:encoded>
			<wfw:commentRss>http://alnabhani.wordpress.com/2009/02/01/%d9%85%d8%b1%d8%a7%d9%82%d8%a8%d8%a9-%d8%a7%d9%84%d9%85%d9%84%d9%81%d8%a7%d8%aa-%d8%a7%d9%84%d9%85%d9%88%d8%ac%d9%88%d8%af%d8%a9-%d9%81%d9%8a-%d8%a7%d9%84%d8%ad%d8%a7%d9%81%d8%b8%d8%a9-clipboard/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
	
		<media:content url="" medium="image">
			<media:title type="html">alnabhani</media:title>
		</media:content>

		<media:content url="http://img150.imageshack.us/my.php?image=figxa4.gif" medium="image" />
	</item>
		<item>
		<title>كود لفتح صفحة انترنت</title>
		<link>http://alnabhani.wordpress.com/2008/09/12/%d9%83%d9%88%d8%af-%d9%84%d9%81%d8%aa%d8%ad-%d8%b5%d9%81%d8%ad%d8%a9-%d8%a7%d9%86%d8%aa%d8%b1%d9%86%d8%aa/</link>
		<comments>http://alnabhani.wordpress.com/2008/09/12/%d9%83%d9%88%d8%af-%d9%84%d9%81%d8%aa%d8%ad-%d8%b5%d9%81%d8%ad%d8%a9-%d8%a7%d9%86%d8%aa%d8%b1%d9%86%d8%aa/#comments</comments>
		<pubDate>Fri, 12 Sep 2008 12:50:15 +0000</pubDate>
		<dc:creator>alnabhani</dc:creator>
				<category><![CDATA[Visual Basic .Net]]></category>
		<category><![CDATA[code]]></category>
		<category><![CDATA[internet]]></category>

		<guid isPermaLink="false">http://alnabhani.wordpress.com/2008/09/12/%d9%83%d9%88%d8%af-%d9%84%d9%81%d8%aa%d8%ad-%d8%b5%d9%81%d8%ad%d8%a9-%d8%a7%d9%86%d8%aa%d8%b1%d9%86%d8%aa/</guid>
		<description><![CDATA[انتشرت عدة طرق مختلفة لفتح صفحات الانترنت ، فمنها ما يستخدم الدالة shell القديمة والتي ستظهر Command Prompot يظهر ويختفي ، ومنها ما يستخدم المكتبة البرمجية التابعة لـ Internet Explorer ، ولكن وجدت كود ثالث يستخدم طريقة الـ Process كما هنا :
&#160;




&#160;&#160;&#160;&#160;&#160;&#160;&#160; Process.Start(&#34;IExplore.exe&#34;, &#34;www.google.com&#34;) 




       <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=alnabhani.wordpress.com&blog=454111&post=99&subd=alnabhani&ref=&feed=1" />]]></description>
			<content:encoded><![CDATA[<div class='snap_preview'><br /><p>انتشرت عدة طرق مختلفة لفتح صفحات الانترنت ، فمنها ما يستخدم الدالة shell القديمة والتي ستظهر Command Prompot يظهر ويختفي ، ومنها ما يستخدم المكتبة البرمجية التابعة لـ Internet Explorer ، ولكن وجدت كود ثالث يستخدم طريقة الـ Process كما هنا :</p>
<p>&#160;</p>
<table cellspacing="0" cellpadding="2" width="700" border="1">
<tbody>
<tr>
<td dir="ltr" valign="top" width="700">
<div class="code"><font color="#808080">&#160;&#160;&#160;&#160;&#160;&#160;&#160; </font><font color="#000000">Process.Start(</font><font color="#808080">&quot;IExplore.exe&quot;</font><font color="#000000">,</font><font color="#808080"> &quot;www.google.com&quot;</font><font color="#000000">)</font> </div>
</td>
</tr>
</tbody>
</table>
<img alt="" border="0" src="http://feeds.wordpress.com/1.0/categories/alnabhani.wordpress.com/99/" /> <img alt="" border="0" src="http://feeds.wordpress.com/1.0/tags/alnabhani.wordpress.com/99/" /> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/alnabhani.wordpress.com/99/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/alnabhani.wordpress.com/99/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/alnabhani.wordpress.com/99/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/alnabhani.wordpress.com/99/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/alnabhani.wordpress.com/99/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/alnabhani.wordpress.com/99/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/alnabhani.wordpress.com/99/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/alnabhani.wordpress.com/99/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/alnabhani.wordpress.com/99/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/alnabhani.wordpress.com/99/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=alnabhani.wordpress.com&blog=454111&post=99&subd=alnabhani&ref=&feed=1" /></div>]]></content:encoded>
			<wfw:commentRss>http://alnabhani.wordpress.com/2008/09/12/%d9%83%d9%88%d8%af-%d9%84%d9%81%d8%aa%d8%ad-%d8%b5%d9%81%d8%ad%d8%a9-%d8%a7%d9%86%d8%aa%d8%b1%d9%86%d8%aa/feed/</wfw:commentRss>
		<slash:comments>2</slash:comments>
	
		<media:content url="" medium="image">
			<media:title type="html">alnabhani</media:title>
		</media:content>
	</item>
		<item>
		<title>كسر احتكار فضاء الاسماء My بلغة #C</title>
		<link>http://alnabhani.wordpress.com/2008/08/31/my_extension_csharp/</link>
		<comments>http://alnabhani.wordpress.com/2008/08/31/my_extension_csharp/#comments</comments>
		<pubDate>Sat, 30 Aug 2008 20:05:57 +0000</pubDate>
		<dc:creator>alnabhani</dc:creator>
				<category><![CDATA[C#]]></category>
		<category><![CDATA[Visual Basic .Net]]></category>
		<category><![CDATA[تقنية net.]]></category>
		<category><![CDATA[.net]]></category>
		<category><![CDATA[my namespace]]></category>
		<category><![CDATA[vb.net]]></category>

		<guid isPermaLink="false">http://alnabhani.wordpress.com/2008/08/31/my_extension_csharp/</guid>
		<description><![CDATA[قد يبدو هذا العنوان مدويا لبعض المبرمجين ، ولكنه حقيقة فعلاً ! في هذا المقال نتناول كيفية استخدام عناصر فضاء الاسماء My داخل لغة C# مباشرة !
 
تكمن الفكرة في ان عناصر فضاء الاسماء My هي موجودة داخل فضاء الاسماء Microsoft.VisualBasic ، فيجب علينا في البداية استيراد المجمع Microsoft.VisualBasic.DLL ، ثم استيراد فضاء الاسماء Microsoft.VisualBasic.Devices [...]<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=alnabhani.wordpress.com&blog=454111&post=91&subd=alnabhani&ref=&feed=1" />]]></description>
			<content:encoded><![CDATA[<div class='snap_preview'><br /><p>قد يبدو هذا العنوان مدويا لبعض المبرمجين ، ولكنه حقيقة فعلاً ! في هذا المقال نتناول كيفية استخدام عناصر فضاء الاسماء My داخل لغة C# مباشرة !</p>
<p> <span id="more-91"></span>
<p>تكمن الفكرة في ان عناصر فضاء الاسماء My هي موجودة داخل فضاء الاسماء Microsoft.VisualBasic ، فيجب علينا في البداية استيراد المجمع Microsoft.VisualBasic.DLL ، ثم استيراد فضاء الاسماء Microsoft.VisualBasic.Devices في اول ملف البرمجة الذي تود استخدام عناصر فضاء الاسماء My فيه ، الكود التالي مثلا يقوم بتشغيل احد الاصوات الموجودة في النظام بكل سهوله :</p>
</p>
<table cellspacing="0" cellpadding="2" width="700" border="1">
<tbody>
<tr>
<td dir="ltr" valign="top" width="700">
<div class="code"><font color="#0000ff">using</font><font color="#808080">&#160;</font><font color="#000000">System</font><font color="#0000ff">;</font><font color="#808080">              <br /></font><font color="#0000ff">using</font><font color="#808080">&#160;</font><font color="#000000">System.Collections.Generic</font><font color="#0000ff">;</font><font color="#808080">              <br /></font><font color="#0000ff">using</font><font color="#808080">&#160;</font><font color="#000000">System.Linq</font><font color="#0000ff">;</font><font color="#808080">              <br /></font><font color="#0000ff">using</font><font color="#808080">&#160;</font><font color="#000000">System.Text</font><font color="#0000ff">;</font><font color="#808080">              <br /></font><font color="#0000ff">using</font><font color="#808080">&#160;</font><font color="#000000">Microsoft.VisualBasic.Devices</font><font color="#0000ff">;</font><font color="#808080">              </p>
<p></font><font color="#0000ff">namespace</font><font color="#808080">&#160;</font><font color="#000000">ConsoleApplication1</font><font color="#808080">              <br /></font><font color="#000000">{</font><font color="#808080">              <br />&#160;&#160;&#160; </font><font color="#0000ff">class</font><font color="#808080">&#160;</font><font color="#000000">Program</font><font color="#808080">              <br />&#160;&#160;&#160; </font><font color="#000000">{</font><font color="#808080">              <br />&#160;&#160;&#160;&#160;&#160;&#160;&#160; </font><font color="#0000ff">static</font><font color="#808080">&#160;</font><font color="#0000ff">void</font><font color="#808080">&#160;</font><font color="#000000">Main(</font><font color="#0000ff">string</font><font color="#000000">[]</font><font color="#808080">&#160;</font><font color="#000000">args)</font><font color="#808080">              <br />&#160;&#160;&#160;&#160;&#160;&#160;&#160; </font><font color="#000000">{</font><font color="#808080">              <br />&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160; </font><font color="#000000">Audio</font><font color="#808080">&#160;</font><font color="#000000">myAudio</font><font color="#808080">&#160;</font><font color="#0000ff">=</font><font color="#808080">&#160;</font><font color="#0000ff">new</font><font color="#808080">&#160;</font><font color="#000000">Audio()</font><font color="#0000ff">;</font><font color="#808080">              <br />&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160; </font><font color="#000000">Clock</font><font color="#808080">&#160;</font><font color="#000000">myClock</font><font color="#808080">&#160;</font><font color="#0000ff">=</font><font color="#808080">&#160;</font><font color="#0000ff">new</font><font color="#808080">&#160;</font><font color="#000000">Clock()</font><font color="#0000ff">;</font><font color="#808080">              </p>
<p>&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160; </font><font color="#000000">myAudio.PlaySystemSound(System.Media.SystemSounds.Beep)</font><font color="#0000ff">;</font><font color="#808080">              </p>
<p>&#160;&#160;&#160;&#160;&#160;&#160;&#160; </font><font color="#000000">}</font><font color="#808080">              <br />&#160;&#160;&#160; </font><font color="#000000">}</font><font color="#808080">              <br /></font><font color="#000000">}</font> </div>
</td>
</tr>
</tbody>
</table>
<p>يمكنك عزيزي مبرمج C# استكشاف باقي عناصر فضاء الاسما Microsoft.VisualBasic.Devices بواسطة نافذة مستعرض الكائنات ObjectBrowser .</p>
<p>تحياتي</p>
<img alt="" border="0" src="http://feeds.wordpress.com/1.0/categories/alnabhani.wordpress.com/91/" /> <img alt="" border="0" src="http://feeds.wordpress.com/1.0/tags/alnabhani.wordpress.com/91/" /> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/alnabhani.wordpress.com/91/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/alnabhani.wordpress.com/91/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/alnabhani.wordpress.com/91/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/alnabhani.wordpress.com/91/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/alnabhani.wordpress.com/91/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/alnabhani.wordpress.com/91/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/alnabhani.wordpress.com/91/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/alnabhani.wordpress.com/91/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/alnabhani.wordpress.com/91/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/alnabhani.wordpress.com/91/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=alnabhani.wordpress.com&blog=454111&post=91&subd=alnabhani&ref=&feed=1" /></div>]]></content:encoded>
			<wfw:commentRss>http://alnabhani.wordpress.com/2008/08/31/my_extension_csharp/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
	
		<media:content url="" medium="image">
			<media:title type="html">alnabhani</media:title>
		</media:content>
	</item>
		<item>
		<title>معلومة : اضافة مجلد مخصص لمربع حوار OpenDialog وأمثاله</title>
		<link>http://alnabhani.wordpress.com/2008/08/23/add_cutomfolder_filedialog/</link>
		<comments>http://alnabhani.wordpress.com/2008/08/23/add_cutomfolder_filedialog/#comments</comments>
		<pubDate>Sat, 23 Aug 2008 10:35:26 +0000</pubDate>
		<dc:creator>alnabhani</dc:creator>
				<category><![CDATA[Visual Basic .Net]]></category>
		<category><![CDATA[vb.net]]></category>
		<category><![CDATA[vista]]></category>

		<guid isPermaLink="false">http://alnabhani.wordpress.com/2008/08/23/add_cutomfolder_filedialog/</guid>
		<description><![CDATA[يمكنك اضافة مجلد معين الى قائمة المجلدات التي تظهر على جانب مربع الحوار OpenDialog,Savedialog من خلال الـ Collection المسماه CustomPlaces . كل الفكرة تقوم على اضافة Custom Place جديد فقط ويتم ذلك بعدة طرق ، المثال التالي يمثل كيفية اضافة مجلد مخصص عن طريق ذكر مسارة الكامل :





&#160;
OpenFileDialog1.CustomPlaces.Add(&#8220;C:\dot net&#8221;)



الطريقة التالية تستخدم ما يعرف بالـ Known [...]<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=alnabhani.wordpress.com&blog=454111&post=78&subd=alnabhani&ref=&feed=1" />]]></description>
			<content:encoded><![CDATA[<div class='snap_preview'><br /><p>يمكنك اضافة مجلد معين الى قائمة المجلدات التي تظهر على جانب مربع الحوار OpenDialog,Savedialog من خلال الـ Collection المسماه CustomPlaces . كل الفكرة تقوم على اضافة Custom Place جديد فقط ويتم ذلك بعدة طرق ، المثال التالي يمثل كيفية اضافة مجلد مخصص عن طريق ذكر مسارة الكامل :
</p>
<table cellspacing="0" cellpadding="2" width="400" border="1">
<tbody>
<tr>
<td dir="ltr" valign="top" width="400">
<pre>&nbsp;</pre>
<p>OpenFileDialog1.CustomPlaces.Add(&#8220;C:\dot net&#8221;)</td>
</tr>
</tbody>
</table>
<p>الطريقة التالية تستخدم ما يعرف بالـ Known GUID لمناداة مجلد خاص بنظام التشغيل ويندوز فيستا وفي هذه الحالة هو مجلد Pictures الخاص بالمستخدم الحالي :</p>
<p dir="ltr">
<table cellspacing="0" cellpadding="2" width="400" border="1">
<tbody>
<tr>
<td valign="top" width="400">&#8216; Add Pictures custom place using GUID. openFileDialog1.CustomPlaces.Add(&#8220;33E28130-4E1E-4676-835A-98395C3BC3BB&#8221;) </td>
</tr>
</tbody>
</table>
<table cellspacing="0" cellpadding="2" width="400" border="1">
<tbody>
<tr></tr>
</tbody>
</table>
</p>
<p>&nbsp;</p>
<p>وللحصول على قائمة بالـ Known GUID&#8217;s يمكنك زيارة الرابط التالي :<a href="http://msdn.microsoft.com/en-us/library/bb882665.aspx">هنا</a>&nbsp;
<p>يوجد طريقة ثالثة ايضا كالتالية :</p>
<table cellspacing="0" cellpadding="2" width="400" border="1">
<tbody>
<tr>
<td dir="ltr" valign="top" width="400">&#8216; Add Links custom place using GUID openFileDialog1.CustomPlaces.Add(New FileDialogCustomPlace _ (New Guid(&#8220;BFB9D5E0-C6A9-404C-B2B2-AE6DB6AF4968&#8243;))) </td>
</tr>
</tbody>
</table>
<p>ملاحظة أخيرة ، هذه المقالة تنطبق على التطبيقات التي ستعمل تحت ويندوز فيستا فقط ، بانسبه لباقي انظمة التشغيل فلن يحدث أي تغيير يذكر في مظهر البرنامج .</p>
<img alt="" border="0" src="http://feeds.wordpress.com/1.0/categories/alnabhani.wordpress.com/78/" /> <img alt="" border="0" src="http://feeds.wordpress.com/1.0/tags/alnabhani.wordpress.com/78/" /> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/alnabhani.wordpress.com/78/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/alnabhani.wordpress.com/78/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/alnabhani.wordpress.com/78/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/alnabhani.wordpress.com/78/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/alnabhani.wordpress.com/78/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/alnabhani.wordpress.com/78/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/alnabhani.wordpress.com/78/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/alnabhani.wordpress.com/78/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/alnabhani.wordpress.com/78/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/alnabhani.wordpress.com/78/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=alnabhani.wordpress.com&blog=454111&post=78&subd=alnabhani&ref=&feed=1" /></div>]]></content:encoded>
			<wfw:commentRss>http://alnabhani.wordpress.com/2008/08/23/add_cutomfolder_filedialog/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
	
		<media:content url="" medium="image">
			<media:title type="html">alnabhani</media:title>
		</media:content>
	</item>
		<item>
		<title>العناصر المشتركة shared Members في visual basic .net :</title>
		<link>http://alnabhani.wordpress.com/2008/08/18/%d8%a7%d9%84%d8%b9%d9%86%d8%a7%d8%b5%d8%b1-%d8%a7%d9%84%d9%85%d8%b4%d8%aa%d8%b1%d9%83%d8%a9-shared-members-%d9%81%d9%8a-visual-basic-net/</link>
		<comments>http://alnabhani.wordpress.com/2008/08/18/%d8%a7%d9%84%d8%b9%d9%86%d8%a7%d8%b5%d8%b1-%d8%a7%d9%84%d9%85%d8%b4%d8%aa%d8%b1%d9%83%d8%a9-shared-members-%d9%81%d9%8a-visual-basic-net/#comments</comments>
		<pubDate>Mon, 18 Aug 2008 18:58:00 +0000</pubDate>
		<dc:creator>alnabhani</dc:creator>
				<category><![CDATA[Visual Basic .Net]]></category>
		<category><![CDATA[bet]]></category>
		<category><![CDATA[keyword]]></category>
		<category><![CDATA[oop]]></category>
		<category><![CDATA[shared members]]></category>
		<category><![CDATA[vb]]></category>

		<guid isPermaLink="false">http://alnabhani.wordpress.com/2008/08/18/%d8%a7%d9%84%d8%b9%d9%86%d8%a7%d8%b5%d8%b1-%d8%a7%d9%84%d9%85%d8%b4%d8%aa%d8%b1%d9%83%d8%a9-shared-members-%d9%81%d9%8a-visual-basic-net/</guid>
		<description><![CDATA[العنصر الذي يصرح عنه بانه مشترك Shared في Visual Basic .Net ( او static في لغات الـ C ) يعتبر عنصرا مشتركا لكل الفئات التي تنشأ من نفس الفئة . كلام مكرر وغير مفهوم وكل الكتاب يكتبونه نفسه عند شرحهم وتناولهم لهذا الموضوع وتعت منه كثيرا وأعتقد انك انت عزيزي القارئ بدأت تكره كلمة Shared [...]<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=alnabhani.wordpress.com&blog=454111&post=66&subd=alnabhani&ref=&feed=1" />]]></description>
			<content:encoded><![CDATA[<div class='snap_preview'><br /><p>العنصر الذي يصرح عنه بانه مشترك Shared في Visual Basic .Net ( او static في لغات الـ C ) يعتبر عنصرا مشتركا لكل الفئات التي تنشأ من نفس الفئة . كلام مكرر وغير مفهوم وكل الكتاب يكتبونه نفسه عند شرحهم وتناولهم لهذا الموضوع وتعت منه كثيرا وأعتقد انك انت عزيزي القارئ بدأت تكره كلمة Shared عندما تراها في أي كود لنفس السبب !! اليس هذا ما تريد قوله ؟ طيب لندخل معا على الموضوع من زاوية اخرى&#160; : </p>
<p> <span id="more-66"></span>
<p>افترض أن لدينا فئة إسمها Person تحتوي على الحقل Field المسمى ParentClassName ، ويوجد لدينا ثلاث كائنات منشأه من هذه الفئة الاول اسمه Ahmed والثاني Mohammed فإن قيمة الحقل ParentClassName يختلف في Ahmed عنه عند Mohammed ، لكن لو تم تعريف الحقل ParentClassName على انه Shared فسيكون هو نفسه دوما ، فتغيير قيمته عند Ahmed سيغير قيمته عن Mohammed مباشرة ! </p>
<p>هذا بالنسبه للحقول والخصائص Properties ، لكن ماذا عن الطرق Methods والتي تشمل الإجراءات Subs والدوال Functions ؟ </p>
<p>في هذه الحالة فإن الطريقة المعرفة على انها shared يمكن الوصول إليها مباشرة دون الحاجة الى انشاء كائن جديد من الفئه اولا&#160; ثم استدعاء الطريقة منه ، مثلا ، الطريقة SetEnvironmentVariable التابعة للفئه System.Environment هي طريقة مشتركه ، فلاستخدامها لسنا بحاجه لأن نقوم بغنشاء كائن جديد من الفئة Environment ثم استدعاء تلك الطريقة ولكن كتابة اسم الفئة الأساسية مباشرة SetEnvironmentVariable&#160; System.Environment. . </p>
<p>بالنسبة للفئة system.Environment فهي من اكثر الفئات التي تستخدم الاعضاء المشتركة Shared Members التي واجهتها في لغات الدوت نت ، هناك العديد من الفئات الاخرى التي تنتهج نفس النهج ، وعادة ما تكون هذه الفئات مصممه لتعطينا معلومات للقراءه فقط او معلومات عامة لا تتغير مهما ، وفي الحقيقة هل تتوقع ان تجد اكثر من MachineName لنفس الجهاز ؟ طبعا لا </p>
<img alt="" border="0" src="http://feeds.wordpress.com/1.0/categories/alnabhani.wordpress.com/66/" /> <img alt="" border="0" src="http://feeds.wordpress.com/1.0/tags/alnabhani.wordpress.com/66/" /> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/alnabhani.wordpress.com/66/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/alnabhani.wordpress.com/66/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/alnabhani.wordpress.com/66/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/alnabhani.wordpress.com/66/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/alnabhani.wordpress.com/66/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/alnabhani.wordpress.com/66/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/alnabhani.wordpress.com/66/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/alnabhani.wordpress.com/66/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/alnabhani.wordpress.com/66/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/alnabhani.wordpress.com/66/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=alnabhani.wordpress.com&blog=454111&post=66&subd=alnabhani&ref=&feed=1" /></div>]]></content:encoded>
			<wfw:commentRss>http://alnabhani.wordpress.com/2008/08/18/%d8%a7%d9%84%d8%b9%d9%86%d8%a7%d8%b5%d8%b1-%d8%a7%d9%84%d9%85%d8%b4%d8%aa%d8%b1%d9%83%d8%a9-shared-members-%d9%81%d9%8a-visual-basic-net/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
	
		<media:content url="" medium="image">
			<media:title type="html">alnabhani</media:title>
		</media:content>
	</item>
		<item>
		<title>التطبيقات متعددة الطبقات N-Tier Applications من منظور تقنيات .Net framework :</title>
		<link>http://alnabhani.wordpress.com/2008/08/12/n-tier-applications-dotnet/</link>
		<comments>http://alnabhani.wordpress.com/2008/08/12/n-tier-applications-dotnet/#comments</comments>
		<pubDate>Tue, 12 Aug 2008 10:34:15 +0000</pubDate>
		<dc:creator>alnabhani</dc:creator>
				<category><![CDATA[Visual Basic .Net]]></category>
		<category><![CDATA[تقنية net.]]></category>
		<category><![CDATA[.net]]></category>
		<category><![CDATA[layers]]></category>
		<category><![CDATA[multi layers]]></category>
		<category><![CDATA[n-tier]]></category>
		<category><![CDATA[software engineering]]></category>
		<category><![CDATA[تطبيق متعدد الطبقات]]></category>

		<guid isPermaLink="false">http://alnabhani.wordpress.com/?p=45</guid>
		<description><![CDATA[يعد تطوير التطبيقات على شكل طبقات من افضل الطرق المتبعة في هندسة البرمجيات ، فهنا يمكن تقسيم البرنامج على عدة طبقات Layers تتولى كل طبقة منها مهمه معينه ، وبالتالي يسهل التعديل على أي منها عند حدوث أي خطأ او نقص او اكتشاف اي ثغرة امنية او قصور . وأغلب التطبيقات التجارية &#8211; خصوصا قواعد [...]<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=alnabhani.wordpress.com&blog=454111&post=45&subd=alnabhani&ref=&feed=1" />]]></description>
			<content:encoded><![CDATA[<div class='snap_preview'><br /><p dir="rtl">يعد تطوير التطبيقات على شكل طبقات من افضل الطرق المتبعة في هندسة البرمجيات ، فهنا يمكن تقسيم البرنامج على عدة طبقات Layers تتولى كل طبقة منها مهمه معينه ، وبالتالي يسهل التعديل على أي منها عند حدوث أي خطأ او نقص او اكتشاف اي ثغرة امنية او قصور . وأغلب التطبيقات التجارية &#8211; خصوصا قواعد البيانات &#8211; تعتمد هذه الطريقة ، لكن هذا لا يعني ان البرمجيات الصغيرة والمجانية بعيده عن التطبيق هاهنا .في هذا المقال المترجم ، نتطرق &#8211; بشكل نظري &#8211; الى كيفية بناء تطبيقات متعددة الطبقات من خلال تقنيات Microsoft .Net .</p>
<p dir="rtl"><span id="more-45"></span></p>
<p dir="rtl">تحتوي التطبيقات متعددة الطبقات على ثلاث طبقات رئيسية : طبقة العرض  Presentation Layer ، الطبقة الوسطى Middle Layer ، طبقة البيانات DataLayer . ان فصل هذه الطبقات عن بعضها بالطريقة الصحيحة والسلمية يضمن لك الاستفادة من ميزات أسلوب بناء التطبيقات على شكل طبقات ، وافضل طريقة تفصل فيها بين هذه الطبقات بشكل كامل هو ان تكون كل طبقة موجودة في مشروع Project منفصل تجتمع كلها في حل واحد Solution ، وبهذا تصبح كل طبقة منفصلة تماما عن الأخريات ، فقد تكون طبقة العرض Presentation Layer من نوع Windows Forms ، والطبقة الوسطى على هيئة Class Library ، بينما طبقة البيانات قد تكون حتى WCF Service او XML Web service ، وكما ذكرنا أعلاه ، فإن تعديل أي طبقة لن يؤثر على الاخريات بأي حال من الأحوال ، وصدور تقنية جديدة تحتاج الى تطبيقها في احد الطبقات لن يدفعك الى اعادة بناء التطبيق ككل بل الطبقة المعنية بذلك فقط!.</p>
<p dir="rtl"> </p>
<p dir="rtl">يساعدك Visual Studio على تطوير التطبيقات على شكل طبقات بعدة ادوات تتوفر فيه واكاد اجزم بان اغلبكم يعرفها :</p>
<ul>
<li>DataSet Designer : والذي نستغله في عمل مشروعين او طبقتين منفصلتين : طبقة كائنات البيانات Data Entities وطبقة الإتصال والتعامل المباشر مع مصادر البيانات Data Access Layers المتمثل في Data Adapters .</li>
<li>Object Relational Designer : (O/R) Designer : والذي يقوم بتوليد الـ DataContexts وفئات البيانات Data Classes على شكل فضاءات اسماء Namespaces منفصلة تماما ، هذا الفصل يعني انك تفصل طبقة الـ Data Entity عن طبقة Data Accessing .</li>
<li>LINQ to SQL : والذي يمكنك من جمع DataContexts من عدة طبقات معا .</li>
<li>مربع حوار Configure Data Syndication : والذي يمكنك من ضبط إعدادات التزامن بين البيانات الموجودة على الخادم server وتلك الموجودة في Local Database Cache ، هذا يساعدك كثيرا على فصل طبقة الـخادم Server عن طبقة الـعميل Client .</li>
</ul>
<p dir="rtl"> </p>
<p dir="rtl">وفيما يلي موجز عن كل طبقة وما يمكن ان تستخدمه فيها من تقنيات متاحة لك :</p>
<h1>طبقة العرض Presentation Layer:</h1>
<p dir="rtl">وهي تلك الطبقة التي يتعامل بها المستخدم مع البرنامج UserInterface ، وتحتوي ايضا في العادة على المنطق الخاص بالبرنامج  logic ، وفي العادة قد تحتوي طبقة العرض لديك على المكونات التالية :</p>
<ul>
<li>ربط البيانات بالأدوات : DataBinding : والتي تستخدم فيها الـ BindingSource والـ BindingNavigator .</li>
<li>ممثلات كائنات البيانات : كـ Linq to SQL لتستخدمها في طبقة العرض .</li>
<li>قاعدة البيانات المحلية : Local Databases : كـ Local Database Cache والتي تمكنك من مزامنة البيانات مع تلك الموجودة في السيرفر من خلال Microsoft Synchronization Services for ADO.NET .</li>
</ul>
<p dir="rtl">المخطط التالي يوضح طبقة العرض والتقنيات المتوفرة لاستخدامها فيها :</p>
<p dir="rtl"><img class="alignnone" src="http://img379.imageshack.us/img379/6177/prestiertj3.png" alt="" width="421" height="375" /></p>
<p dir="rtl">بقي ان اوضح ان طبقة العرض لا تصل الى طبقة البيانات مباشرة وانما تتصل بالطبقة الوسطى التي بدورها تتصل بطبقة البيانات ، وهنا قد تكون الطبقة الوسطى مشروع WCF او غيره .</p>
<p dir="rtl"> </p>
<h1>الطبقة الوسطى MiddleTier :</h1>
<p dir="rtl">وظيفة هذه الطبقة انها تلعب دور الوسيط بين طبقة البيانات DataLayer وطبقة العرض PresentationLayer .</p>
<p dir="rtl">تتكون الطبقة الوسطى في العادة من المكونات التالية :</p>
<ul>
<li>الـ BusinessLogic : والذي يكون في العادة DataValidation او التحقق من المدخلات والبيانات .</li>
<li>TableAdapters و Datasets .</li>
<li>كائنات تمثيل البيانات : كـ LINQ to SQL entity .</li>
<li>الخدمات العامة Common Services : كالصلاحيات والمأذونيات والتخصيص للمستخدم .</li>
</ul>
<p dir="rtl"> </p>
<p dir="rtl">الشكل التالي يقدم مخططا للتقنيات المتوافرة لاستخدامها في الطبقة الوسطى :</p>
<p dir="rtl"> <img class="alignnone" src="http://img225.imageshack.us/img225/4928/midtierjd9.png" alt="" width="449" height="313" /></p>
<p dir="rtl"> </p>
<p dir="rtl">وتتصل الطبقة الوسطى بطبقة البيانات عن طريق اتصال Data Connection والذي يكون متوفرا في العادة في مكون الاتصال بالبيانات Data Access Component .</p>
<h1>طبقة البيانات : Data Tier :</h1>
<p dir="rtl">وتكون هذه الطبقة موجودة عند مصدر بيانات البرنامج او مكان توافر قاعدة البيانات ، احيانا يكون ذلك خادم Server يحتوي على SQL Server عند الاتصال بقاعدة بيانات من النوع SQL Server ، واستخدام طبقة البيانات بهذه الطريقة يسهل عملية تصميم تطبيقات من نوع Server/Client حيث تكون هذه الطبقة هي المسؤولة عن الاتصال بالـ Server وارسال واستقبال البيانات منه واليه .</p>
<p dir="rtl">الشكل التالي يوضح التقنيات المستخدمة في طبقة البيانات :</p>
<p dir="rtl"> </p>
<p dir="rtl"> <img class="alignnone" src="http://img295.imageshack.us/img295/8560/datatierld8.png" alt="" width="418" height="134" /></p>
<p dir="rtl"> </p>
<p dir="rtl">كان هذا المقال مترجما من مكتبة MSDN سعيت من خلال هذا الامر الى توفير المزيد من المعلومات حول هذا الاسلوب الراقي والاحترافي في تصميم التطبيقات ، ولم اذكر الكثير من التفاصيل ولم ازد الا القليل حتى لا نجعل الامر معقدا .</p>
<img alt="" border="0" src="http://feeds.wordpress.com/1.0/categories/alnabhani.wordpress.com/45/" /> <img alt="" border="0" src="http://feeds.wordpress.com/1.0/tags/alnabhani.wordpress.com/45/" /> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/alnabhani.wordpress.com/45/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/alnabhani.wordpress.com/45/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/alnabhani.wordpress.com/45/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/alnabhani.wordpress.com/45/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/alnabhani.wordpress.com/45/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/alnabhani.wordpress.com/45/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/alnabhani.wordpress.com/45/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/alnabhani.wordpress.com/45/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/alnabhani.wordpress.com/45/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/alnabhani.wordpress.com/45/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=alnabhani.wordpress.com&blog=454111&post=45&subd=alnabhani&ref=&feed=1" /></div>]]></content:encoded>
			<wfw:commentRss>http://alnabhani.wordpress.com/2008/08/12/n-tier-applications-dotnet/feed/</wfw:commentRss>
		<slash:comments>2</slash:comments>
	
		<media:content url="" medium="image">
			<media:title type="html">alnabhani</media:title>
		</media:content>

		<media:content url="http://img379.imageshack.us/img379/6177/prestiertj3.png" medium="image" />

		<media:content url="http://img225.imageshack.us/img225/4928/midtierjd9.png" medium="image" />

		<media:content url="http://img295.imageshack.us/img295/8560/datatierld8.png" medium="image" />
	</item>
		<item>
		<title>التعامل مع الاخطاء في البرمجة الكائنية : الفئة ExecutionCondition مثالاً</title>
		<link>http://alnabhani.wordpress.com/2008/07/22/executioncondition/</link>
		<comments>http://alnabhani.wordpress.com/2008/07/22/executioncondition/#comments</comments>
		<pubDate>Tue, 22 Jul 2008 03:37:56 +0000</pubDate>
		<dc:creator>alnabhani</dc:creator>
				<category><![CDATA[Visual Basic .Net]]></category>
		<category><![CDATA[classes]]></category>
		<category><![CDATA[errors]]></category>
		<category><![CDATA[exception]]></category>
		<category><![CDATA[execution condition]]></category>
		<category><![CDATA[oop]]></category>
		<category><![CDATA[الاستثناءات]]></category>

		<guid isPermaLink="false">http://alnabhani.wordpress.com/?p=37</guid>
		<description><![CDATA[يعد اسلوب البرمجة الكانئية افضل اسلوب برمجي تطبقه في معظم اللغات الحديثة والقوية وخصوصا لغات الدوت نت سواء كانت VB.Net او C# ، وعندما تطبق هذا الاسلوب فمن الاكيد بانك ستقوم ببناء فئات Classes وستحتوي بداخلها على اعضاء Members كـ Properties,Function,Subs وغيرها ، ثم تستخدم هذه الفئات في أي جزء رئيسي من الرنامج بإنشاء كائن [...]<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=alnabhani.wordpress.com&blog=454111&post=37&subd=alnabhani&ref=&feed=1" />]]></description>
			<content:encoded><![CDATA[<div class='snap_preview'><br /><p dir="rtl">يعد اسلوب البرمجة الكانئية افضل اسلوب برمجي تطبقه في معظم اللغات الحديثة والقوية وخصوصا لغات الدوت نت سواء كانت VB.Net او C# ، وعندما تطبق هذا الاسلوب فمن الاكيد بانك ستقوم ببناء فئات Classes وستحتوي بداخلها على اعضاء Members كـ Properties,Function,Subs وغيرها ، ثم تستخدم هذه الفئات في أي جزء رئيسي من الرنامج بإنشاء كائن جديد منها ثم اسناد القيم والخصائص إليه من خلال المشيد Constructor في حالة وجوده او من خلال الخصائص القابلة للكتابة Writable Properties او لاشيء من هذا !</p>
<p dir="rtl">لاحقا وبعد ان تكتب الاكواد داخل الأعضاء الخاصة بفئتك التي انشاتها للتو واللحظة ، فإنك قد تتساءل حول عملية قنص الاستثناءات Exceptions ، فماذا لو حدث استثناء معين او خطاء وقت التنفيذ في الكود ؟ هذا ما سنناقشه هنا .</p>
<p dir="rtl"><span id="more-37"></span></p>
<p dir="rtl">لنفترض انك قد قمت بعمل فئة بالإسم MyData والتي تمثل بيانات شخصيه معينه يتم اسنادها لها ،كالخصائص التالية مثلا : FirstName,FamilyName,Age  ، بحيث صارت كالتالي :</p>
<p dir="rtl">
<table dir="rtl" border="1" cellspacing="0" cellpadding="0">
<tbody>
<tr>
<td width="568" valign="top">
<p dir="ltr">Public Class MyData</p>
<p dir="ltr">    Dim _FirstName As String</p>
<p dir="ltr">    Public Property FirstName() As String</p>
<p dir="ltr">        Get</p>
<p dir="ltr">            Return _FirstName</p>
<p dir="ltr">        End Get</p>
<p dir="ltr">        Set(ByVal value As String)</p>
<p dir="ltr">            _FirstName = value</p>
<p dir="ltr">        End Set</p>
<p dir="ltr">    End Property</p>
<p dir="ltr"> </p>
<p dir="ltr">    Dim _FamilyName As String</p>
<p dir="ltr">    Public Property FamilyName() As String</p>
<p dir="ltr">        Get</p>
<p dir="ltr">            Return _FamilyName</p>
<p dir="ltr">        End Get</p>
<p dir="ltr">        Set(ByVal value As String)</p>
<p dir="ltr">            _FamilyName = value</p>
<p dir="ltr">        End Set</p>
<p dir="ltr">    End Property</p>
<p dir="ltr"> </p>
<p dir="ltr">    Dim _Age As Byte</p>
<p dir="ltr">    Public Property Age()</p>
<p dir="ltr">        Get</p>
<p dir="ltr">            Return _Age</p>
<p dir="ltr">        End Get</p>
<p dir="ltr">        Set(ByVal value)</p>
<p dir="ltr">            _Age = value</p>
<p dir="ltr">        End Set</p>
<p dir="ltr">    End Property</p>
<p dir="ltr"> </p>
<p dir="ltr">End Class</p>
</td>
</tr>
</tbody>
</table>
<p dir="rtl"> ثم طلبت منك ان تضيف لهذه الفئة طريقة Method تقوم بكتابة البيانات الى ملف &#8211; وذلك بإضافتها الى بيانات اخرى موجودة سابقا- لتكتب الاسم الاول والعائلة والعمر ، ولنفترض &#8211; واقول نفترض- انك كتبت الكود التالي بالضبط ( بما فيه من اخطاء فادحة ! ) :</p>
<p dir="rtl">
<table dir="rtl" border="1" cellspacing="0" cellpadding="0">
<tbody>
<tr>
<td width="568" valign="top">
<p dir="ltr">    Public Sub WriteDataToFile(ByVal FileName As String)</p>
<p dir="ltr">        Dim FileContent As String</p>
<p dir="ltr">        FileContent = &#8220;الإسم الأول : &#8221; &amp; Me.FirstName &amp; &#8221; العائلة : &#8221; &amp; Me.FamilyName &amp; &#8221; العمر &#8221; &amp; Me.Age</p>
<p dir="ltr"> </p>
<p dir="ltr">        My.Computer.FileSystem.WriteAllText(FileName, FileContent, True)</p>
<p dir="ltr"> </p>
<p dir="ltr"> </p>
<p dir="rtl" align="right">    End Sub</p>
</td>
</tr>
</tbody>
</table>
<p dir="rtl"> </p>
<p dir="rtl">الآن لو قمنا بإنشاء كائن جديد من هذه الفئة واعطيناه قيما لخصائصه وطلبنا من الكائن ان يتكرم علينا بتنفيذ الطريقة WriteDataToFile واعطيناه الوسيط المناسب كالتالي :</p>
<p dir="rtl">
<table dir="rtl" border="1" cellspacing="0" cellpadding="0">
<tbody>
<tr>
<td width="568" valign="top">
<p dir="ltr">Module Module1</p>
<p dir="ltr"> </p>
<p dir="ltr">    Sub Main()</p>
<p dir="ltr"> </p>
<p dir="ltr">        Dim Mohammed As New MyData</p>
<p dir="ltr">        Mohammed.FirstName = &#8220;Mohammed&#8221;</p>
<p dir="ltr">        Mohammed.FamilyName = &#8220;AL-Nabhani&#8221;</p>
<p dir="ltr">        Mohammed.Age = 20</p>
<p dir="ltr"> </p>
<p dir="ltr">        Mohammed.WriteDataToFile(&#8220;C:\Users\Personals\Documents\MyData.txt&#8221;)</p>
<p dir="ltr"> </p>
<p dir="ltr">        Console.ReadLine()</p>
<p dir="ltr"> </p>
<p dir="ltr">    End Sub</p>
<p dir="ltr"> </p>
<p dir="ltr">End Module</p>
</td>
</tr>
</tbody>
</table>
<p dir="rtl"> </p>
<p dir="rtl">ثم قمنا بتجربة البرنامج ، لكن مهلا هناك استثناء وارد بنسبه كبيرة جدا وهو ان الملف MyData غير موجود ! قد تفكر بان عملية التحقق من وجود الملف اولا افضل وانا اتفق معك في ذلك تماما ، لكن ما هي سيناريوهات العملية القادمة ؟ اذا لم يجد الملف ماذا يفعل البرنامج ؟</p>
<p dir="rtl"> </p>
<p dir="rtl">في حالتي لا اريد انشاء ملف لانني اريد ان اضيف البيانات الى الملف MyData لا أن أققوم بإنشاءه في حالة عدم وجودة ، لذلك فإننا نرغب الآن بإعلام المستخدم بأن الملف غير موجود واجزم انك تتفق معي الان في ذلك ، لكن السؤال كيف سنخبر المستخدم بذلك ؟ ان كنت ستقول لنكتب سطرا مثل التالي في الطريقة المعنية :</p>
<p dir="rtl">
<table dir="rtl" border="1" cellspacing="0" cellpadding="0">
<tbody>
<tr>
<td width="568" valign="top">
<p dir="ltr">    Public Sub WriteDataToFile(ByVal FileName As String)</p>
<p dir="ltr">        Dim FileContent As String</p>
<p dir="ltr">        FileContent = &#8220;الإسم الأول : &#8221; &amp; Me.FirstName &amp; &#8221; العائلة : &#8221; &amp; Me.FamilyName &amp; &#8221; العمر &#8221; &amp; Me.Age</p>
<p dir="ltr"> </p>
<p dir="ltr">        If My.Computer.FileSystem.FileExists(FileName) = True Then</p>
<p dir="ltr">            My.Computer.FileSystem.WriteAllText(FileName, FileContent, True)</p>
<p dir="ltr">        Else</p>
<p dir="ltr">            Console.Write(&#8220;الملف غير موجود&#8221;)</p>
<p dir="ltr">        End If</p>
<p dir="ltr"> </p>
<p dir="ltr">    End Sub</p>
</td>
</tr>
</tbody>
</table>
<p dir="rtl"> </p>
<p dir="rtl">فسأقول لك ان الطريقة السابقة خاطئة تماما ، صحيح انها ستعطينا الناتج النهائي المطلوب كما قد تشتهيه ، ولكن في في اسلوب البرمجة الكائنيه ذلك خطأ ، فالمفترض ان الفئة التي انشاناها لا تعرض شيء على الشاشة بدون اذن الطريقة Main ، وافرض او اننا اردنا استخدام هذه الفئة في مشروع من نوع WIndowsApplication بدل ConsoleApplication فماذا ستفعل ؟ الادهى لو قمت بترجمه الفئة الى ملف Dll فكيف ستعرف نوع المشروع الحالي ؟ حتى لو عرفت من خلال الكود فهل يعجبك ان تكتب جملة شرطية للتأكد من نوع المشروع ثم اظهار رسالة الخطأ بالطريقة الخاصة بكل واحد ؟</p>
<p dir="rtl"> </p>
<p dir="rtl">اتمنى انك اقتنعت بذلك ، اما الحل فسيكون بتعديل الطريقة WriteDataToFile لتكون  دالة Function بدل Sub وجعلها تعود بقيمة معينه ، طيب فكر معي ، ما هو النوع Type الخاص بهذه الدالة function والتي ستعيده ؟ هل ستعيد Boolean لنعرف ان حدث خطأ ام لا ؟ ام تعيد String في كل مرة ام أي نوع ؟ طيب لنفكر في كل واحدة على حده :</p>
<p dir="rtl"> </p>
<ul>
<li>1- النوع Boolean : فكرة جيدة ، لجعل الدالة تعيد قيمة True ان تم تنفيذها كما يجب ، و False في الحالة المعاكسه ولكن يعيبها عدم اعادتها لرسالة الخطأ ، ففي حالة امكانية حدوث اكثر من خطأ واحد فهناك ستواجه مشكلة حول أي رسالة خطأ ستعرض او أي اجراء ستنفذ .</li>
<li>2- النوع String : طريقة جيدة نوعا ما ، لكن لو اردت كتابة دالة تعيد نوع معينا مثلا تقرأ ملفا معينا وتعيد الاسم الاول فكيف ستعرف ان ما اعادته هو الاسم الاول او رسالة الخطأ ؟</li>
</ul>
<p dir="rtl">لا تقل لي لنضع Field ( حقل ) عام على مستوى المشروع بمثابته متغير من النوع Boolean يعرف اذا حدث خطا ام لا فهذه الطريقة تنتهك OOP من كل النواحي !</p>
<p dir="rtl"> </p>
<p dir="rtl">طيب ما الحل اذا ؟</p>
<p dir="rtl">الحل يتم بعمل نوع جديد خاص بنا لمثل هذه الحالات ، وهو عمل فئة Class تحمل خاصية تخبرنا ان حدث خطا او لا ، وتعطينا ايضا نص رسالة الخطأ او حتى كائن الـ Error بأكمله او أي شيء من هذا القبيل &#8230; كما قد نطورها اكثر لتحمل قيمة ما تود ارجاعه كما في الحالة الثانية اعلاه ، وهو الحل الذي سأتبعه في هذا النطاق مع انه قد يوجد حلول افضل ولكن ذلك يعتمد على الحالات التي تواجهها في برامجك .</p>
<p dir="rtl"> </p>
<p dir="rtl">الفئة الجديدة والتي سنعول عليها معرفة حدوث خطأ وحمل قيمة ناتج عملياتنا اسميتها ExecutionCondition وستحمل الخصائص التالية :</p>
<ul>
<li>HasErrors : وهي خاصية للقراءة فقط ReadOnly ومن النوع Boolean</li>
<li>ErrorMessage : وهي خاصية للقراءة فقط ايضا ومن النوع Strign</li>
<li>Value : وهي خاصية اختيارية لك ، وهي من النوع Object .</li>
</ul>
<p dir="rtl"> </p>
<p dir="rtl">بالنسبة للطرق فقد وضعت اجرائين فقط :</p>
<ul>
<li>SetErrorMessage : وهو الذي نستخدمه في اعطاء الخاصية ErrorMessage قيمتها وبناءا عليه تتحدد قمية الخاصية HasErrors .</li>
<li>Reset : يعيد الكائن الى حالته الاساسية أي بدون خطأ مع عدم المساس بقيمة الكائن المتمثل في الخاصية Value .</li>
</ul>
<p dir="rtl"> </p>
<p dir="rtl">لن اقوم بشرح كل شيء في هذه الفئة ، فهي واضحة وضوح الشمس لكل من لديه اساسيات ولو بسيطة في OOP :</p>
<p dir="rtl">
<table dir="rtl" border="1" cellspacing="0" cellpadding="0">
<tbody>
<tr>
<td width="568" valign="top">
<p dir="ltr">&#8221;&#8217; &lt;summary&gt;</p>
<p dir="ltr">&#8221;&#8217; This class is used to return an object with value and error message when error occur</p>
<p dir="ltr">&#8221;&#8217; &lt;/summary&gt;</p>
<p dir="ltr">&#8221;&#8217; &lt;remarks&gt;&lt;/remarks&gt;</p>
<p dir="ltr">Public Class ExecutionCondition</p>
<p dir="ltr">#Region &#8220;Properties&#8221;</p>
<p dir="ltr">    Dim _HasErrors As Boolean</p>
<p dir="ltr">    &#8221;&#8217; &lt;summary&gt;</p>
<p dir="ltr">    &#8221;&#8217; Determines if the assosiated process has an errors while executing it</p>
<p dir="ltr">    &#8221;&#8217; &lt;/summary&gt;</p>
<p dir="ltr">    &#8221;&#8217; &lt;value&gt;&lt;/value&gt;</p>
<p dir="ltr">    &#8221;&#8217; &lt;returns&gt;&lt;/returns&gt;</p>
<p dir="ltr">    &#8221;&#8217; &lt;remarks&gt;&lt;/remarks&gt;</p>
<p dir="ltr">    Public ReadOnly Property HasErrors() As Boolean</p>
<p dir="ltr">        Get</p>
<p dir="ltr">            If Me._HasErrors = True Then Me._ErrorMessage = &#8220;&#8221; </p>
<p dir="ltr">            Return _HasErrors</p>
<p dir="ltr">        End Get</p>
<p dir="ltr">    End Property</p>
<p dir="ltr"> </p>
<p dir="ltr">    Dim _ErrorMessage As String</p>
<p dir="ltr">    &#8221;&#8217; &lt;summary&gt;</p>
<p dir="ltr">    &#8221;&#8217; Gets the error message if the assisiated process has an erors while executing</p>
<p dir="ltr">    &#8221;&#8217; &lt;/summary&gt;</p>
<p dir="ltr">    &#8221;&#8217; &lt;value&gt;&lt;/value&gt;</p>
<p dir="ltr">    &#8221;&#8217; &lt;returns&gt;&lt;/returns&gt;</p>
<p dir="ltr">    &#8221;&#8217; &lt;remarks&gt;&lt;/remarks&gt;</p>
<p dir="ltr">    Public ReadOnly Property ErrorMessage() As String</p>
<p dir="ltr">        Get</p>
<p dir="ltr">            Return _ErrorMessage</p>
<p dir="ltr">        End Get</p>
<p dir="ltr"> </p>
<p dir="ltr">    End Property</p>
<p dir="ltr"> </p>
<p dir="ltr">    Dim _Value As Object</p>
<p dir="ltr">    &#8221;&#8217; &lt;summary&gt;</p>
<p dir="ltr">    &#8221;&#8217; Represents the value of the ibject, it could be any type .</p>
<p dir="ltr">    &#8221;&#8217; &lt;/summary&gt;</p>
<p dir="ltr">    &#8221;&#8217; &lt;value&gt;&lt;/value&gt;</p>
<p dir="ltr">    &#8221;&#8217; &lt;returns&gt;&lt;/returns&gt;</p>
<p dir="ltr">    &#8221;&#8217; &lt;remarks&gt;&lt;/remarks&gt;</p>
<p dir="ltr">    Public Property Value() As Object</p>
<p dir="ltr">        Get</p>
<p dir="ltr">            Return _Value</p>
<p dir="ltr">        End Get</p>
<p dir="ltr">        Set(ByVal value As Object)</p>
<p dir="ltr">            _Value = value</p>
<p dir="ltr">        End Set</p>
<p dir="ltr">    End Property</p>
<p dir="ltr">#End Region</p>
<p dir="ltr"> </p>
<p dir="ltr">#Region &#8220;Methods&#8221;</p>
<p dir="ltr"> </p>
<p dir="ltr">    Public Sub New()</p>
<p dir="ltr"> </p>
<p dir="ltr">    End Sub</p>
<p dir="ltr">    &#8221;&#8217; &lt;summary&gt;</p>
<p dir="ltr">    &#8221;&#8217; Sets the Error Message</p>
<p dir="ltr">    &#8221;&#8217; &lt;/summary&gt;</p>
<p dir="ltr">    &#8221;&#8217; &lt;param name=&#8221;Message&#8221;&gt;&#8221;the message of the error that will be presented in Error Message property&lt;/param&gt;</p>
<p dir="ltr">    &#8221;&#8217; &lt;remarks&gt;&lt;/remarks&gt;</p>
<p dir="ltr">    Public Sub SetErrorMessage(ByVal Message As String)</p>
<p dir="ltr">        _ErrorMessage = Message</p>
<p dir="ltr">        _HasErrors = True</p>
<p dir="ltr">    End Sub</p>
<p dir="ltr">    &#8221;&#8217; &lt;summary&gt;</p>
<p dir="ltr">    &#8221;&#8217; resets the object so no errors are contained</p>
<p dir="ltr">    &#8221;&#8217; &lt;/summary&gt;</p>
<p dir="ltr">    &#8221;&#8217; &lt;remarks&gt;&lt;/remarks&gt;</p>
<p dir="ltr">    Public Sub Reset()</p>
<p dir="ltr">        Me._HasErrors = False</p>
<p dir="ltr"> </p>
<p dir="ltr">    End Sub</p>
<p dir="ltr">#End Region</p>
<p dir="ltr">End Class</p>
</td>
</tr>
</tbody>
</table>
<p dir="rtl"> </p>
<p dir="rtl">الآن لنقم بعمل مثال عملي جديد لنجرب استخدام هذه الفئة ، اما بخصوص مثالنا السابق والفئة MyData فاعتبره تمرينا لك لحل مشكلتنا الأساسية !</p>
<p dir="rtl"> </p>
<p dir="rtl">في الوحدة النمطية Module1 التي تحتوي على الطريقة Main &#8211; الجزء الاساسي من البرنامج بطبيعة الحال &#8211; فقد قمت باضافة الدالة التالية فيها :</p>
<p dir="rtl">
<table dir="rtl" border="1" cellspacing="0" cellpadding="0">
<tbody>
<tr>
<td width="568" valign="top">
<p dir="ltr">    Function WriteOnTheScreen() As ExecutionCondition</p>
<p dir="ltr">        Dim mExCn As New ExecutionCondition</p>
<p dir="ltr"> </p>
<p dir="ltr">        Try</p>
<p dir="ltr">            Console.WriteLine(5 / 1)</p>
<p dir="ltr">            Console.ReadLine()</p>
<p dir="ltr"> </p>
<p dir="ltr">            mExCn.Reset()</p>
<p dir="ltr"> </p>
<p dir="ltr">        Catch ex As Exception</p>
<p dir="ltr">            mExCn.SetErrorMessage(ex.Message)</p>
<p dir="ltr">        End Try</p>
<p dir="ltr"> </p>
<p dir="ltr">        Return mExCn</p>
<p dir="ltr">    End Function</p>
</td>
</tr>
</tbody>
</table>
<p dir="rtl"> </p>
<p dir="rtl">وفي الطريقة Main كتبت الكود التالي :</p>
<p dir="rtl">
<table dir="rtl" border="1" cellspacing="0" cellpadding="0">
<tbody>
<tr>
<td width="568" valign="top">
<p dir="ltr">    Sub Main()</p>
<p dir="ltr">        &#8216;لنجرب تنفيذ الدالة</p>
<p dir="ltr">        &#8216;WriteOnTheScreen</p>
<p dir="ltr">        If WriteOnTheScreen.HasErrors = True Then</p>
<p dir="ltr">            Console.WriteLine(WriteOnTheScreen.ErrorMessage)</p>
<p dir="ltr">        End If</p>
<p dir="ltr">        Console.ReadLine()</p>
<p dir="ltr">    End Sub</p>
</td>
</tr>
</tbody>
</table>
<p dir="rtl"> </p>
<p dir="rtl">بعد تشغيل البرنامج سيظهر كل شيء على ما يرام هذه المرة وسيطبع 5 ، لنجرب الآن تعديل الطريقة WriteOnTheScreen ولنجعل القسمة مبنية على صفر وهذا خطأ رياضي فادح جدا :</p>
<p dir="rtl">
<table dir="rtl" border="1" cellspacing="0" cellpadding="0">
<tbody>
<tr>
<td width="568" valign="top">
<p dir="ltr">    Function WriteOnTheScreen() As ExecutionCondition</p>
<p dir="ltr">        Dim mExCn As New ExecutionCondition</p>
<p dir="ltr"> </p>
<p dir="ltr">        Try</p>
<p dir="ltr"> </p>
<p dir="ltr">            Dim x As Integer = 5</p>
<p dir="ltr">            Dim y As Integer = 0</p>
<p dir="ltr">            Dim z As Integer = x / y</p>
<p dir="ltr">            Console.WriteLine(z)</p>
<p dir="ltr">            Console.ReadLine()</p>
<p dir="ltr"> </p>
<p dir="ltr">            mExCn.Reset()</p>
<p dir="ltr"> </p>
<p dir="ltr">        Catch ex As Exception</p>
<p dir="ltr">            mExCn.SetErrorMessage(ex.Message)</p>
<p dir="ltr">        End Try</p>
<p dir="ltr"> </p>
<p dir="ltr">        Return mExCn</p>
<p dir="ltr">    End Function</p>
<p dir="ltr"> </p>
</td>
</tr>
</tbody>
</table>
<p dir="rtl"> </p>
<p dir="rtl">الآن قم بتنفيذ البرنامج ولاحظ ماسيحدث ، سيطبع نص رسالة الخطأ مهما يكن نوع الخطأ الذي حدث ، سواء القسمة على صفر او أي خطأ آخر وتأكد من كلامي جيدا !</p>
<p dir="rtl"> </p>
<p dir="rtl">ختاما ارجو انني قد وفقت في لفت الانتباء الى مسألة التعامل مع الاخطاء في الكائنات المستقلة واذا وجد هنا أي خطأ فأرجو تنبيهي عليه وجل من لا يسهو .</p>
<p dir="rtl"> </p>
<img alt="" border="0" src="http://feeds.wordpress.com/1.0/categories/alnabhani.wordpress.com/37/" /> <img alt="" border="0" src="http://feeds.wordpress.com/1.0/tags/alnabhani.wordpress.com/37/" /> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/alnabhani.wordpress.com/37/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/alnabhani.wordpress.com/37/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/alnabhani.wordpress.com/37/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/alnabhani.wordpress.com/37/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/alnabhani.wordpress.com/37/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/alnabhani.wordpress.com/37/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/alnabhani.wordpress.com/37/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/alnabhani.wordpress.com/37/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/alnabhani.wordpress.com/37/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/alnabhani.wordpress.com/37/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=alnabhani.wordpress.com&blog=454111&post=37&subd=alnabhani&ref=&feed=1" /></div>]]></content:encoded>
			<wfw:commentRss>http://alnabhani.wordpress.com/2008/07/22/executioncondition/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
	
		<media:content url="" medium="image">
			<media:title type="html">alnabhani</media:title>
		</media:content>
	</item>
		<item>
		<title>60 أداة مجانية لـ Visual Studio 2008 و 2005</title>
		<link>http://alnabhani.wordpress.com/2008/07/17/60-%d8%a3%d8%af%d8%a7%d8%a9-%d9%85%d8%ac%d8%a7%d9%86%d9%8a%d8%a9-%d9%84%d9%80-visual-studio-2008-%d9%88-2005/</link>
		<comments>http://alnabhani.wordpress.com/2008/07/17/60-%d8%a3%d8%af%d8%a7%d8%a9-%d9%85%d8%ac%d8%a7%d9%86%d9%8a%d8%a9-%d9%84%d9%80-visual-studio-2008-%d9%88-2005/#comments</comments>
		<pubDate>Thu, 17 Jul 2008 10:10:44 +0000</pubDate>
		<dc:creator>alnabhani</dc:creator>
				<category><![CDATA[Visual Basic .Net]]></category>
		<category><![CDATA[تقنية net.]]></category>
		<category><![CDATA[controls]]></category>
		<category><![CDATA[free]]></category>
		<category><![CDATA[مجانية]]></category>
		<category><![CDATA[أدوات]]></category>

		<guid isPermaLink="false">http://alnabhani.wordpress.com/?p=28</guid>
		<description><![CDATA[اثناء تجولي في احد مواقع مايكروسوفت المعروفة ( لست بصدد الحديث عنه الآن ) وجدت اعلانا من شركة DevExpress يفيد بوجود طقم مكون من 60 اداة مختلفة بشكل مجاني تماما وهي تشكيلة مختلفة ومتنوعة فعلا  :
http://www.devexpress.com/Products/Free/WebRegistration60/
 
لم اقم بتحميل هذه الادوات فأنا لا احتاجها غالبا ولكن وضعتها فقد يحتاجها احد ما يوما ما ، وافضل تحميلها [...]<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=alnabhani.wordpress.com&blog=454111&post=28&subd=alnabhani&ref=&feed=1" />]]></description>
			<content:encoded><![CDATA[<div class='snap_preview'><br /><p>اثناء تجولي في احد مواقع مايكروسوفت المعروفة ( لست بصدد الحديث عنه الآن ) وجدت اعلانا من شركة DevExpress يفيد بوجود طقم مكون من 60 اداة مختلفة بشكل مجاني تماما وهي تشكيلة مختلفة ومتنوعة فعلا  :</p>
<p><a href="http://www.devexpress.com/Products/Free/WebRegistration60/">http://www.devexpress.com/Products/Free/WebRegistration60/</a></p>
<p> </p>
<p>لم اقم بتحميل هذه الادوات فأنا لا احتاجها غالبا ولكن وضعتها فقد يحتاجها احد ما يوما ما ، وافضل تحميلها الان حتى لا ينتهي العرض من قبل الشركة</p>
<img alt="" border="0" src="http://feeds.wordpress.com/1.0/categories/alnabhani.wordpress.com/28/" /> <img alt="" border="0" src="http://feeds.wordpress.com/1.0/tags/alnabhani.wordpress.com/28/" /> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/alnabhani.wordpress.com/28/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/alnabhani.wordpress.com/28/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/alnabhani.wordpress.com/28/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/alnabhani.wordpress.com/28/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/alnabhani.wordpress.com/28/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/alnabhani.wordpress.com/28/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/alnabhani.wordpress.com/28/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/alnabhani.wordpress.com/28/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/alnabhani.wordpress.com/28/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/alnabhani.wordpress.com/28/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=alnabhani.wordpress.com&blog=454111&post=28&subd=alnabhani&ref=&feed=1" /></div>]]></content:encoded>
			<wfw:commentRss>http://alnabhani.wordpress.com/2008/07/17/60-%d8%a3%d8%af%d8%a7%d8%a9-%d9%85%d8%ac%d8%a7%d9%86%d9%8a%d8%a9-%d9%84%d9%80-visual-studio-2008-%d9%88-2005/feed/</wfw:commentRss>
		<slash:comments>5</slash:comments>
	
		<media:content url="" medium="image">
			<media:title type="html">alnabhani</media:title>
		</media:content>
	</item>
		<item>
		<title>للمبتدئين : اداة  Installed Printers Info Tool</title>
		<link>http://alnabhani.wordpress.com/2008/07/08/%d9%84%d9%84%d9%85%d8%a8%d8%aa%d8%af%d8%a6%d9%8a%d9%86-%d8%a7%d8%af%d8%a7%d8%a9-installed-printers-info-tool/</link>
		<comments>http://alnabhani.wordpress.com/2008/07/08/%d9%84%d9%84%d9%85%d8%a8%d8%aa%d8%af%d8%a6%d9%8a%d9%86-%d8%a7%d8%af%d8%a7%d8%a9-installed-printers-info-tool/#comments</comments>
		<pubDate>Tue, 08 Jul 2008 03:27:52 +0000</pubDate>
		<dc:creator>alnabhani</dc:creator>
				<category><![CDATA[Visual Basic .Net]]></category>
		<category><![CDATA[drawing]]></category>
		<category><![CDATA[printing]]></category>
		<category><![CDATA[رسم]]></category>
		<category><![CDATA[طباعة]]></category>

		<guid isPermaLink="false">http://alnabhani.wordpress.com/?p=27</guid>
		<description><![CDATA[
من اهم المواضيع البرمجية التي نحتاجها – خصوصا للمهتمين بالرسم – هي الطباعه ، وهذا ليس موضوع حديثي هنا ، بل انني قررت ان اقدم مثالا صغيرا للاخوة المبتدئين ، لمعرفة الطابعات المثبتة في النظام وخصائص كل واحده منها بضغطة زر صغيرة وبأقل قدر ممكن من الكود !
 
البرنامج يقوم بجلب اسماء الطابعات المثبته الى اداة [...]<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=alnabhani.wordpress.com&blog=454111&post=27&subd=alnabhani&ref=&feed=1" />]]></description>
			<content:encoded><![CDATA[<div class='snap_preview'><br /><p><img class="alignnone" src="http://vb4arab.com/vb/uploaded/486/01215487387.gif" alt="" /></p>
<p>من اهم المواضيع البرمجية التي نحتاجها – خصوصا للمهتمين بالرسم – هي الطباعه ، وهذا ليس موضوع حديثي هنا ، بل انني قررت ان اقدم مثالا صغيرا للاخوة المبتدئين ، لمعرفة الطابعات المثبتة في النظام وخصائص كل واحده منها بضغطة زر صغيرة وبأقل قدر ممكن من الكود !<br />
 <br />
البرنامج يقوم بجلب اسماء الطابعات المثبته الى اداة الـ combobox ثم عرض معلومات الطابعة المحددة بسهوله شديدة على اداة PropertyGrid الرائعه والتي ستوفر عليك مجهود كبير جدا قد لا تتخيله حاليا !<br />
من منظور .Net framework ، قمت باستيراد فضائي الاسماء System.Drawing و System.Drwaing.Printing .</p>
<p>وانتظر منكم اخواني واخواتي الاعزاء تحديد الفئة المسئوله عن معلومات الطابعة .</p>
<p>للتحميل انقر <a href="http://vb4arab.com/vb/uploaded/486/01215487268.rar" target="_blank">هنا</a></p>
<img alt="" border="0" src="http://feeds.wordpress.com/1.0/categories/alnabhani.wordpress.com/27/" /> <img alt="" border="0" src="http://feeds.wordpress.com/1.0/tags/alnabhani.wordpress.com/27/" /> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/alnabhani.wordpress.com/27/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/alnabhani.wordpress.com/27/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/alnabhani.wordpress.com/27/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/alnabhani.wordpress.com/27/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/alnabhani.wordpress.com/27/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/alnabhani.wordpress.com/27/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/alnabhani.wordpress.com/27/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/alnabhani.wordpress.com/27/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/alnabhani.wordpress.com/27/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/alnabhani.wordpress.com/27/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=alnabhani.wordpress.com&blog=454111&post=27&subd=alnabhani&ref=&feed=1" /></div>]]></content:encoded>
			<wfw:commentRss>http://alnabhani.wordpress.com/2008/07/08/%d9%84%d9%84%d9%85%d8%a8%d8%aa%d8%af%d8%a6%d9%8a%d9%86-%d8%a7%d8%af%d8%a7%d8%a9-installed-printers-info-tool/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
	
		<media:content url="" medium="image">
			<media:title type="html">alnabhani</media:title>
		</media:content>

		<media:content url="http://vb4arab.com/vb/uploaded/486/01215487387.gif" medium="image" />
	</item>
	</channel>
</rss>