تبليغاتX
برنامه نویسی

برنامه نویسی
آموزش گام به گام برنامه نویسی توسط مهرداد راهی


امکانات

شی پرينتر

شی پرينتر ، شیي است که پرينتر پيش ٿرض سيستم را کنترل می کند . استٿاده از شی پرينتر در ويژوال بيسيک 6 مانند کار با ساير اشيا است و بايستی از خواص و متدهای آن استٿاده کرد . در ادامه با برخی از اين خواص و متدها آشنا خواهيد شد .

برای مشاهده آموزش کامل به ادامه مطلب مراجعه نمایید.


ادامه مطلب
نویسنده: مهرداد راهی ׀ تاریخ: یکشنبه بیست و پنجم آذر 1386 ׀ موضوع: ׀

آشنایی با ویژال بیسیک 2005 (ادامه)

آشنایی با ویژال بیسیک 2005 (قسمت دوم)

آشنايي با ويژوال بيسيك 2005
كليد واژه هاي جديد
علاوه بر قابليت هاي اصلي و جديد ،چند ويژگي كوچك اما مفيد نيز در syntax ويژوال بيسيك 2005 ديده مي شود. از جمله مي توان كليد واژه هاي IsNot و Using را نام برد.كليد واژه IsNot خيلي ساده معادل تركيب دو كليد واژه IsوNot است. برنامه نويسان ويژوال بيسيك از تركيب اين دو به وفور استفاده مي كند. يكي از كاربردهاي متداول اين تركيب هنگامي است كه مي خواهيم كنترل كنيم يك شي پوچ ،(null در زبن هايي مثل سي شارپ و جاوا و Nothing در زبان ويژوال بيسيك) نيست. در اين صورت مي توان چنين نوشت:

If Not (thisObject is nothing) then

….

End If

اكنون در VB.NET 2.0 مي توانيد بنويسيد:

If  thisObject IsNot Nothing  then

….
End If

برای دیدن کل مطلب روی ادامه مطلب کلیک کنید


ادامه مطلب
نویسنده: مهرداد راهی ׀ تاریخ: یکشنبه بیست و پنجم آذر 1386 ׀ موضوع: ویژال بیسیک 2005 ׀

آشنایی با ویژال بیسیک 2005 قسمت اول

آشنایی با ویژال بیسیک 2005 (قسمت اول)

آشنايي با ويژوال بيسيك 2005

اشاره :
در اين مقاله علاوه بر آشنايي با قابليت هاي ويژوال بيسيك دات نت 2 كه ويژوال بيسيك 2005 نيز ناميده مي شود،باويژگي هاي مهم نرم افزاري ويژوال استوديوي 2005 نيز آشنا خواهيد شد. اين ويژگي ها كم و بيش در ساير زبان هاي دات نت 2 حضور دارند. در اين مقاله فرض بر اين است كه شما قبلا با زبان برنامه نويسي ويژوال بيسيك دات نت آشنا هستيد و اكنون مايليد بدانيد نسخه جديد چه ويژگي هايي نسبت به نسخه فبلي دارد. در اين مقاله تغيير وتحولات زبان ويژوال بيسيك دات نت در دو گروه از پيشرفت ها بررسي شده است. اين دو دسته عبارتند از : پيشرفت هاي مربوط به ويرايشگر كد(Code Editor) و IDE، قابليت هاي جديد زبان برنامه نويسي ويژوال بيسيك دو گروه از قابليت هاي جديد و مهم ديگر هم وجود دارند: يكي امكانات جديدي كه ويژوال بيسيك2005براي ساختن برنامه نصب و انتشار از طريق وب تعبيه كرده است و ديگري قابليت هاي بهبود يافته IDE براي كار باSQL Server كه اميدواريم هر يك از اين دو را مفصلا در مقالات جداگانه اي در شما ره هاي آينده تشريح كنيم. منبع اصلي براي نگارش اين مقاله سايت MSDN و مقالات آن بوده است؛هر چند براي بررسي دقيق تر قابليت هاي مورد بحث ،نرم افزار ويژوال بيسيك 2005 را نصب كردم تا از نزديك كارايي اين قابليت ها و امكانات را بيازماييم.


ادامه مطلب
نویسنده: مهرداد راهی ׀ تاریخ: یکشنبه بیست و پنجم آذر 1386 ׀ موضوع: ویژال بیسیک 2005 ׀

سوال از شما جواب از ما

پاسخ به سوال هموطن دوست داشتنی و پسرخاله خوبم مهدی که خیلی به ما لطف داره

آموزش ساخت Gmail رایگان .

مراحل زیر را طی کنید :

1-ابتدا به آدرس http://www.gmail.com بروید

2-در صفحه باز شده گزینه Sign up for Gmail  را کلیک کنید تا صفحه ثبت نام باز شود

3-در صفحه ثبت نام ، اطلاعات خواسته شده را وارد کنید

4-در آخر گزینه تأئید را بفشارید

i accept.Create my account

-------------------------

اگه آموزش ساده بود و به شما کمکی نکرد بگید دقیقتر بنویسم

سوالات را در بخش نظرات مطرح کنید

--------------------------------------------------------------------------

همیشه از آن میترسم که تو روزی مرا به یاد نیاوری

کار امروز را به فردا نیانداز زیرا (امروز فردای دیروز) است

ممكن است در تمام دنيا فقط يك نفر باشي،‌ ولي براي بعضي افراد تمام دنيا هستي.

                                                                                                    (گابريل گارسيا)

 

نویسنده: مهرداد راهی ׀ تاریخ: چهارشنبه بیست و یکم آذر 1386 ׀ موضوع: سوال از شما جواب از ما ׀

توضیحات

.....................:: توضیحات ::.....................

سلام هموطن

اگه درخواست برنامه یا آموزش دارید از شما هموطن گرامی خواهشمند است در بخش نظرات مطرح کنید تا تمام کاربران وبلاگ استفاده کنند شاید سوال شما هموطن گرامی سوال هموطن دیگری نیز باشد ایمیل فقط برای مطالب خصوصی می باشد.

....:::. ممنون .:::....

با تشکر دوست و هموطن شما

سوالات را در بخش نظرات مطرح کنید

-------------------------------------------------------------

همیشه از آن میترسم که تو روزی مرا به یاد نیاوری

کار امروز را به فردا نیانداز زیرا (امروز فردای دیروز) است

ممكن است در تمام دنيا فقط يك نفر باشي،‌ ولي براي بعضي افراد تمام دنيا هستي.

                                                                                                    (گابريل گارسيا)

نویسنده: مهرداد راهی ׀ تاریخ: چهارشنبه بیست و یکم آذر 1386 ׀ موضوع: ׀

دانلودیها

سلام دوستان به دليل مشكلات فراوان در لينكها بخش دانلود غيرفعال ميشود

.:: اگه سايت خوبي داريد كه توش بشه آپلود كرد معرفي كنيد برنامه هاي خوبي دارم كه آپلود كنم ::.

برنامه API فارسی دانلود کنید

نویسنده: مهرداد راهی ׀ تاریخ: جمعه شانزدهم آذر 1386 ׀ موضوع: دانلود كنيد ׀

API هاي ويندوز و طرز استفاده آنها در وی بی

 API هاي ويندوز و طرز استفاده آنها در وی بی

امروز قصد دارم در مورد API هاي ويندوز و چگونگي استفاده از آنها در ويژوال بيسيک بطور خلاصه توضيح دهم و همچنين دو مثال پراستفاده را نيز در اين زمينه بيان کنم که عبارتند از چگونگي پخش فايلهاي Wav و ساخت يک تايمر با دقت بالا :

برای دیدن کل مطلب روی ادامه مطلب کلیک کنید


ادامه مطلب
نویسنده: مهرداد راهی ׀ تاریخ: جمعه شانزدهم آذر 1386 ׀ موضوع: كار با API ها ׀

بررسی جزئيات توابع Dial-Up موجود در WinInet

بررسی جزئيات توابع Dial-Up موجود در WinInet :

1 – تابع InternetAutodial : بطور اتوماتيک باعث شماره گيری اتصال پيش فرض اينترنت توسط مودم می شود . اگر اتصال با موفقيت انجام شود تابع مقدار true و در غير اينصورت false بر می گرداند .

 

برای مشاهده آموزش کامل به ادامه مطلب مراجعه نمایید


ادامه مطلب
نویسنده: مهرداد راهی ׀ تاریخ: پنجشنبه هشتم آذر 1386 ׀ موضوع: اینترنت و برنامه نویسی ׀

رجیستری چیست؟

رجيستري چيست ؟

سيستم عامل ويندوز تنظيمات سخت افزاري و نرم افزاري خود را بطور مرکزي در يک بانک اطلاعاتي با ساختار سلسله مراتبي ذخيره مي کند که رجيستري نام دارد . رجيستري جايگزيني براي بسياري از فايلهاي پيکربندي INI ، SYS و COM است که در نسخه هاي اوليه ويندوز موجود بود . رجيستري ، سيستم عامل را با مهيا کردن اطلاعات موردنيز براي اجراي برنامه ها و load شدن component ها ، کنترل مي کند .

 برای مشاهده آموزش کامل به ادامه مطلب مراجعه نمایید


ادامه مطلب
نویسنده: مهرداد راهی ׀ تاریخ: چهارشنبه هفتم آذر 1386 ׀ موضوع: رجیستری ׀

رجيستري چيست ؟

رجيستري چيست ؟
سيستم عامل ويندوز تنظيمات سخت افزاري و نرم افزاري خود را بطور مرکزي در يک بانک اطلاعاتي با ساختار سلسله مراتبي ذخيره مي کند که رجيستري نام دارد . رجيستري جايگزيني براي بسياري از فايلهاي پيکربندي INI ، SYS و COM است که در نسخه هاي اوليه ويندوز موجود بود . رجيستري ، سيستم عامل را با مهيا کردن اطلاعات موردنيز براي اجراي برنامه ها و load شدن component ها ، کنترل مي کند .
رجيستري شامل انواع مختلفي از اطلاعات مي باشد مثل :
- اطلاعات سخت افزارهاي نصب شده روي سيستم
- اطلاعات درايورهاي نصب شده روي سيستم
- اطلاعات برنامه هاي نصب شده روي سيستم
- اطلاعات پروتکلهاي شبکه اي مورد استفاده در سيستم
ساختار رجيستري شامل چندين مجموعه رکورد است که داده هاي اين رکوردها توسط بسياري از برنامه ها و اجزاي سيستم عامل خوانده و يا نوشته مي شود .
اجزاي رجيستري
اجزاي تشکيل دهنده رجيستري عبارتند از :
1 – subtree : Subtree ها همانند folder هاي موجود در ريشه يک درايو هارد هستند . رجستری ويندوز داراي پنج subtree مي باشد :
- HKEY_LOCAL_MACHINE : شامل تمام داده هاي پيکربندي براي کامپيوتر مي باشد و شامل 5 key است :Hardware ، SAM ، Security ، Software و System
- HKEY_USERS : شامل داده هاي مربوط به تنظيمات سيستم عامل براي هر user است مثل تنظيمات desktop و محيط ويندوز
- HKEY_CURRENT_USER : شامل داده هاي کاربر فعلي سيستم
- HKEY_CLASSES_ROOT : شامل اطلاعات پيکربندي نرم افزار است مثل داده هاي OLE و داده هاي کلاسهاي متناظر با فايل
- HKEY_CURRENT_CONFIG : شامل اطلاعات مورد نياز براي تنظيمات داريورهاي سخت افزاري و غيره
2 – Key : key ها همانند folder ها و subfolder هاي روي هارد هستند . هر key متناظر با object هاي نرم افزاري يا سخت افزاري مي باشد . subkey ها key هايي هستند که درون يکسري key قراردارند .
3 – Entry : هر key داراي يک يا چند entry است . هر entry داراي سه بخش مي باشد :
- نام Name
- نوع داده اي Data Type : مقدار هر entry يکي از انواع داده هاي زير است :
REG_DWORD ، REG_SZ ، REG_EXPAND_SZ ، REG_BINARY ،
REG_MULTI_SZ ، REG_FULL_RESOURCE_DESCRIPTOT
- مقدار Value




نکته 1 : براي مشاهده رجيستري و اعمال تغييرات در آن ( لطفاً اگر هيچ تجربه اي در تنظيم کردن رجيستري نداريد اطلاعات آنرا تغيير ندهيد ) ، مي توانيد از برنامه regedit.exe و يا regedt32.exe موجود در ويندوز استفاده کنيد . براي اينکار کافيست نام برنامه را در کادر Run وارد کنيد .

نکته 2 : در قسمت دوم اين مقاله کلاسي براي خواندن و نوشتن از/به رجيستري در ويژوال بيسيک خواهم نوشت و سپس نمونه اي از کاربردهاي نوشتن يکسري اطلاعات خاص در رجيستري را خواهيم ديد .
نویسنده: مهرداد راهی ׀ تاریخ: یکشنبه چهارم آذر 1386 ׀ موضوع: رجیستری ׀

ساخت منو ها

ساخت منو ها
2 روش برای فراخوانی پنجره مربوط به منو یعنی menu editor امکان پذیر می باشد.
1:فراخوانی از پنجره نوار ابزار کلید بر روی menu editor
2:راست کلیک بر روی فرم و انتخاب menu editor
بعد از باز شدن پنجره menu editor گزینه های پیش روی شما نمایان می شود.
تعریف:
Caption=در این قسمت نام منو را مشخص کنید.
Name = در این قسمت نام اصلی منو که در قسمت برنامه نویسی بکار می رود می نویسید
Index=اگر نام یک منو ماننده هم بود از این قسمت استفاده می کنید.
helpcontextID= در این قسمت شماره آی دی برای گزاشتن راهنما را می گزاررید.
Checked=این قسمت کنار منو یک علامت تیک می گزارد.
Enabled= این قسمت اجرا یا غیر اجرا بودن یک فورم را نمایش می دهد.
Visibeld= این قسمت برای نمایش دادن منو است. آیا نمایش داده شود یا خیر
Shortcut=در این قسمت مشخص می کند که هر دکمه از یک کلید یا کلیدهای استفاده کند مانندهalt+c
Next =برای ساخت یا جلو رفتن برای منو
Insert=فاصله گزاری
Deleted=پاک کردن یک منو
اگر در قسمت caption یک – بگزارید یک جدا کننده ساخته می شود.
کلید های راست چپ پایین بالا برای
پایین بالا برای عوض کردن جاهای یک منو است.
چپ و راست هم برای اینکه منو ساخته شده خودش باز کننده داشته باشد یا نه.
در قسمت کد نویسی امکانات اینکه رنگ منو چه باشد و....... امکان پذیر است.

نویسنده: مهرداد راهی ׀ تاریخ: شنبه سوم آذر 1386 ׀ موضوع: ׀

کنترل Web Browser – ساخت مرورگر صفحات وب

کنترل Web Browser – ساخت مرورگر صفحات وب
برنامه Internet Explorer يا iexplore.exe در واقع برنامه کوچکي است که وظيفه اصلي آن ايجاد چارچوبي براي بهم پيوستن عناصر مختلف است و اين عناصر هستند که وظايف اصلي مثل load کردن صفحات وب ، اجراي کدهاي Html و غيره را انجام مي دهند . اصلي ترين عنصري که مستقيماً توسط iexplore.exe استفاده مي شود کنترل Webbrowser ( موجود در فايل shdocrw.dll ) مي باشد . وظيفه اين فايل dll ، عبارت است از حرکت بين صفحات وب ، مديريت تاريخچه صفحات ديده شده و غيره . اين فايل خود از فايل ديگري بنام Mshtml.dll استفاده مي کند که وظيفه آن بررسي و اجراي فايلهاي html است . مايکروسافت به برنامه نويسان اين امکان را داده که بتوانند در برنامه هايشان از کنترل webbrowser استفاده کنند . با استفاده از اين کنترل مي توان به سادگي يک مرورگر وب تقريباً کامل ساخت .

خصوصيات کنترل Webbrowser :
Webbrowser علاوه بر خواص استانداردي مثل width ، height و … خواص زير را دارد :
1 – Busy : اگر در حال load کردن يک صفحه يا در حال جستجو در وب باشد اين خاصيت True است . توسط متد Stop مي توان عمليات جاري را متوقف کرد .
2 – Container : ارجاع به شي نگهدارنده کنترل webbrowser
3 – Document : ارجاع به صفحه html فعلي . براي کار با اين صفحه html مي توان از خواص و متدهابي شي Document استفاده کرد .
4 – LocationName : حاوي آدرس محلي است که اکنون در کنترل webbrowser ، load شده است . اگر اين محل يک صفحه html باشد عنوان آن صفحه خواهد بود و اگر اين محل يک فايل در شبکه باشد مسير کامل آن فايل خواهد بود .
5 – LocationURL : حاوي url محلي است که فعلاً در کنترل webbrowser ، load شده است .
6 – Offline : اگر کنترل webbrowser در حالت عدم اتصال باشد مقدار آن True و در غيراينصورت False است .
7 – Parent : فرمي را نشان مي دهد که کنترل webbrowser در آن قرار دارد .
8 – ReadyState : وضعيت کنترل webbrowser را برمي گرداند .

متدهاي کنترل webbrowser : اين متدها مربوط به مرور در صفحات وب هستند :
1- GoBack : در ليست تاريخچه url ها ، يکي به عقب برمي گردد .
2 – GoForward : در ليست تاريخچه url ها ، يکي به جلو مي رود .
3 – GoHome : به homepage مرورگر مي رود .
4 – Navigate : به يک url يا فايل مي رود . ساختار اين متد بصورت زير است :

Navigate URL [Flags,][TargetFrameName,][PostData,][Headers]x

URL آدرس مقصد مي باشد . Flags نحوه باز شدن آدرس مقصد را تعيين مي کند . اگر اين پارامتر ذکر نشود آدرس جديد در پنجره فعلي باز خواهد شد و به ليست تاريخچه اضافه شده و اگر کپي آن در temperory cache موجود باشد از آنجا خوانده مي شود . مقادير پارامتر Flags عبارتند از :
- NavOpenInNewWindow : آدرس جديد را در پنجره جديدي باز مي کند .
- NavNoHistory : به ليست تاريخچه اضافه نمي شود بلکه جايگزين صفحه فعلي مي شود .
- NavNoReadFromCache : صفحه جديد از cache خوانده نمي شود .
- NavNoWriteToCache : صفحه جديد روي cache نوشته نمي شود

Event هاي کنترل webbrowser : اين event ها مربوط به مرور در وب و تغيير حالت آن هستند :
1 – CommandStateChange : براي فعال يا غيرفعال کردن دکمه هاي Forward و Back در مرورگر استفاده مي شود . شکل کلي فراخواني اين event بصورت زير است :

Private Sub WebBrowser1_CommandStateChange(ByVal Command As Long, ByVal Enable As Boolean)


که command فرماني است که حالت فعال آن تغيير کرده است و دو مقدار مي گيرد : 1 و 3 که بترتيب معادل فرمانهاي GoForward و GoBack هستند .
Enable فعال يا غيرفعال بودن فرمان را تعيين مي کند .
2 – DocumentComplete : اين event زماني فعال مي شود که صفحه در حال load شدن به حالت ReadyState_Complete برود . شکل کلي فراخواني اين event بصورت زير است :
Private Sub WebBrowser1_DocumentComplete(ByVal pDisp As Object, URL As Variant)
که pDisp ارجاعي به کنترل webbrowser است که event در آن رخ داده است و URL آدرس صفحه در حال load شدن است .
3 – DownloadBegin : اين event در آغاز حرکت به صفحه جديد روي مي دهد و هيچ پارامتري نمي گيرد . مرورگر مي تواند در اين event پيغامي براي شروع عمليات جديد نشان مي دهد .
4 – DownloadComplete : اين event در پايان عمليات يا در صورت انصراف کاربر يا بروز خطا روي مي دهد .
5 – ProgressChange : با بروز هر تغييري در وضعيت load ، اين event روي مي دهد . شکل کلي فراخواني آن بصورت زير است :

Private Sub WebBrowser1_ProgressChange(ByVal Progress As Long, ByVal ProgressMax As Long)


که Progress نشان دهنده پيشرفت عمليات ( بايتهاي load شده ) است . پارامتر ProgressMax تعداد کل بايتهايي که بايد load شوند را نشان مي دهد بنابر اين :

(Progress/ProgressMax)*100=درصد پيشرفت عمليات load


يک مثال ساده :
از منوي project مورد components را انتخاب کنيد و از ليست کنترلها ، Microsoft Internet Controls را به toolbar خود اضافه کنيد . يک کنترل WebBrowser روي فرم قرار دهيد و سايز آنرا به اندازه ابعاد فرم خود قرار دهيد . يک textbox و يک دکمه روي فرم قرار دهيد . کد زير را براي event مربوط به کليک دکمه بنويسيد :
نویسنده: مهرداد راهی ׀ تاریخ: شنبه سوم آذر 1386 ׀ موضوع: اینترنت و برنامه نویسی ׀

برنامه نويسی شبکه و اينترنت در VB بخش اول

برنامه نويسی شبکه و اينترنت در VB بخش اول
مروری بر TCP/IP

نکته : مطالب زير تنها در حد يک يادآوري مي باشد . اگر اطلاعات کمي در مورد TCP/IP داريد به کتابهاي موجود مراجعه کنيد .

پروتکل Protocol : قراردادي است براي برقراري ارتباط در شبکه

مدل TCP/IP : مجموعه اي از پروتکلهاي ارتباطي مرتبط بهم است که مکانيزمها و سرويسهاي مورد نياز جهت برقراري ارتباط در اينترنت را مهيا مي کنند . اين مدل شامل ۴ لايه است :
۱ - لايه کاربرد Application Layer : شامل برنامه هاي کاربردي و پروتکلهايي مثل Http ، Ftp ، Smtp ، Pop و Telnet مي باشد .
۲ - لايه انتقال Transport Layer : اين لايه شامل دو پروتکل TCP و UDP است . پروتکل TCP وظيفه کنترل رسيدن بسته هاي داده به مقصد ( TCP/IP داده ها را به بسته هاي کوچکي تقسيم مي کند که هر بسته حاوي آدرس فرستنده ، گيرنده و شماره بسته مي باشد ) ، تصحيح خطا و مرتب سازي بسته ها را برعهده دارد . UDP پروتکلي شبيه TCP است با اين تفاوت که هيچ ضمانتي براي رسيدن بسته هاي اطلاعاتي در آن وجود ندارد و معمولاً در انتقال صوت و ويدئو روي اينتزنت استفاده مي شود .
۳ - لايه اينترنت Internet Layer : شامل پروتکل IP است که مسئول مسيريابي بسته هاي اطلاعاتي مي باشد .
۴ - لايه دسترسي به شبکه Link Layer : شامل بخشي از هسته سيستم عامل و نيز درايورهاي واسط شبکه براي کار با سخت افزار شبکه مي باشد .

سوکت Socket و پورت Port : سوکت يک ورودي انتزاعي در لايه انتقال مي باشد که براي ايجاد ارتباطات مختلف TCP/IP بکار مي رود . اغلب برنامه هاي کاربردي که از TCP و UDP استفاده مي کنند ، عمليات انتقال اطلاعات خود را با ساخت يک سوکت و سپس انجام يکسري عمليات روي آن انجام مي دهند . اين عمليات عبارتند از :
۱ - عمليات کنترلي : شامل اختصاص يک شماره پورت به سوکت ، initiate کردن يا accpet کردن يک ارتباط ، از بين بردن سوکت
۲ - عمليات انتقال داده : شامل نوشتن داده روي سوکت و خواندن داده از سوکت
۳ - عمليات بررسي وضعيت : مثل پيدا کردن آدرس IP مربوط به سوکت ، پيدا کردن شماره پورت سوکت و غيره

HTTP : پروتکل انتقال داده براي وب است .

FTP : پروتکل انتقال فايل روي اينترنت است .

SMTP و POP : پروتکلهاي ارسال و دريافت email مي باشند
نویسنده: مهرداد راهی ׀ تاریخ: شنبه سوم آذر 1386 ׀ موضوع: اینترنت و برنامه نویسی ׀

ايجاد ساختارهاي داده اي در ويژوال بيسيک - بخش ششم

ايجاد ساختارهاي داده اي در ويژوال بيسيک - بخش ششم

کلاس درختهای جستجوی باينری

برای ايجاد درختهای جستجوی باينری در ويژوال بيسيک نياز به ايجاد دو کلاس داريم :
1 - کلاس CTreeNode که هر ند درخت دودويي را توصيف می کند . اين کلاس دارای يک متغير به نام mNodeData از نوع Variant برای نگهداری داده هر گره است . همچنين دارای دو متغير اشاره گر به نامهای mLeft و mRight می باشد که به ترتيب به فرزند چپ و فرزند راست درخت اشاره می کنند .
متد Get Data مقدار داده هر گره را بر می گرداند و متد Let Data مقدار داده هر گره را تنظيم می کند .
متد Get Left آدرس فرزند چپ هر گره را برمی گرداند و متد Let Left فرزند چپ هر گره را تنظيم می کند .
متد Get Right آدرس فرزند راست هر گره را برمی گرداند و متد Let Right فرزند راست هر گره را تنظيم می کند .
متد Insert برای اضافه کردن فرزند به يک گره به کار می رود . اگر مقدار گره ای که می خواهيم بعنوان فرزند به درخت اضافه کنيم کوچکتر از مقدار خود گره باشد بعنوان فرزند چپ و در غير اينصورت بعنوان فرزند راست به گره اضافه می شود . اضافه شدن نيز بدين صورت است که ابتدا بررسی می شود آیا گره قبلاً فرزندی داشته است يا نه ؟ اگر نداشته باشد ( mLeft و يا mRight برابر Nothing باشد ) اين گره جديد مستقيماً به گره متصل می شود اما اگر گره قبلاً فرزندی داشته باشد متد Insert برای آن فرزند اضافه می شود و اينکار تا جايی ادامه می يابد که به گره ای برسيم که فرزندی نداشته باشد :


Private mLeft as CtreeNode
Private mRight as CtreeNode
Private mNodeData as Variant

Public Property Get Data() as variant
Data=mNodeData
End property
Public Property Let Data(Byval vNewValue as Variant)
MNodeData=vNewValue
End property
Public Property Get Left() as variant
Set Left=mLeft
End property
Public Property Let Left(Byval vNewValue as variant)
Set mLeft=vNewValue
End property

Public Property Get Right() as variant
Set Right=mRight
End Property
Public Property Let Right(Byval vNewValue as variant)
Set mRight=vNewValue
End Property

Public Sub Insert(value as variant)x
If valueIf mLeft Is Nothing Then
Set mLeft=New CtreeNode
MLeft.Data=value
Else
MLeft.Insert(value)
End if
Elseif value>mNodeData then
If mRight Is Nothing then
Set mRight=New CtreeNode
MRight.Data=value
Else
MRight.Insert(value)
End if
End if
End sub



2 - کلاس CTree : اين کلاس برای ايجاد درخت بکار می رود . اين کلاس دارای متغيری بنام mRoot از نوع CTreeNode برای تعريف ريشه درخت است . همچنين يک متغير mOutputString برای نمايش دادن اعضای درخت دارد .


Private mRoot as CtreeNode
Private mOutputString as String

Public Sub InsertNode(value as Varaint)
If mRoot Is Nothing then
Set Mnode=New CtreeNode
MRoot.Data=value
Else
MRoot.Insert(value)
End if
End sub

Public PreorderTraversal()
MOutputString=””
Call PreorderHelper(mRoot)
End sub

Private Sub PreorderHelper(node As CtreeNode)
If node Is nothing Then
Exit sub
End if
MOutputString=mOutputString & node.Data & “ “
Call PreorderHelper(node.left)
Call PreorderHelper(node.right)
End sub

Public Sub InorderTraversal()
MOutputString=””
Call InorderHelper(mRoot)
End sub

Private Sub InorderHelper(node as CtreeNode)
If node Is nothing then
Exit sub
End if
Call InorderHelper(node.Left)
MOutputString=mOutputString & node.Data & “ “
Call InorderHelper(node.Right)
End sub

Public PostorderTraversal()
MOutputString=””
Call PostorderHelper(mRoot)
End sub

Private Sub PostorderHelper(node as CtreeNode)
If node Is Nothing then
Exit sub
End if
Call PostorderHelper(node.Left)
Call PostorderHelper(node.Right)
MOutputString=mOutputString & node.Data & “ “
End sub

Public Property Get Output() as Varaint
Output=mOutputString
End Property



در بخش بعد ، در مورد متدهای اين کلاس بيشتر توضيح خواهم داد و سپس برنامه نمونه ای را برای کار با اين کلاسها خواهيم نوشت

نویسنده: مهرداد راهی ׀ تاریخ: شنبه سوم آذر 1386 ׀ موضوع: ׀

ايجاد ساختارهاي داده اي در ويژوال بيسيک - بخش پايانی

ايجاد ساختارهاي داده اي در ويژوال بيسيک - بخش پايانی

انواع روشهای پيمايش عناصر درخت :
۱ - روش InOrder : در اين روش ابتدا عناصر نيمه سمت چپ درخت ، سپس ريشه و در آخر عناصر نيمه سمت راست درخت نمايش داده می شوند .
۲ - روش PreOrder : در اين روش ابتدا ريشه درخت ، سپس عناصر نيمه سمت چپ و در پايان عناصر نيمه سمت راست درخت نمايش داده می شوند .
۳ - روش PostOrder : در اين روش ابتدا عناصر نيمه سمت چپ درخت ، سپس عناصر نيمه سمت راست درخت و در پايان ريشه درخت نمايش داده می شوند .
مثال : درخت زير را در نظر بگيريد :




نتيجه پيمايش InOrder درخت : 1,3,4,5,6,7,8
نتيجه پيمايش PreOrder درخت : 5,3,1,4,7,6,8
نتيجه پيمايش PostOrder درخت : 1,4,3,6,8,7,5
بررسی متدهای کلاس CTree :
متد InsertNode : اگر گره ريشه برابر Null باشد value را برابر مقدار گره ريشه قرار می دهد . در غير اينصورت متد Insert مربوط به گره ريشه فراخوانی می شود .
متد PreorderTraversal : رشته چاپ عناصر ريشه را خالی می کند و سپس متد پيمايش Preorder را فراخوانی می کند .
متد InorderTraversal : رشته چاپ عناصر ريشه را خالی می کند و سپس متد پيمايش Inorder را فراخوانی می کند .
متد PostorderTraversal : رشته چاپ عناصر ريشه را خالی می کند و سپس متد پيمايش Postorder را فراخوانی می کند .
متد Get Output : عناصر پيمايش شده درخت را برمی گرداند .
يک برنامه نمونه :
ابتدا کلاسهای CTreeNode و CTree را به پروژه تان اضافه کنيد . سپس متغير زير را در قسمت کدنويسی فرمتان تعريف کنيد :

Dim mTree as New Ctree


سپس در فرمتان يک Textbox با نام Value و دو Command Button با نامهای Insert و Show قرار دهيد .
کد زير را برای وارد کردن عنصر به درخت برای دکمه Insert بنويسيد :

mTree.InsertNode(Value.Text)x


کد زير را برای پيمايش InOrder درخت برای دکمه Show بنويسيد :

Call mTree.InorderTraversal


شي Collection :
ويژوال بيسيک داراي شي پيش ساخته اي به نام Collection است که مي تواند مجموعه اي از مقادير با هر نوع داده اي را در خود ذخيره کند . در واقع عناصر موجود در يک Collection مي توانند داراي نوعهاي داده اي متفاوت باشند . شي Collection قابليت رشد ديناميک دارد .
شي Collection توسط کلمه کليدي New ايجاد مي شوند . توسط متد Add مي توان به Cllection عضو اضافه کرد و توسط متد Remove مي توان عضوي را از آن حذف کرد . هر عضو از Collection توسط متد Item قابل دستيابي است . با استفاده از خاصيت Count مي توان تعداد اعضاي موجود در Collection را تعيين نمود . بصورت پيش فرض اعضاي جديد به انتهاي Collection اضافه مي شوند ولي توسط آرگومانهاي اختياري متد Add مي توان محل اضافه شدن را تغيير داد .
متد Remove يک شماره مي گيرد که موقعيت عضوي را که مي خواهيم آنرا حذف کنيم مشخص مي کند .
توسط دستورات زير مي توان اعضاي يک Collection را نمايش داد :


Dim mCollection as New Collection
Dim element as Variant
.
.
.
For Each element In mCollection
Msgbox element




element متغيري از نوع variant براي اشاره به هر عضو Collection مي باشد .

نویسنده: مهرداد راهی ׀ تاریخ: شنبه سوم آذر 1386 ׀ موضوع: ׀

ايجاد ساختارهاي داده اي در ويژوال بيسيک - بخش پنجم

ايجاد ساختارهاي داده اي در ويژوال بيسيک - بخش پنجم

صف :
صف نوعي ساختار داده اي است که گره ها از ابتداي صف ( سر صف head ) حذف مي شوند و از انتهاي صف ( ته صف tail ) اضافه مي شوند . بنابر اين ، صف يک ساختار داده اي FIFO است . صف دارای دو متد به نامهای AddQueue و DelQueue است که اولین متد ، عنصری را به انتهای صف اضافه می کند و دومين متد ، عنصری را از ابتدای صف حذف می کند .
براي ايجاد کلاس Cqueue از کلاس Clist استفاده مي کنيم :


Private list as New Clist

Public Sub AddQueue(value as Variant)
List.InsertAtBack(value)
End sub

Public Function DelQueue() as Variant
DelQueue=list.RemoveFromFront
End function

Public property Get Iterator() as Variant
Set Iterator=list.Iterator
End Property


درخت :
ليستهاي پيوندي ، پشته ها و صف ها جزو ساختارهاي داده اي خطي هستند در حاليکه يک درخت ، يک ساختار داده اي دو بعدي با خصوصيات ويژه اي است . گره هاي درخت داراي دو يا چند لينک هستند . در اينجا در مورد درختهاي دودويي يا باينري بحث مي کنيم که در آن همه گره ها داراي دو لينک هستند . گره ريشه اولين گره در درخت است . هر لينک گره ريشه ، به يک فرزند اشاره مي کند . به فرزندان يک گره Siblings مي گويند . به گره بدون فرزند ، برگ يا Leaf گفته مي شود .
درختهاي جستجوي باينري درخت هايي هستند که در آنها مقدار فرزند چپ هر گره کمتر از گره پدر و مقدار فرزند سمت راست هر گره بيشتر از گره پدر مي باشد .


در بخش ششم يک کلاس برای پياده سازی درختهای جستجوی باينری ايجاد خواهيم کرد .

نویسنده: مهرداد راهی ׀ تاریخ: شنبه سوم آذر 1386 ׀ موضوع: ׀

ايجاد ساختارهاي داده اي در ويژوال بيسيک - بخش چهارم

ايجاد ساختارهاي داده اي در ويژوال بيسيک - بخش چهارم

کد:

کلاس پشته :

همانطور که در بخش قبل گفته شد پشته نوعی ليست پيوندی است که گره هاي جديد فقط به انتهاي آن اضافه شوند . روالهاي اصلي پشته Push و Pop هستند .

Push يک گره جديد به بالاي پشته اضافه مي کند و Pop از بالاي پشته گره اي را حذف کرده و مقدار داده آن را بر مي گرداند .

يک کلاس پشته را با استفاده از کلاس Clist و بصورت زير پياده سازي مي کنيم :

 

 Private list As New Clist

Public Sub Push(value as Variant)x

List.InsertAtFront(value)x

End sub

Public Function Pop As Variant

Pop=list.RemoveFromFront()x

End Function

Public Function IsStackEmpty() As Boolean

IsStackEmpty=list.IsEmpty()x

End function

Public Property Get Iterator() as variant

Set Iterator=list.Iterator

End Property

 

 در اين کلاس ابتدا يک شی از نوع کلاس Clist تعريف شده است . سپس متدهای Push توسط متد InsertAtFront و Pop توسط متد RemoveFromFront پياده سازی شده اند .

يک برنامه نمونه :

برای نوشتن يک برنامه برای کار با پشته ابتدا کلاس Stack را که کد آن را در بالا ديديد به پروژه تان اضافه کنيد . سپس در بخش کد مربوط به فرمتان ابتدا يک شی از نوع کلاس Stack بصورت زير تعريف کنيد :

 

Dim mStack as New Stack

 

 

سپس در فرمتان سه CommandButton با نامهای Push و Pop و ShowStack و نيز يک TextBox با نام StackMember قرار دهيد .

کد زير را برای کليک شدن دکمه Push بنويسيد :

 

mStack.push(StackMember.text)x

 

 

کد زير را برای کليک شدن دکمه Pop بنويسيد :

 

StackMember.text=mStack.Pop()x

 

 

کد زير را برای کليک شدن دکمه ShowStack بنويسيد :

 

Dim elements as New ClistIterator

Set elements=mStack.Iterator

If elements.HasMoreItems=false then msgbox "stack is empty"x

Else

While elemets.HasMoreItems

Msgbox elements.NextItem

Wend

نویسنده: مهرداد راهی ׀ تاریخ: شنبه سوم آذر 1386 ׀ موضوع: ׀

ايجاد ساختارهاي داده اي در ويژوال بيسيک - بخش سوم

ايجاد ساختارهاي داده اي در ويژوال بيسيک - بخش سوم

مثالی از استفاده از کلاسهای ليست پيوندی :
ابتدا کلاسهايي که در جلسه قبل معرفی شد را به پروژه تان اضافه کنيد . سپس در بخش کدنويسی فرمتان ، ابتدا يک شی از نوع کلاس Clist بصورت زير تعريف کنيد :

Dim list as New Clist


در فرمتان سه CommandButton با نامهای AddFirst ، AddLast و ShowList و نيز يک TextBox با نام ListMember قرار دهيد .
کد زير را برای رويداد کليک شدن دکمه AddFirst بنويسيد :

Call list.InsertAtFront(ListMember.text)x


کد زير را برای رويداد کليک شدن دکمه AddLast بنويسيد :

Call list.InsertAtBack(ListMember.text)x


کد زير را برای رويداد کليک شدن دکمه ShowList بنويسيد :

Dim elements as New ClistIterator
Set elements=list.Iterator
If elements.HasMoreItems=false then msgbox ("list is empty")x
Else
While elements.HasMoreItems
Msgbox(elements.NextItem)x
Wend
end if



پشته :
پشته نوعي ليست پيوندي است که گره هاي جديد ، فقط به انتهاي آن مي توانند اضافه شوند . بهمين دليل به پشته ، ساختمان داده LIFO مي گويند . قسمت لينک آخرين گره پشته با Nothing مقدار دهي مي شود که نشان دهنده پايين پشته است .
روالهاي اصلي پشته Push و Pop هستند .
Push يک گره جديد به بالاي پشته اضافه مي کند و Pop از بالاي پشته گره اي را حذف کرده و مقدار داده آن را بر مي گرداند .


در بخش چهارم کلاسی را برای کار با پشته معرفی خواهم کرد .

نویسنده: مهرداد راهی ׀ تاریخ: شنبه سوم آذر 1386 ׀ موضوع: ׀

ايجاد ساختارهاي داده اي در ويژوال بيسيک - بخش دوم

ايجاد ساختارهاي داده اي در ويژوال بيسيک - بخش دوم

ليست پيوندي

همانطور که گفته شد ليست پيوندي مجموعه اي از يکسري داده است که اين داده ها از نوع اشيا خودارجاعي هستند . ( هر شي خودارجاعي داراي يک متغير نوع variant براي نگهدار مقدار و يک اشاره گر به شي بعدي است ) . هر عضو ليست پيوندي را يک گره گويند . هر ليست پيوندي از طريق يک اشاره گر به اولين گره قابل دسترسي است . گره هاي بعدي از طريق قسمت لينک موجود در هر گره قابل دسترس هستند . همچنين لينک آخرين گره با Nothing تنظيم مي شود که انتهاي ليست را نشان مي دهد .
مزيت اصلي ليست هاي پيوندي نسبت به آرايه اينست که تعداد عناصر ليست پيوندي قابل تغيير است . بعبارت ديگر ليست هاي پيوندي بصورت ديناميک هستند و طول آنها قابل تغيير است اما سايز آرايه ثابت است . ( البته ويژوال بيسطک از آرايه هاي با سايز متغير نيز پشتيباني مي کند اما اين عمل تغيير سايز اتوماتيک نيست .)
عمل درج در ليست پيوندي ساده است و تنها بايستي دو اشاره گر تغيير يابد .
ليست هاي پيوندي را مي توان به سادگي با قراردادن هر عضو جديد در محل صحيح بصورت sortشده نگهداري کرد .
اعضاي ليست پيوندي در حافظه بصورت پيوسته ذخيره نمي شوند بنابراين نمي توان فوراً به هر عضو ليست دسترسي داشت ( بر خلاف آرايه ) .
براي ايجاد ليست پيوندي در ويژوال بيسيک نياز به سه کلاس است :

1 – کلاس ClistNode : کلاسي است که هر گره از ليست را توصيف مي کند :


private mNodeData as Variant
private mNextNode as ClistNode
public Property Get Data() as Variant
Data=mNodeData
End Property
Public Property Let Dta(ByVal vNewValue as Variant)x
MNodeData=vNewValue
End Property
Public Property Get NextNode() as ClistNode
Set NextNode=mNextNode
End Property
Public Property Let NextNode(Byval vNewValue as Variant)x
Set mNextNode=vNewValue
End Property


2 – کلاس Clist براي توصيف ليست پيوندي .
mFirstNode براي اشاره به اولين ClistNode و mLastNode براي اشاره به آخرين ClistNode در يک شي clist بکار می رود . زمانيکه يک Clsit ايجاد مي شود اين دو متغير با Nothing تنظيم مي شوند . روال Property Get Iterator يک شي ClistIterator برمي گرداند که مي توان از آن براي حرکت در بين اعضاي ليست استفاده کرد .


Private mFirstNode as ClistNode
Private mLastNode as ClistNode
Public Function IsEmpty() as boolean
IsEmpty=IIf(mFirstNode Is Nothing,True,False)x
End function
Public Sub InsertAtFront(insertItem as variant)x
Dim tempNode as ClistNode
If IsEmpty() then
Set mFirstNode=New ClistNode
Set mLastNode=mFirstNode
Else
Set tempNode=mFirstNode
Set mFirstNode=New ClistNode
MFirstNode.NextNode=tempNode
End if
MFirstNode.Data=insertItem
End sub
Public sub InsertAtBack(insertItem as Variant)x
Dim tempNode as ClistNode
If IsEmpty() then
Set mLastNode=New ClistNode
Set mFirstNode=mLastNode
Else
Set tempNode=mLastNode
Set mLastNode=New ClistNode
TempNode.NextNode=mLastNode
End if
MLastNode.Data=insertItem
End sub
Public function RemoveFromFront()x
Dim removeItem as Variant
If IsEmpty() then
Msgbox list is empty
RemoveFromFront=Null
Exit function
End if
RemoveItem=mFirstNode.Data
If mFirstNode Is mLastNode then
Set mFirstNode=Nothing
Set mLastNode=Nothing
Else
Set mFirstNode=mFirstNode.NextNode
End if
RemoveFromFront=removeItem
End function
Public Function RemoveFromBack()x
Dim removeItem as Variant
Dim current as ClistNode
If IsEmpty() then
Msgboc list is empty
RemovefromBack=Null
Exit function
End if
RemoveItem=mLastNode.Data
If mFirstNode Is mLastNode then
Set mFirstNode=nothing
Set mLastNode=Nothing
Else
Set current=mFirstNode
While Not current.NextNode Is mLastNode
Set current=current.NextNode
Wend
Set mLastNode=current
Current.NextNode=nothing
End if
RemoveFromBack=removeItem
End function
Public property Get Iterator() as variant
Dim iter as ClistIterator
Set iter=New ClistIterator
Iter.StartNode=mFirstNode
Set Iterator=iter
End property


عملکرد روال InsertAtFront :
a – فراخواني IsEmpty براي تعيين خالي بودن ليست
b – اگر ليست خالي باشد mFirstNode و mLastNode به New ClsitNode اشاره مي کنند .
c – اگر ليست خالي نباشد گره جديد توسط اشاره دادن tempNode به اولين گره ليست و سپس اشاره دادن mFirstNode به گره New ClsitNode و سپس اشاره دادن mFirstNode.NextNode به tempNode ساخته مي شود .
d – تنظيم mFirstNode.Data با مقدار مورد نظر
عملکرد روال InsertAtBack :
a – فراخواني IsEmpty براي تعيين خالي بودن ليست
b – اگر ليست خالي باشد mFirstNode و mLastNode به New ClsitNode اشاره مي کنند .
c – اگر ليست خالي نباشد گره جديد توسط اشاره دادن tempNode به آخرين گره ليست و سپس اشاره دادن mLastNode به گره New ClsitNode و سپس اشاره دادن tempNode.NextNode به mLastNode ساخته مي شود .
d – تنظيم mLastNode.Data با مقدار مورد نظر
عملکرد روال RemoveFromFront :
a – اگر ليست خالي باشد Null برگشت داده مي شود .
b – اگر ليست خالي نباشد داده mFirstNode به removeItem اختصاص داده مي شود .
c – اگر ليست فقط يک گره داشته باشد mFirstNode و mLastNode با Nothing مقدار دهي مي شوند و گره از ليست حذف مي شود .
d – اگر گره بيش از يک عضو داشته باشد mFirstNode برابر mFirstNode.NextNode مي شود .
e – مقدار removeItem برگشت داده مي شود .
عملکرد روال RemoveFromBack :
a – اگر ليست خالي باشد Null برگشت داده مي شود .
b – اگر ليست خالي نباشد داده mLastNode به removeItem اختصاص داه مي شود .
c – اگر ليست يک گره داشته باشد mFirstNode و mLastNode با Nothing مقدار دهي مي شوند و گره از ليست حذف مي شود .
d – اگر ليست بيش از يک گره داشته باشد متغير current برابر mFirstNode مي شود . سپس با استفاده از current روي گره هاي ليست حرکت مي کنيم تا به گره اي برسيم که به آخرين گره اشاره مي کند . سپس mLastNode را به گره اي که current به آن اشاره مي کند قرار مي دهيم و مقدار current.NextNode را Nothing مي کنيم تا بعنوان آخرين گزه ليست معرفي شود .
e – مقدار removeItem برگشت داده مي شود .

3 – کلاس ClistIterator : اين کلاس براي حرکت روي گره هاي ليست و دستکاري هر گره بکار مي رود . از حرکت کننده ها براي چاپ ليست و يا انجام دادن عملي بر روي هر عضو Clist مي توان استفاده کرد . اين کلاس داراي دو متغير از نوع ClistNode به نامهاي mBookmark و mFirstNode است . متغير mFirstNode به اولين گره در Clist اشاره مي کند و متغير mBookmark موقعيت فعلي حرکت کننده بر روي Clist را نشان مي دهد . روال Property Let StartNode اين دو متغير را مقدار دهي اوليه مي کند . تابع NextItem اگر مقدار mBookmark برابر Null باشد ، Null برگشت مي دهد و در غيراينصورت مقدار tempData را برابر mBookmark.Data و مقدار mBookmark را برابر mBookmark.NextNode قرار مي دهد . تابع HasMoreItems اگر ليست داراي چندين عضو باشد True برمي گرداند . روال ResetBookmark حرکت کننده را به ابتداي ليست منتقل مي کند .


Private mBookmark as ClistNode
Private mFirstNode as ClistNode
Public Property Let StartNode(Byval vNewValue as variant)x
Set mFirstNode=vNewValue
Set mBookmark=mFirstNode
End property
Public function NextItem()x
Dim tempData as varaint
If mBookmark Is nothing then
NextItem=Null
Else
TempData=mBookmark.Data
Set mBookmark=mBookmark.NextNode
NextItem=tempData
End if
End function
Public function HasMoreItems() as boolean
HasMoreItems=IIf(Not mBookmark Is nothing,True,False)x
End function
Public sub ResetmBookmark()x
MBookmark=mFirstNode
End sub


در بخش سوم نمونه برنامه ای را با استفاده از اين کلاسها خواهيم ساخت .

نویسنده: مهرداد راهی ׀ تاریخ: شنبه سوم آذر 1386 ׀ موضوع: ׀

ايجاد ساختارهاي داده اي در ويژوال بيسيک - بخش اول

ايجاد ساختارهاي داده اي در ويژوال بيسيک - بخش اول

مقدمه :

ساختارهاي داده اي از نظر تعداد اعضا به دو دسته استاتيک و ديناميک تقسيم مي شوند . ساختارهاي استاتيک مثل آرايه هاي يک بعدي و آرايه هاي دو بعدي ، تعداد اعضاي آنها در زمان طراحي برنامه مشخص مي شود و در طول اجراي برنامه ثابت است اما تعداد اعضاي ساختارهاي داده اي ديناميک در طول اجراي برنامه تغيير مي کند . ليست پيوندي ( LinkList ) ، پشته ( Stack ) ، صف ( Queue ) و درختهاي باينري ( Tree Binary) ، نمونه هايي از ساختارهاي داده اي ديناميک هستند .
ليست پيوندي شامل مجموعه اي از عناصر داده اي است که اضافه و حذف اعضا در هر جاي ليست ممکن است .
پشته يک ساختار داده اي مهم در کامپايلرها و سيستم هاي عامل است که عمل اضافه و حذف عناصر از ابتداي آن انجام مي شود .
صف يک ساختار داده اي است که عمل اضافه کردن از انتها و عمل حذف کردن از ابتداي آن انجام مي شود .
درختهاي دودويي براي جستجوي بسيار سريع ، ذخيره سازي داده ها و کامپايل عبارات استفاده مي شوند .

نوع داده Variant :

نوع داده variant براي متغيرهايي بکار مي رود که بطور صريح نوع آنها تعريف نشده است مثال :
Dim value As Variant
اين نوع داده مي تواند هر نوع داده اي را در خود ذخيره کند . همچنين براي ايجاد ساختارهاي داده اي مثل ليست هاي پيوندي ، صف ، پشته و درخت مناسب است .
نوع داده موجود در variant مي توان توسط توابع VarType و TypeName تعيين کرد . تابع VarType يک مقدار صحيح برمي گرداند که نشان دهنده نوع ذخيره شده در variant است .
مثال :
Dim value as Variant
value=”Hello”x
در اينصورت مقدار بازگشتي ( VarType( value برابر 4 خواهد بود .
تابع TypeName يک رشته برمي گرداند که نشان دهنده نام نوع داده ذخيره شده در variant است .

اخذ حافظه بطور ديناميک Dynamic Memory Allocation :

براي ايجاد و نگهداري ساختارهاي داده اي ديناميک بايستي در هنگام اجراي برنامه بتوان فضاي بيشتري براي نگهداري داده هاي جديد بدست آورد . با استفاده از کلمه کليدي New مي توان در ويژوال بيسيک حاقظه ديناميک گرفت :
Set NewNode=New ListNode
که ListNode يک شي از ساختار داده اي مورد نظر ماست .

کلاسهاي خود ارجاعي :

کلاس خودارجاعي نوعي کلاس است که داراي يک اشاره گر ( Pointer ) به يک شي از همان نوع کلاس باشد . براي مثال اگر کلاس ما به اسم ClistNode باشد و متغير زير را در آن تعريف کنيم ، اين کلاس يک کلاس خود ارجاعي است :
Private mNextNode as ClistNode
از mNextNode براي لينک دادن اعضاي يک ساختار داده اي ديناميک بهم استفاده مي شود ( بعبارت ديگر گره زدن يک شي از کلاس ClistNode به يک شي ديگر از همان کلاس ) . شي هاي خودارجاعي مي توانند به همديگر لينک شوند و ساختارهاي داده اي مثل ليست پيوندي ، صف ، پشته و درخت را ايجاد کنند .
شکل زير دو شي خود ارجاعي را نشان مي دهد که بصورت يک ليست بهم لينک شده اند . عبارت NULL بدين معنا است که شي خودارجاعي به شي ديگري اشاره نمي کند ( Nothing ) و نشان دهنده انتهاي ساختار داده است .

نویسنده: مهرداد راهی ׀ تاریخ: شنبه سوم آذر 1386 ׀ موضوع: ׀

کار با فايل در ويژوال بيسيک - بخش سوم

کار با فايل در ويژوال بيسيک - بخش سوم

ساير عمليات کار با فايل :

۱ - حذف فايل : برای حذف يک يا چند فايل از دستور Kill استفاده می شود :
Kill "C:\Temp\MyFile.txt"x
Kill "C:\Temp\*.txt"x

۲ - انتقال فايل : برای انتقال يک فايل از يک دايرکتوری به دايرکتوری ديگر از دستور Name استفاده می شود . مبدا و مقصد بايستی روی يک درايو باشند . اگر دايرکتوری مبدا و مقصد يکی باشد فايل تغيير نام داده می شود :
Name "C:\Temp\File1.txt" To "C:\Temp2\File2.txt"x

۳ - کپی کردن فايل : برای کپی کردن يک فايل از يک دايرکتوری به دايرکتوری ديگر از دستور FileCopy استفاده می شود :
FileCopy "\File1.txt\ To "C:\Temp\File2.txt"x

۴ - بدست آوردن تاريخ و زمان آخرين تغيير فايل و يا زمان ايجاد فايل : برای اين کار از دستور FileDateTime استفاده می شود . ابتدا بايستی يک متغير از نوع Variant تعريف کرده و سپس توسط اين دستور تاريخ و زمان موردنظر را استخراج کنيم :
Dim FileInfo As Variant
FileInfo=FileDateTime("C:\Temp\MyFile.txt")x

۵ - استخراج طول فايل : برای بدست آوردن طول يک فايل بر حسب بايت از دستور FileLen استفاده می شود :
FileSize=FileLen("C:\MyFile.txt")x

۶ - تغيير صفت يک فايل : برای تغيير صفت يک فايل از دستور SetAttr استفاده می شود . پارامترهای اين دستور عبارتند از :
0 : فايل معمولی
2 : فايل مخفی
4 : فايل سيستمی

SetAttr FileNumber,FileAttrib

مقابله با خطاهای کار با فايل :

در زمان کار با فايلهای احتمال زيادی وجود دارد که خطا بوجود آيد . بنابراين بايستی در زمان کار با فايلها در صورت ممکن از روتينهای مقابله با خطا استفاده کنيم . شايع ترين خطاهای کار با فايل عبارتند از :

۵۲ : شماره يا نام فايل صحيح نيست
۵۳ : فايل پيدا نشد
۵۴ : حالت فايل صحيح نيست
۵۵ : فايل قبلاً باز شده
۵۸ : فايل از قبل وجود دارد
۵۹ : طول رکورد صحيح نيست
۶۱ : ديسک پر است
۶۲ : عبور از انتهای فايل
۶۳ : شماره رکورد صحيح نيست
۷۰ : دسترسی ممنوع است
۷۱ : ديسک آماده نيست
۷۶ : مسير پيدا نشد

در هنگام مقابله با خطا بهتراست از يک ساختار Select-Case استفاده کنيد :
Select Case Err
Case 71
MsgBox "Drive is Not Ready"x
.
.
.
End Select

نویسنده: مهرداد راهی ׀ تاریخ: شنبه سوم آذر 1386 ׀ موضوع: ׀

کار با فايل در ويژوال بيسيک - بخش دوم

کار با فايل در ويژوال بيسيک - بخش دوم


خواندن از فايل :

1 - دستور Input : توسط دستورهای Input و Line Input می توان محتوای فايلهای متنی و باينری را خواند .
دستور Input به دو صورت بکار می رود :
Input #Filenumber,ReadData
ReadData=Input(Charnum,Filenumber)x
دستور اول کل يک فايل را خوانده و در متغير ReadData قرار می دهد . دستور دوم ، تعداد Charnum بايت از فايلی با شماره Filenumber را خوانده و در متغير ReadData قرار می دهد .
اين دو دستور تمام کاراکترهای موجود در فايل را می خوانند . برای اينکه بتوان فايل را خط به خط خواند ، از دستور Line Input استفاده کنيد :
Line Input #Filenumber,ReadData
البته از دستور Line Input بيشتر برای خواندن فايلهای متنی استفاده می شود زيرا ممکنست در فايل باينری هيچ کاراکتر انتهای خط ( CRLF ) وجود نداشته باشد و يکباره کل فايل خوانده شود .

۲ - دستور Get : از اين دستور برای خواندن فايلهای باينری با دسترسی تصادفی ( Random Access ) استفاده میشود :
Get #Filenumber,[Recordnum%],ReadData
اين دستور رکورد شماره Recordnum را از فايلی با شماره Filenumber می خواند و در متغير ReadData قرار می دهد . علامت کروشه نشان می دهد که پارامتر Recordnum اختياری است و در صورتيکه ذکر نشود داده ها از رکورد بعدی فايل ( جائيکه اشاره گر فايل آنجا قرار دارد ) خوانده می شوند .

نوشتن در فايل :

۱ - دستور Print : توسط اين دستور می توان اطلاعاتی را در فايل قرار داد :
Print #FileNumber,WriteData
دستور فوق محتويات متغير WriteData را در فايلی با شماره FileNumber می نويسد . بوسيله دستور Print می توان اطلاعات را بصورت خط به خط در فايل نوشت برای مثال :
Print #1,"Hello Visual Basic"+Vbcrlf
عبارت Vbcrlf نشان دهنده کاراکتر انتهای خط ( CRLF ) در ويژوال بيسيک می باشد .

۲ - دستور Put : اين دستور برای نوشتن داده ها در فايلهای باينری با دسترسی تصادفی بکار می رود :
Put #FileNumber,[Recordnum],WriteData
اين دستور محتويات متغير WriteData را در رکورد شماره Recordnum قرار می دهد .

تعيين محل رکورد در فايلهای با دسترسی تصادفی :

برای منتقل کردن اشاره گر فايل به يک رکورد در يک فايل باينری با دسترسی اتفاقی ، از دستور Seek استفاده می شود . اين دستور محل يک بايت را در فايل می گيرد و اشاره گر فايل را در آنجا قرار می دهد بنابراين دستورات Put و Get می توانند با اين رکورد کار کنند :
Seek #FileNumber,RecordNumber

تشخيص انتهای فايل :

برای اينکه متوجه شويم به انتهای يک فايل رسيده ايم از دستور EOF استفاده می کنيم . اين دستور يکی از مقادير True يا False را بر می گرداند که نشان می دهد به انتهای فايلرسيده ايم يا نه . از اين تابع در حلقه های Do-While استفاده می شود :
Do While Not (EOF(FileNumer))x
.
.
.
Loop
حلقه فوق تا زمانيکه فايل موردنظر به انتها نرسيده باشد اجرا خواهد شد .

بدست آوردن طول يک فايل :

بوسيله دستور LOF می توان طول محتويات يک فايل را بدست آورد :
FileSize=LOF(FileNumber)x

بدست آوردن محل اشاره گر فايل :

توسط دستور Loc می توان محل جاری اشاره گر فايل را بدست آورد . اجرا شدن اين دستور محل اشاره گر را تغيير نمی دهد :

FilePosition=Loc(FileNumber)x

نویسنده: مهرداد راهی ׀ تاریخ: شنبه سوم آذر 1386 ׀ موضوع: ׀

کار با فايل در ويژوال بيسيک - بخش اول

کار با فايل در ويژوال بيسيک - بخش اول

مقدمه

بعلت عدم وجود اشاره گر در ويژوال بيسيک عمليات کار با فايلها در آن نسبتاً ساده می باشد .
بطور کلی فايلها بر دو نوع هستند :
1 - فايلهای متنی Text File : اين فايلها فقط شامل کاراکترهای اسکی و برخی کاراکترهای خاص مانند انتهای خط و انتهای فايل هستند .
۲ - فايلهای باينری Binary File : شامل هر نوع کاراکتری می توانند باشند و کاربردهای گسترده ای دارند مانند بانک های اطلاعاتی ، فايلهای اجرائی ، فايلهای گرافيکی و غيره
ويژوال بيسيک می تواند با هر دو نوع فايل کار کند .

چگونگی باز کردن فايلها

قبل از اينکه بتوان عمليات ورودی/خروجی را روی يک فايل انجام داد ابتدا بايستی آنرا باز کرد . باز کردن فايلها در ويژوال بيسيک توسط دستور Open انجام می شود . فرمت کلی اين دستور بصورت زير است :


Open filename [For mode] [Access access][lock] As [#]filenumber [Len=reclen]x


[ پارامترهای داخل کروشه اختياری هستند . ]
filename نام فايلی است که می خواهيم آنرا باز کنيم .
mode حالت باز کردن فايل است . اين حالتها عبارتند از :
- Input : فايل بعنوان ورودی باز می شود .
- Output : فايل بعنوان خروجی باز می شود .
- Binary : فايل از نوع باينری باز می شود .
- Append : فايل طوری باز می شود که بتوان به انتهای آن چيزی اضافه کرد .
- Random
access نوع دسترسی به فايل را مشخص می کند . انواع دسترسيها عبارتند از :
- Read : خواندن فايل
- Write : نوشتن در فايل
- ReadWrite : خواندن و نوشتن فايل
lock نوع دسترسی ساير برنامه ها به اين فايل را مشخص می کند . انواع دسترسيها عبارتند از :
- Shared : دسترسی اشتراکی
- Lock Read
- Lock Write
- Lock Read Write
filenumber عددی است که ويژوال بيسيک از آن برای دسترسی به فايل استفاده می کند .اين عدد بايستی برای هر فايل منحصر بفرد و بين ۱ تا ۵۱۱ باشد . برای بدست آوردن اولين شماره آزاد می توان از تابع FreeFile استفاده کرد .
reclen :طول بافر فايل است . اين عدد بايستی از ۳۲۷۶۷ کو چکتر باشد .

در صورتی که فايلی که توسط filename مشخص شده وجود نداشته و فايل برای Append ، Binary ، Output و يا Random باز شده باشد در اينصورت يک فايل جديد با اين نام ساخته می شود .
در صورتی که فايل بصورت باينری باز شده باشد پارامتر Len ناديده گرفته می شود .

چگونگی بستن فايل

پس از پايان کار با فايل برای بستن آن از دستور Close استفاده می کنيم . فرمت اين دستور بصورت زير است :

Close #filenumber


دستور Close بدون هيچ پارامتری تمام فايلهای باز را می بندد .

کار با دايرکتوری

۱ - گرفتن Dir : توسط دستور Dir می توان نام فايلهای موجود در يک دايرکتوری را بر اساس پارامترهايي که به آن می دهيم پيدا کنيم . برای مثال :


Myfile=Dir$("c:\text\*.txt)"


دستور فوق نام اولين فايل موجود در دايرکتوری C:\TEXT را که پسوند آنها txt باشد در متغير Myfile قرار می دهد . اگر دستور فوق را بدون پارامتر مجدداً اجرا کنيم نام دومين فايل برگرداننده می شد و الی آخر
Dir دارای يک پارامتر اختياری است که نوع فايلهای مورد نظر را نيز می توان با آن مشخص نمود . مثال :


Myfile=Dir$("c:\text\*.txt",vbNormal)


مقادير ممکن اين پارامتر عبارتند از :
vbNormal ، vbHidden ، vbSystem ، vbDirectory
۲ - تغيير دايرکتوری : برای تغيير دايرکتوری از دستور ChDir استفاده می شود مثال :


ChDir "c:\windows\system32"


۳ - تغيير درايو : برای تغيير درايو از دستور ChDrive استفاده می شود مثال :


ChDrive "E:"


۴ - ساخت دايرکتوری : برای ايجاد دايرکتوری جديد از دستور MKDir استفاده می شود مثال :


MKDir "c:\MyFolder"


۵ - حذف دايرکتوری : برای حذف دايرکتوری از دستور RmDir استفاده می شود مثال :


RmDir "C:\MyFoler"

نویسنده: مهرداد راهی ׀ تاریخ: شنبه سوم آذر 1386 ׀ موضوع: ׀

قسمت دوم ساخت اولین برنامه

قسمت دوم
ساخت اولین برنامه
برای درک آسان بودن نرم افزار بیسیک
الان می خواهم برایتان یک برنامه ساده بنویسم که فقط با چند خط ساده نوشته شده است .
چون الان تازه اول کار هستیم از توابع و کارهای دیگرش شروع نمی کنم.
ابتدا 2 عدد Taxtboxگزاشته از جعبه ابزار
کد زیر را در Text1 قرار داده.


If Text1.text="Abolfazl" Then
Text2.text="Eimani"
End If


کد بسیار راحتی بود.
خط اول گفتیم که اگر در Text1 نوشتند Abolfazl
د خط دوم نوشتیم در Text2 بنویسد Eimani
و در آخر گفتیم پایان
درک کد بالا باید آسان باشد.
ما از دستور If استفاده کردیم که در درسهای آینده خواهم گفت.
دستور بالا يك آموزش بود براي اينكه به شما نشان بدهيم كه ويژوال بيسيك چه قدر آسان مي باشد.

معرفی بری فراخوانی کامپننت ها یا شیئی ها که در قسمت toolbar میتوانید دید.
البطه خودتان هم می توانید چنین شیئی یا کامپوننت های بسازید ولی الان وقتش نیست در قسمت های بعدی آموزش می دهم.
با زدن کلید ctrl+t یا از پنجره projectبر روی coomponntes کلیک کرده .
پنجره componntes قابل مشاهده است. پنجره control کنترل ها یا کامپوننت های از قبل تعریف شده برای کار است که با کلید بر روی هر کدام اعمال خواصی را انجام می دهد.
و با کلیک بر روی browse..امکان انتخاب از داخل هارد را امکان پذیر می باشد.
فرمت این کامپوننت های ocxمی باشد.
insertabel قسمت مخصوص کامپوننت های برنامه های مختلف می باشد . مانند ماکرومدیا فلش و.....
که با انتخاب هر کدام می توانید مثالا می خواهید یک فایل فلش را در برنامهه خود بگزارید. به وسیله این کامپوننت های امکان پذیر است.مانند گزاشتن فیلم. صدا. تصاویر متحرک و ...... . . . .
که با انتخاب هر کدام در کنار toolbar نمایان می شود

نویسنده: مهرداد راهی ׀ تاریخ: شنبه سوم آذر 1386 ׀ موضوع: ׀

آشنایی با ویژوال بیسیک 6

آشنایی با ویژوال بیسیک 6
تاریخچه ویژال بیسیک.
با شناختی که از تاریخچه ویژوال بیسیک بدست می آورید راحت تر می توانید از آن استفاده کنید.
شرکت مایکروسافت ویژوال بیسیک را براساس یک زبان برنامه نویسی به نام بیسیک که برای مبتدیان نوشته شده است ساخت.
زبان ویژوال بیسیک بیشتر از 35 سال به اشکال مختلف رایج بوده. در واقع طراحان این زبان می خواستند یک زبان برنامه نویسی برای استفاده مبتدیان طراحی کنند.برنامه نویسان جدید می توانند با استفاده ازبیسیک به سرعت به شرع برنامه نویسی های حرفه ای با زبان های cobol .fortran . assembler
در مقایسه به بیسیک کار بیشتری نیاز داشت.
طبیعت بصری ویژوال بیسیک
دیدید که ویژال بیسیک 6 چیزی بیشتر از یک زبان برنامه نویسی است. از ویژوال بیسیک در نام آن visualبه معنای بصری یا محیط نمایشی . است.
کار با ویژال بیسیک 6
در اولین بار که برنامه را باز می کنید با پنجره new project روبه رو می شوید در این قسمت
نوع فورم خود را انتخاب کرده ماننده activex|standardو....
این پنجره شامل 3 قسمت بوده
New:در این پنجره امکان انتخاب فورم مورد نظر شما امکان پذیر می باشد.
Existing:در این پنجره امکان انتخاب project های مختلف که در مکانهای مختلف ذخیره یا... امکان انتخاب می باشد.
Recent:در این قسمت هر projectرا که ذخیره می کنید به صورت دسته ای جمع می شود حالا یک فایلی
در درایو Dباشد حالا چه در درایو c.
DON.T SHOW THIS DIALOG IN THE FUTURE
این قسمت جلو گیری از باز شدن پینجره NEW PRIJECT می باشد.
HELP:از این قسمت وقتی امکان استفاده می باشد که نرم افزار MSDN را نصب کرده باشید.
معرفی قسمت های بیسیک.
نوار ابزار:TOOLBAR:نوار ابزار VB زیر منو قرار دارد. ویژال بیسیک کلا چهار نوار ابزار دارد:
STANDARD:این نوار ابزار زیر منو ظارهر است و پیش فرض است.
DEBUG:وقتی از ابزارهای رفع اشکال برای ردیابی و اصلاح اشکالات استفاده می کنید. این نوار ابزار ظاهر می شود.
EDIT:این نوار ابزار برای تنظیم کردن اشیاء بر روی فرم می باشد
FORM EDITOR:این نوار ابزار برای تنظیم کردن اشیاء بر روی فرم می باشد.
جعبه ابزار:TOOLBOX:
در این پنجره تمامی شئعی های مختلف برای کار بر روی فرم هستند و حتا امکان اضافه کردن به این پنجره ها می باشد.
پنجرهPROJECT:در این پنجره فرم های انتخبی شما با هر گروه و هر فرم مشخص شده است.
پنجرهPROPERTISE:
این پنجره امکان تنضیمات لازم برای هر شیئی را مشخص می کنید.

نویسنده: مهرداد راهی ׀ تاریخ: شنبه سوم آذر 1386 ׀ موضوع: ׀

يك Paint ساده

1-- یک عدد PictureBox در صفحه قرار بده و اسم اونرو P1 بذار. (برای رسم خطوط و سایر موارد) بعد در قسمت Option--Appearance اون رو روی حالت Flat-0 قرار میدین!

2-- یک عدد Label با اندازه 255.255 قرار میدی و اسم اونرو lblc قرار میدی .از اون به تعداد رنگ ها (16) کپی
میکنی!!
درصورتی که دستگاه پیغام داد شما اون رو YES میکنی تا تمام اونها با هم Array بشن!

3-- یک label دیگه با نام lblc1 قرار میدی.برای نمایش رنگ فعلی!

4-- بعد شما باید یک Common Dialog قرار بدی و اسم اونو cmdl1 بذاری.

5-- 4 تا Option هم میذاری.

 

Dim oldx, oldy, cl

Private Sub Form_Load()
cl = 0: lblc1.BackColor = QBColor(cl)
For i = 0 To 15
lblc(i).BackColor = QBColor(i)
Next i
End Sub

Private Sub lblc_Click(Index As Integer)
cl = Index
lblc1.BackColor = QBColor(cl)
End Sub

Private Sub lblc1_Click()
p1.Line = QBColor(i)
End Sub

Private Sub Option1_Click()
p1.DrawWidth = 1
End Sub

Private Sub Option2_Click()
p1.DrawWidth = 2
End Sub

Private Sub Option3_Click()
p1.DrawWidth = 3
End Sub

Private Sub Option4_Click()
p1.DrawWidth = 5
End Sub

Private Sub p1_MouseDown(Button As Integer, Shift As Integer, X As Single, Y As Single)
oldx = X
oldy = Y
End Sub

Private Sub p1_MouseMove(Button As Integer, Shift As Integer, X As Single, Y As Single)
If Button = 2 Then
n = 400
For i = 1 To 10
t = Rnd * 2 * 3.14
r = Int(Rnd * n)

X1 = r * Sin(t)
Y1 = r * Cos(t)
p1.PSet (X + X1, Y + Y1), lblc1.BackColor
Next i
End If
If Button = 1 Then
p1.Line (oldx, oldy)-(X, Y), lblc1.BackColor
oldx = X
oldy = Y
End If

End Sub

نویسنده: مهرداد راهی ׀ تاریخ: جمعه دوم آذر 1386 ׀ موضوع: ׀

باز كردن يك فايل متني

حال فرض كنيد ميخواهيم متن عنصر Text1 ما برابر فايلي متني با نام TextDoc1 با فرمت TXT و در درايو G: باشد.  براي اين كار از عنصر فايل سيستم FileSystemObject استفاده ميكنيم. براي افزودن اين عنصر از منوي Project گزينه ي References... را انتخاب نموده و در ليست موجود گزينه ي Microsoft Scripting Runtime را علامت زده و دكمه ي Ok را ميزنيم. با اين كار عنصر فايل سيستم به كتابخانه ي منابع برنامه ي ما افزوده شد. حال براي تعريف يك متغير از چنين نوعي مينويسيم Dim vfso As New FileSystemObject كه vfso نام متغير ما بوده و ميتواند هر نام دلخواهي باشد. اكنون براي باز نمودن اين فايل متني و خواند تمامي متن آن و نمايش آن در عنصر Text1 مينويسيم Text1.Text = vfso.OpenTextFile("g:\TextDoc1.txt").ReadAll كد برنامه نيز بصورت زير خواهد بود:

Private Sub Form_Load()

Dim vfso As New FileSystemObject

Text1.Text = vfso.OpenTextFile("g:\TextDoc1.txt").ReadAll

End Sub

نویسنده: مهرداد راهی ׀ تاریخ: جمعه دوم آذر 1386 ׀ موضوع: ׀

Run کردن یک فایل اجرایی

برای Run کردن یک فایل اجرایی در وی بی بایستی از تابع ShellExecute استفاده نمایید . نحوه declare کردن آن بصورت زیر است :

Private Declare Function ShellExecute Lib "shell32.dll" Alias "ShellExecuteA" (ByVal hwnd As Long, ByVal lpOperation As String, ByVal lpFile As String, ByVal lpParameters As String, ByVal lpDirectory As String, ByVal nShowCmd As Long) As Long

حال فرض کنید می خواهید در مسیر D:\TestShell\ فایلی به اسم Test.exe را توسط برنامه تان اجرا کنید . کد زیر بدین منظور نوشته شده است :

     Call ShellExecute(Me.hwnd, vbNullString, "D:\TestShell\Test.exe", "", "", SW_SHOWNORMAL)

نویسنده: مهرداد راهی ׀ تاریخ: جمعه دوم آذر 1386 ׀ موضوع: ׀

فشرده شدن یا رها شدن یک کلید را تشخیص دهید.

استفاده از یک تابع کتابخانه ای به اسم  GetAsyncKeyState موجود در کتابخانه user32.dll . این تابع ، فشرده شدن یا رها شدن یک کلید را تشخیص می دهد . نحوه declare کردن این تابع بصورت زیر است :

Private Declare Function GetAsyncKeyState Lib "user32" (ByVal vKey As Long) As Integer

حال در برنامه تان یک timer قرار داده و در event آن کد زیر را قرار دهید :

    For i = 1 To 255
        results = 0
        results = GetAsyncKeyState(i)
        If results <> 0 Then
           Msgbox(Chr(i))
        End If
    Next

نویسنده: مهرداد راهی ׀ تاریخ: جمعه دوم آذر 1386 ׀ موضوع: ׀

فرم بدون Caption را Drag كنيد

فرم بدون Caption را Drag كنيد

برای دیدن سورس کد به ادامه مطلب بروید


ادامه مطلب
نویسنده: مهرداد راهی ׀ تاریخ: پنجشنبه یکم آذر 1386 ׀ موضوع: ׀

ُShell

 مي توانيد از متدهاي زيادي که اين شيء در اختيارتان مي گزارد استفاده کنيد . از جمله اين متد هاي اجرا Internet Explorer , Outlook , اجراي آيتم هاي موجود در کنترل پنل , نمايش پنجره جستجوي ويندوز و کلي کارهاي مفيد ديگه . به مثالهاي زير توجه کنيد :

برای دیدن مثال ها به ادامه مطلب بروید


ادامه مطلب
نویسنده: مهرداد راهی ׀ تاریخ: پنجشنبه یکم آذر 1386 ׀ موضوع: ׀

فرم Always on Top

چگونه مي توان در ويژوال بيسيک فرمي ساخت که Always on Top (يعني هميشه روي همه ي فرم ها قرار بگيره) باشد ؟

برای دیدن سورس و نحوه کار به ادامه مطلب بروید


ادامه مطلب
نویسنده: مهرداد راهی ׀ تاریخ: پنجشنبه یکم آذر 1386 ׀ موضوع: ׀

جلوگیری از اجراي مجدد برنامه

خوب با استفاده از تيکه کد زير در فرم اصلي برنامه تان مي توانيد از اجراي مجدد (Duplicate) برنامه جلوگيري کنيد

برای دیدن تیکه کد به ادامه مطلب بروید


ادامه مطلب
نویسنده: مهرداد راهی ׀ تاریخ: پنجشنبه یکم آذر 1386 ׀ موضوع: ׀

متد Shell

متد shell


با متد shell می توان برنامه های exe را در وی بی 6 اجرا کرد فایلهای با پسوند .cpl مربوط به اپلت های control panel را چطوری می توان اجرا کرد ؟

 

برای دیدن متن کامل روی ادامه مطلب کلیک کنید


ادامه مطلب
نویسنده: مهرداد راهی ׀ تاریخ: پنجشنبه یکم آذر 1386 ׀ موضوع: ׀

درباره وبلاگ

سلام...خوش اومدید
آموزش برنامه نویسی با وی بی 6
من مهرداد هستم 20 ساله
-------------------------------
با تشکر دوست شما
My ID : Artam_Shan


لینکدونی

جستجوی مطالب


طراحي و پياده سازي توسط مهرداد راهی