.persianblog'" >


جادوي ويژوال بيسيك

لينك سايتها IranDevelopers
Barnamenevis
CodeProject
DirectX4VB
abstractVb
CodeGuru
MaxCode
Mentalis
VbCode
DevX
Tur2
mrizvandi


برنامه نويسي
Palize Programming
Viusal Basic World
Visual C++ 6
iDevCenter
Clickonline
Sheidaian
VbWorm
Java4U
Sahere
mvb
CSharpBlog


متفرقه
DeldadehCrack
PersiaCrackers
PersianYahoo
Weblogs List
Macromedia
SadegHack
doostan82
banderas
iman-prs
Azemat
art7



جادوي ويژوال بيسيك


چهارشنبه ۱٩ اردیبهشت ،۱۳۸٦

جواب سوالات

مجتبی عزیز برای چاپ اطلاعاتتون از ابزار مناسب اون استفاده کنید. برای این کار اطلاعاتی را که می خواهید چاپ کنید را در ActiveReport یا CrystalReport نمایش بدید. این نرم افزارها امکانات چاپ کاملی رو در اختیارتون قرار میدن. ActiveReport ساده تره ولی CrystalReport خیلی کامله و امکانات زیادی داره.

- - - -

 

اشکان عزیز برای ساخت فایلهای Help باید از نرم افزارهای خاص این کار استفاده کنید. نرم افزارهای زیر رو بهتون پیشنهاد می کنم:

 

HtmlToHelp 

RoboHelp

HelpTwin

که به نظر خودم Macromedia RoboHelp از همشون کاملتره.

- - - -

 

حسین عزیز اگه منظورتون از صفحه، فرم است شما می تونید یه بار اونو طراحی کنید و بعد هر بار که بخواید یه متغیر از نوع اون فرم تعریف کنید و متد Show اونو فراخوانی کنید. هر چند بار که بخواید.

 

- - - -

 

بهنام عزیز شما هم میتونید مثل بقیه دوستان سوالاتتونو تو همین بخش نظرات مطرح کنید.

 

- - - -

 

آرش جان بگو عزیزم چیکارم داری؟

 

از کدی که برای دوستاتون فرستادی ممنونم. اون کد رو به همراه توضیحاتتون همینجا میذارم(برای VB.NET):

"این کدی که تو قسمت پایین براتون گزاشتم برای زمانی هستش که شما می خوایید کاربرتون مثلا با زدن دکمه اینتر به تکس باکس بعدی هدایت بشه
فقط باید حواستون به ترتیب مشخص شده تو قسمت
TabIndex
باشه.
برای تنظیم کردن
TabIndex می تونید از منوی View گزینه TabOrder رو انتخاب کنید"

 

Private Sub TextBox1_KeyDown(ByVal sender As Object, ByVal e As System.Windows.Forms.KeyEventArgs) Handles TextBox1.KeyDown
If e.KeyCode = Keys.Enter Then
Me.ProcessTabKey(True)
MsgBox("")
End If
End Sub 

آرش جان متاسفانه بدلیل اینکه VB یه زبان رو به انقراضه دیگه نمیشه به مطالب این وبلاگ ادامه داد.

 

- - - -

 

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

 

1-     تابع پیدا کردن تعداد یک اسم مشخص در یک آرایه ای که اسامی در آن ذخیره شده اند. فقط کافیه شما اسمهایی را که می خواید توی اون آرایه ذخیره کنید و بعد این تابعو فراخوانی کنید.

Private Function GetCountOfName(strNames() As String, strKeyName As String) As Long 

    Dim i As Integer 

    Dim iUpperIndex As Integer 

    Dim lCounter As Long 

    iUpperIndex = UBound(strNames) 

    For i = 0 To iUpperIndex 

        If Trim(strNames(i)) = Trim(strKeyName) Then 

            lCounter = lCounter + 1 

        End If 

    Next i 

    GetCountOfName = lCounter 

End Function

2-     پیدا کردن مقلوب عدد:

 

Private Function GetReverseNumber(lInputNumber As Long) As Long 

    Dim strTemp As String 

    strTemp = CStr(lInputNumber) 

    strTemp = StrReverse(strTemp) 

    GetReverseNumber = CLng(strTemp) 

End Function 

بقیه برنامه ها رو هم با یه کمی مطالعه VB می تونید به راحتی بنویسید!!!

- - - -

 

نگار عزیز برای اینکه بتونید شکل فرم را به شکل بیضی دربیارید از توابع API مربوط به Region ها استفاده کنید. می تونید از توابع API با نامهای CreateEllipticRgn استفاده کنید.

 

- - - -

 

محمد حسین عزیز اصولا مقاله Socket Programming من در مورد استفاده از کنترل WinSock است.

 

- - - -

 

امیر حسین و علی عزیز اگه می خواید برنامه نویسی رو شروع کنید بهتره برید سراغ دات نت. از بین سی شارپ یا وی بی دات نت یکی رو انتخاب کنید و شروع کنید. کتاب هم تا دلتون بخواد در این زمینه پیدا میشه به هر زبانی که بخواید.

 

- - - -

محمود عزیز که سورس بازی می خوان باید بگم که متاسفانه دیگه کار کردن روی VB فایده ای نداره و بهتره با زبانهای جدید آشنا شد و اگه می خواید سورس بازی مطالعه کنید سورس بازیهایی که با اون زبانها نوشته شدن رو مطالعه کنید.

 

 

 

جادوگر ويژوال بيسيك درساعت۱٠:٤٥ ‎ب.ظ


یکشنبه ٧ خرداد ،۱۳۸٥

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

سلام

مازيار عزيز سوال کردن که چطوری می تونن يه برنامه چت بين دو تا کامپيوتر بنويسن؟

خوب کافيه برنامه ای که می نويسيد هم Client‌باشه و هم Server. يعنی برنامتون به يه پورت گوش بده و اطلاعاتش رو به يه پورت ديگه ارسال کنه.

جادوگر ويژوال بيسيك درساعت۱۱:۱٠ ‎ب.ظ


پنجشنبه ۳۱ فروردین ،۱۳۸٥

جواب سوال فارسی کردن صفحه کليد

پويا جان شما باید از یکی از توابع API زیر (این بستگی داره به نوع نیاز شما به این کار) استفاده کنید:

ActivateKeyboardLayout

LoadKeyboardLayout

 

جادوگر ويژوال بيسيك درساعت۱۱:٥٥ ‎ب.ظ


جمعه ٢٥ فروردین ،۱۳۸٥

جواب يه سوال ساده

سلام

اينم جواب دنيا خانم:

Option Explicit

' first you should set AutoRedraw property of form to True

Private Sub Form_Load()
    Dim i As Integer 'counter for lines
    Dim j As Integer 'counter for Stars
   
    For i = 1 To 10
        For j = 1 To i
            Print "*"; ' you should add ; in the end of print line for print next Char in the same line
        Next j
        Print 'you should add empty print line for go to next line for next print
    Next i
End Sub

بزودی!!!

جادوگر ويژوال بيسيك درساعت۱۱:٠٠ ‎ب.ظ


سه‌شنبه ٢٤ خرداد ،۱۳۸٤

 

سلام

- دقیقا نمی دونم چند وقته که ننوشتم! فقط می دونم که خیلی دلم برای نوشتن تنگ شده. می خوام براتون یه داستان کوتاه تعریف کنم:

یکی بود یکی نبود. یه جادوگری بود. جادوگر ویژوال بیسیک. این جادوگر نزدیک به 7 سال بود که بی سرزمین تر از باد بود! یه وقت اینجا، یه وقت اونجا، بعضی وقتا برای تفریح، بعضی وقتا برای درس، بعضی وقتا برای کار! اواخر تعطیلات امسال هم جادوگر یه دفعه تصمیم گرفت دوباره کوچ کنه. مهاجرت سخته ولی جادوگر عادت کرده. مهاجرت همه چی رو تا مدتی بهم می ریزه ولی جادوگر عادت کرده. مهاجرت باعث دوری از از کسایی میشه که دوستشون داریم ولی جادوگر عادت کرده. مهاجرت باعث آشنایی های جدید میشه ولی جادوگر عادت کرده.

این وسط چیزی که مهمه زمانه. یه مدت لازمه تا همه چی دوباره سر و سامان بگیره.

یکی از دلایلی که تو این مدت جادوگر تو وبلاگش چیزی ننوشته اینه که فعلا همه چی بهم ریخته و وقت لازمه تا سر و سامان بگیره. دعا کنید که زودتر همه چی درست بشه! جادوگر دوست داره هر چه سریعتر پیش دوستای مجازیش برگرده.

قضه ما به سر رسید کلاغه هم به خونش رسید!!!

 

- یکی از دوستای دانشمند و فوق العاده با سواد بنده یعنی آقای تقدسی به تازگی به جرگه وبلاگ نویسا پیوسته. قبلا هم در مورد کارای این دوست عزیزم تو وبلاگ مطلب نوشتم. برای دیدن وبلاگش می تونید به آدرس http://Palizeblog.persianblog.ir سر بزنید. امین جان تو وبلاگش در مورد وبژوال بیسیک مطلب می نویسه. امین جان در زمینه ادبیات هم استاده.

 

- بعد از یه مدت تقریبا طولانی که به وبلاگ سر زدم فکر می کردم تعداد بازدید کننده ها عددی حول و حوش صفر باشه ولی وقتی دیدم هنوز تعداد قابل توجهی از دوستان عزیز از وبلاگ دیدن می کننتصمیم گرفتم با وجود مشکلات فراوان نوشتن رو دوباره شروع کنم. (البته توصیه های دوست عزیزم مهدی هم بی تاثیر نبود).

 

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

- تصمیم دارم از این به بعد علاوه بر مقاله های برنامه نویسی، پاسخ به سوالات، معرفی سایتها و وبلاگهای مفید، از اتفاقات و مسایل شرکتی که به تازگی در اون مشغول به کار شدم هم براتون بنویسم.

- به علاقمندان به ساخت بازیهای کامپیوتری پیشنهاد می کنم که حتما سری به سایت www.Persian-Designers.com بزنن. نسبت به قبل خیلی فعالتر شده و روز به روز با عضو شدن افراد علاقمند و متخصص فعالتر میشه.

 

جادوگر ويژوال بيسيك درساعت٩:٢۳ ‎ب.ظ


شنبه ۱٥ اسفند ،۱۳۸۳

گرافیک در .NET - قسمت دوم

 

سلام. قبل از هر چیزی به سوالات و پیغامهای دوستان جواب بدم.

 

امین عزیز در مورد دو TextBox مرتبط بهم سوال کردن که باید بگم سوالشون کمی گنگ بود. اما من با برداشتی که از توضیحات ایشون داشتم جواب میدم: شما می تونید از رویداد Change یا رویداد KeyPress از TextBox اول برای این کار استفاده کنید. با فشار دادن کلیدی در TextBox اول این رویداد اتفاق می افته و کد شما اجرا میشه.  حالا میمونه فقط نحوه ارتباط بین حروف و اینکه از چه تکنیکی برای این کار استفاده کنید. اگه این ارتباطها از طریق کاربر قابل اضافه شدن باشه یعنی کاربر بتونه ارتباطات جدیدی بین Text اول و Text دوم ایجاد کنه بهتره از فایلها یا Database ها استفاده کنید ولی اگه این ارتباطات بصورت ثابت باشه و فقط برنامه نویس اونها را تعیین می کنه (تعدادشون هم زیاد نباشه) می تونید از ساختمان داده هایی که در VB در اختیارتون قرار داده شده مثل آرایه ها و ساختمانها استفاده کنید.

 

دوست عزیزی به نام شانس در خونه این وبلاگ را زدن و در مورد ارتباط بین فرمها سوال کردن. این سوال سوالیه که معمولا کسانی که تازه با VB.NET آشنا شدن می پرسن ولی خوب چون آقای شانس در مورد VB سوال کردن منم تو همین VB جواب میدم.  در VB برای ارتباط بین فرمها چندین روش وجود داره اما برای کار شما بهترین روش دسترسی مستقیم به فرم اول درون فرم دوم است. این دسترسی از طریق روش معمول دسترسی با استفاده از نام کنترل و علامت نقطه است انجام پذیره فقط باید نام فرم هم بنویسید:

Form1.List1.AddItem "Test1"

 

سوال حسام عزیز در مورد تشخیص وجود Anti Virus روی یک سیستم است. من راه حل خاصی رو سراغ ندارم. برای این قبیل کارها باید از روشهای ابتکاری استفاده کرد. مثلا یکی از این روشها جستجوی اسامی AntiVirus های شناخته شده در Registry است. یکی دیگه از این راهها که علاوه بر نصب بودن AntiVirus میشه تعیین کرد که در حال اجراست یا نه، دسترسی به لیست برنامه های در حال اجرا (لیستی که در TaskManager می بینید) در ویندوز است.

 

محمد عزیز شما نگفتید که برای ساخت Setup از چه برنامه ای می خواهید استفاده کنید و از چه بانک اطلاعاتی استفاده کرده اید ولی معمولا در این شرایط باید موتور بانک اطلاعاتی مورد استفاده و همچنین Dll های مورد استفاده در برنامه تان را به پروژه Setup اضافه کنید. من لیستی از Dll های Crystal Report 8.5 را دارم که اگه کسی لازم داشت می تونم براش بفرستم. بهترین کار اینه که همه این Dll ها رو به پروژه اضافه کنید. اینطوری خیالتون راحت میشه. ضمنا نحوه تعیین مسیر بانک اطلاعاتی در صورتی که از بانک اطلاعاتی Access استفاده کرده باشید مهم است.

 

حمید جان شما لطف دارید.

 

اونایی که تازه با GDI+ آشنا شدن بهتره قبل از این مقاله یه مروری روی مقاله قبلی داشته باشن.

 

توجه داشته باشید که در این مقاله تصاویر به دلیل مشکلاتی که در نشون دادنشون در وبلاگ وجود داره حذف شدن ولی در مقاله اصلی که بصورت PDF ارائه میشه هم تصاویر هستن و هم مثالها به دو زبون C# و VB.NET ارائه میشن.

 

یادتون باشه حتما Namespace های لازم را در ابتدای برنامتون Import کنید.

 

شروع قسمت دوم مقاله گرافیک در .NET

 

مختصات:

 

در GDI+ مبدا مختصات (نقطه (0و0)) گوشه بالا چپ می باشد. به شکل زیر توجه کنید:

 

ترسیم اشکال

 

مستطیل و مربع

مستطیل یک شکل هندسی است که از چهار ضلع ساخته شده است که این اضلاع تشکیل چهار زاویه را می دهند. برای رسم مستطیل از متد DrawRectangles() شی Graphics استفاده می کنیم. حالت کلی آن به این شکل است:

 

Public Sub DrawRectangle(ByVal pen As Pen, ByVal rect As Rectangle )

 

پس از ساختن یک متغیر از نوع Rectangle آن را به عنوان پارامتر به متد DrawRectangle() می فرستیم. به مثال زیر توجه کنید:

 

Private Sub Form1_Click(ByVal sender As Object, ByVal e As System.EventArgs) Handles MyBase.Click

        Dim graph As Graphics = Me.CreateGraphics()

 

        Dim CurPen As Pen = New Pen(Color.Blue)

        Dim MyRect As Rectangle = New Rectangle(20, 20, 200, 150)

 

        graph.DrawRectangle(CurPen, MyRect)

End Sub

 

شما می توانید شی Rectangle را در داخل پرانتزهای متد DrawRectangle() بسازید. به مثال زیر توجه کنید:

 

Private Sub Form1_Click(ByVal sender As Object, ByVal e As System.EventArgs) Handles MyBase.Click

        Dim graph As Graphics = Me.CreateGraphics()

        Dim CurPen As Pen = New Pen(Color.Blue)

 

        graph.DrawRectangle(CurPen, New Rectangle(20, 20, 200, 150))

End Sub

 

توجه داشته باشید که سومین پارامتر متد سازنده Rectangle مقدار Width است و چهارمین پارامتر آن، مقدار Height. این موضوع را می توانید در شکل زیر ببینید:

 

به مثال زیر توجه کنید:

 

Private Sub Form1_Click(ByVal sender As Object, ByVal e As System.EventArgs) Handles MyBase.Click

        Dim graph As Graphics = Me.CreateGraphics()

        Dim CurPen As Pen = New Pen(Color.Blue)

 

        graph.DrawRectangle(CurPen, New Rectangle(20, 20, 200, 200))

End Sub

 

یک مربع  در حقیقت یک مستطیل است که همه اضلاع آن باهم برابرند.

 

مجموعه ای از مستطیلها

 

متد DrawRectangle برای رسم یک مستطیل بکار می رود. اگر بخواهید که در یک مرحله تعداد زیادی مستطیل رسم کنید باید از متد DrawRectangles شی Graphics استفاده کنید. این متد دو نسخه دارد که حالات کلی آنها بدین شکل می باشند:

Public Sub DrawRectangles(ByVal pen As Pen, ByVal rects() As RectangleF)
Public Sub DrawRectangles(ByVal pen As Pen, ByVal rects() As Rectangle)
 

این متد آرایه ای از شی Rectangle (یا Rectangles) می گیرد سپس به ازای هر عنصر آرایه، یک مستطیل رسم می کند. به مثال زیر و نتیجه آن توجه کنید:

 

Private Sub Form1_Click(ByVal sender As Object, ByVal e As System.EventArgs) Handles MyBase.Click

 

        Dim graph As Graphics = Me.CreateGraphics()

        Dim CurPen As Pen = New Pen(Color.Blue)

        Dim MyRects As Rectangle() = {  New Rectangle(20, 20, 100, 60), _

                                        New Rectangle(30, 50, 100, 110), _

                                        New Rectangle(40, 80, 100, 140), _

                                        New Rectangle(50, 120, 100, 170) _

                                     }

 

        graph.DrawRectangles(CurPen, MyRects)

End Sub

 

پایان قسمت دوم مقاله

 

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

http://robotics.persianblog.ir/

خوب به سلامتی Vblog هم وارد سومین سال زندگی خودش شد! خوب یا بد دو ساله تمامه که دارم تو این وبلاگ می نوسم. از موضوعات مختلف برنامه نویسی VB و VB.NET نوشتم. اگه دوستان سوالی داشتن سعی کردم جوابشون رو بدم. گاهی درد دل کردم، گاهی شعر و داستان گفتم و خیلی چیزای دیگه. دوست دارم نظراتتون رو درباره VbLog و انتظارات و پیشنهادها و انتقادها و از اینجور چیزاتون رو بدونم پس از قسمت نظرخواهی استفاده کنید و بگید!

 

 

جادوگر ويژوال بيسيك درساعت۱٢:٤٩ ‎ب.ظ


یکشنبه ٢ اسفند ،۱۳۸۳

گرافیک در .NET - قسمت اول

سلام

اول از همه ایام حسینی و روز عاشورا را به همه تسلیت عرض می کنم.

 

زندگیو هزار بالا و پایین دیگه. الان دقیقا 41  روزه که این وبلاگ Update نشده و این برای اولین باره که داره اتفاق میفته و من واقعا متاسفم. بعد از آخرین آپدیت رفتم مسافرت. یه هفته ای طول کشید بعدش به محض برگشتن یه کاری پیش اومد که به وقت زیادی نیاز داشت. بعد از سر و سامان دادن اون کار هم می خواستم بنویسم ولی نوشتنم نمیومد. وقتی که حس نوشتن بهم دست داد تصمیم گرفتم که یه جزوه آموزش GDI+  در C# درست حسابی برای سایت www.Persian-Designers.com بنویسم. همین کار رو کردم. وسطای نوشتن این جزوه بود که امیرعلی عزیز برادر دوستم فوت کرد. یه چند وقتی هم تو کف امیرعلی بودیم. حالا هم تصمیم گرفتم تا تمام شدن این جزوه مطالبی را که فعلا نوشتم رو بصورت یه سریال دنباله دار براتون تو وبلاگ بذارم البته با تبدیل به VB.NET. فعلا قسمت اول این سریال را بخونید تا بعد. خوب طبق معمول اول بریم سراغ پاسخ به پیغامها.

 

حمید عزیز نگفتید که کتاب انگلیسی می خواید یا فارسی!  کتابهای فارسی زیادی در زمینه VB تو بازار است که به نظرم بهترین اونها کتاب "آموزش VB در 21 روز" ترجمه (یا تالیف) علیرضا زارع پور است. یه Ebook فارسی هم به نام "آموزش ویژوال بیسیک در n+1 روز" تو اینترنت دیدم که با یه سرچ کوچولو می تونید پیداش کنید. اگر هم کتاب انگلیسی می خواید بگید تا بهتون معرفی کنم ولی قبلش حتما Emule رو نصب کنید. یه توصیه هم دارم! بهتره همین ابتدا سراغ .NET برید.

 

Madar2  و کورال و Asef عزیز از لطف شما ممنونم و خوشحالم که از خوندن وبلاگم لذت بردید.

 

حسام جان در مورد سوال اولتون باید بگم که در VB.NET شما باید ابتدا شی ای از نوع فرمی که می خواهید باز کنید ایجاد کرده و سپس متد Show یا ShowDialog را فراخوانی کنید. به مثال توجه کنید (این کد در Form1 نوشته شده است):

        Dim frm As New Form2

        frm.Show()

 

در مورد سوال دومتون هم باید بگم که PHP یه تکنولوژی طراحی صفحات وب بصورت Server Side است. به این معنی که کد نوشته شده در صفحات PHP سمت Server اجرا شده و نتیجه آن به Client ارسال می شود. زبان استفاده شده برای برنامه نویسی در PHP شبیه به زبان C است.

مقاله شما در زمینه Opera را هم خوندم. جالب بود. من هنوز هم از دو مرورگر IE و Opera بصورت همزمان استفاده می کنم.

 

Area جان ممنون به خاطر معرفی اون سایت. باید بررسی کنم ببینم این کار به صرفه تره یا نوشتن یه شمارنده.

 

علی جان بنده تا حالا کار Crack به اون شکل انجام ندادم ولی اگه شما مایلید می تونید این فایل را یه جایی مثل Sharemation آپلود کنید و آدرس اون رو به من بدید تا در وبلاگ اعلام کنم و اگه کسی از دوستان تونست اونو Crack کنه در اختیار بقیه هم بذاره.

 

حامد محمدی عزیز بنده از ابتدای افتتاح سایت برنامه نویس (تقریبا زمستان 81) با نام کاربری Voldemort عضو سایت برنامه نویس بودم. یه سرچ کوچولو بزنید می تونید پستهای منو ببینید. اون زمانهایی که آقای افشین پور عزیز از آلمان Ebook برای بر و بچ گیر می آورد و برای دانلود تو هاب می ذاشت. حتی یه دفعه برای خود من یه سایت رو دانلود کرده بود و بعد از فشرده کردن برام فرستاد. همون زمانهایی که اساتید خفنی مثل آقای سعید آذیش (نام کاربری S.Azish که مقام نهم بین ده نفر برگزیده مسابقه بهترین برنامه نویس انگلستان رو داشت) تو سایت فعالیت می کردن. منم بینشون می پلکیدم و ازشون چیز یاد می گرفتم. نمی دونم چی شد که یه دفعه برخوردا عوض شد، لحنها عوض شد، اهداف عوض شد. خیلیا رفتن و .... منم به دلایلی که به نظرم ذکر اونا در اینجا فایده ای نداره به این نتیجه رسیدم که دوران فعالیتم تو سایت برنامه نویس تموم شده. فقط گه کداری خبرهایی را از یکی از دوستان که در سایت فعالیت می کنند میشنوم. فکر می کنم بهتر بود به جای آپلود دوباره مقاله های وبلاگ من تو سایت برنامه نویس، لینک اونها رو می ذاشتن!!!

 

حالا بریم سر اصل مطلب.

 

معرفی GDI+

 

 

GDI+ نسل جدید GDI است و برای عملیات ترسیم در سیستمهای عامل ویندوز است. همانطور که از نام آن پیداست، GDI+ امکانات بیشتری از GDI را در اختیار برنامه نویس قرار می دهد. GDI+ به برنامه نویس اجازه می دهد تا برنامه های مستقل از سخت افزاری که در آن اجرا می شوند، بسازد. در ویندوزهای XP و 2003 بطور ذاتی GDI+ قرار داده شده است ولی در ویندوزهای دیگر باید آن را نصب کنید. مهمترین کارهایی که GDI+ انجام می دهد، عبارتند از:

  • گرافیکهای برداری : ترسیم و تغییر هندسی اشکال (خطوط، ترکیبات خطوط، اشکال چهار ضلعی و گرد) در فضا. این اشکال بصورت مجموعه ای از نقاط در یک صفحه و یا ابزار دیگر می باشند. برای استفاده از این امکانات در GDI+ کلاسهای متفاوتی در اختیار شما قرار داده شده است.
  • تصویر: امکانات زیادی برای کار با تصاویر و ترسیم آنها در یک ابزار و همچنین تغییر آنها در اختیار شما قرار داده شده است.
  • چاپ: برای کار با فونتها امکاناتی در اختیار شما قرار داده شده است.

 

 

اصول GDI+

 

برای استفاده از GDI+ شما باید از کلاسی به نام Graphics استفاده کنید.  این کلاس برای انجام عملیات ترسیم متدهای مختلفی دارد. قبل از هر ترسیمی شما باید یک متغیر از نوع Graphics تعریف کنید. برای اینکار راههای مختلفی است که نمونه هایی از آن را در اینجا مشاهده می کنید.

  • می توانید به راحتی متغیری از نوع Graphics تعریف کنید. به مثال توجه کنید:

 

Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As

                              System.EventArgs) Handles Button1.Click

 

        Dim graph As System.Drawing.Graphics

End Sub
  • اگر از رویداد Paint یک پنجره استفاده می کنید، آن رویداد اشاره گری به یک شی Graphics را در اختیار شما قرار می دهد. به مثال زیر توجه کنید:

 

Private Sub Form1_Paint(ByVal sender As Object, ByVal e As

System.Windows.Forms.PaintEventArgs) Handles MyBase.Paint

 

        e.Graphics . . .

End Sub

  • با فراخوانی متد CreateGraphics از هر کنترل می توانید نمونه ای از شی Graphics مربوط به ان کنترل را بدست آورید. به مثال زیر توجه کنید:

 

Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As

System.EventArgs) Handles Button1.Click

 

        Dim Graph As Graphics = Me.CreateGraphics

End Sub
 

رنگها در GDI+

 

رنگها یکی از اشیایی هستند که به اشیای دیگر برای تغییر نمای آنها اضافه می شوند. یک رنگ از ترکیب چهار مقدار 8 بیتی ساخته می شود. اولین مقدار، میزان آلفای رنگ است. دومین مقدار، میزان رنگ قرمز، سومین مقدار، میزان رنگ سبز، چهارمین مقدار، میزان رنگ آبی می باشد. هر کدام ار این مقادیر می توانند بین 0 تا 255 باشند. مقدار آلفا توسط سیستم عامل رزرو شده است و ترکیب مقادیر سه رنگ قرمز و سبز و آبیف رنگ مورد نظر شما را بوجود می آورد.

 

برای بدست آوردن رنگهای مورد نظر در GDI+ می توانید از نام رنگها استفاده کنید. نام همه رنگهای مشهور در GDI+ شناخته شده می باشند مانند RED ، GREEN، BLUE، BLACK، WHITE، YELLOW، Fuchsia، SILVER، LIGHTBLUE، GRAY. به مثال زیر توجه کنید:

 

Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As

System.EventArgs) Handles Button1.Click

 

        Me.BackColor = Color.DarkBlue

End Sub

 

اگر رنگ مورد نظر شما جزو رنگهای از پیش تعریف شده نبود، می توانید به راحتی با تعریف یک متغیر از نوع Color و استفاده از یکی از چهار متد Overload شده FromArgb رنگ مورد نظر خود را تعریف کنید. حالت کلی متدهای FromArgb بصورت زیر است:

Public Static FromArgb (argb As Integer) As Color

Public Static FromArgb (Alpha As Integer, BaseColor As Color) As Color

Public Static FromArgb (Red As Integer, Green As Integer, Blue As Integer) As Color

Public Static FromArgb (Alpha As Integer, Red As Integer, Green As Integer, Blue As Integer) As Color

 

سومین نوع این متد بیشترین استفاده را دارد و سه عدد که هرکدام بین 0 و 255 هستند را به عنوان پارامترهای متد ارسال می کنیم. به مثال زیر توجه کنید:

 

Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As

System.EventArgs) Handles Button1.Click

 

        Me.BackColor = Color.FromArgb(26, 69, 174)

End Sub
با استفاده از خواص R و G و B می توانيد مقدار هر کدام از آنها را در يک رنگ بدست آوريد.

قلمها در GDI+

 

برای ترسیم در شی Graphics نیاز به ابزارهایی داریم که ساده ترین آنها Pen می باشد.  برای استفاده از آن باید ابتدا متغیری از نوع Pen تعریف کنیم. مهمترین مشخصات یک Pen رنگ آن می باشد که باید آن را تعریف کنیم. این کار را می توانیم با استفاده از تابع سازنده کلاس Pen و در هنگام تعریف شیی از نوع Pen انجام داد. به مثال زیر توجه کنید:

 

Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As

System.EventArgs) Handles Button1.Click

 

        Dim PenRed = New Pen(Color.Blue)

        Dim graph As Graphics = Me.CreateGraphics()

End Sub

 

پایان قسمت اول.

 

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

 

جادوگر ويژوال بيسيك درساعت٢:٠۸ ‎ب.ظ


دوشنبه ٢۱ دی ،۱۳۸۳

اضافه کردن متن به تصویر بصورت پویا

سلام.

بازم کمی تاخیر داشتم نه؟ چیکار میشه کرد کار دنیاست دیگه!

 

خوب مثل همیشه قبل ار اینکه بریم سراغ مطلب جدید بهتره جواب بعضی از دوستان رو بدم که لطف کردن و پیغام گذاشتن.

 

VbAdvanced عزیز دقیقا درست می فرمایید ولی باور کنید نه وقت و نه حوصلش موجود نیست تا یه شمارنده خودم بنویسم. اگه کد اونو دارید که ممنون میشم برام بفرستید.

 

محمدرضای عزیز ممنونم که ایمیل فرستادی. شرمنده که نتونستم جواب ایمیلت رو بدم. من همیشه از ملاقات (حتی بصورت الکترونیکی) دوستان قدیمی خوشحال میشم. بازم سر بزن.

 

کورال جان شمارنده سایت منم الان از همون سایتیه که گفتید ولی من می خوام شمارنده برای مقاله ها بذارم تا بدونم که از هر مقاله چند تا دانلود شده. اگه قرار باشه برای هر مقاله یه بار تو سایت ثبن نام کنم که خیلی وقت گیر تر از نوشتن یه شمارنده میشه. به هر حال از پیشنهادتون ممنونم. اگه بازم پیشنهادی داشتید حتما بنویسید.

 

آرش جان وبلاگ شما رو دیدم. بزودی قراره این لینکها رو آپدیت کنم. در صورتی که وبلاگ شما رو بشه تو یکی از این موضوعات جا داد حتما برات لینک می ذارم.

 

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

 

ایمان عزیز جواب سوالات شما بطور خلاصه اینا هستن:

1.       ظاهرا خودتون می تونید زبانها رو دسته بندی کنید!

2.    این کار رو نکردم ولی مطمئن باشید از زبان Visual C++ هر کاری بگید بر می یاد ولی ممکنه که شما کار مورد نظر خودتون رو بتونید با ابزار دیگری راحتتر انجام بدید. پس همیشه سعی کنید مولتی ابزار باشید!

3.    ASP و PHP و ASP.NET یک استاندارد و یک تکنولوژی هستن هر چند که بعضیها اونا رو زبان می دونن ولی نظر من همونیه که گفتم. زبانهای اسکریپتی رو داخل این تکنولوژیها استفاده می کنن.

4.    .NET یه پلتفرمه. یعنی برنامه هایی را که با استفاده از .NET Framework روی پلتفرم .NET می نویسید بصورت مستقل از ماشین و سیستم عامل عمل می کنن. یعنی هر جایی که .NET نصب باشه برنامه شما قابل اجراست. البته این پلتفرم در ابتدای راهه و هنوز برای رسیدن به هدفش راه درازی در پیش داره. .NET در حال حاضر روی ویندوزهای 9X و NT و 2000 و XP و 2003 قابل اجراست و با استفاده از یه Wrapper به نام Mono روی لینوکس هم میشه از ASP.NET استفاده کرد. البته Microsoft قراره این پلتفرم رو گسترش بده و به ماشینهای دیگری منتقل کنه. طبق گفته مایکروسافت بزودی .NET روی Xbox هم منتقل میشه و این یعنی بازیهای Xbox رو میشه با استفاده از تکنولوژی Managed Code برنامه نویسی کرد. رقیب .NET را باید Java بدونیم. در مورد تفاوت VS.NET با VS 6 همیشه گفتم یه بار دیگه هم میگم: تفاوت از زمین تا آسمان است و این یعنی اینکه با مفاهیم جدید زیادی روبرو هستید. بخصوص اگه برنامه نویسی VB باشید. Delphi.NET محیط برنامه نویسی تحت .NET با زبان دلفی است و محصول شرکت بورلند و .NET هم به هر حال متعلق به مایکروسافت است.

5.    ایمان عزیز این سوالتون خیلی فلسفیه! بابا این همه تنوع تو دنیا برای چیه؟ تنوع زبانهای برنامه نویسی هم به همون مسئله مربوط میشه. ضمن اینکه هر زبان خصوصیات خاص خودشم داره. در ضمن قرار نیست که کسی همه زبانها رو یاد بگیره. هرکس به تناسب موقعیت و علاقه و کاربرد زبان یا زبانهای مورد استفادشو انتخاب می کنه.

 

 

آقا این روزا در مورد هر چی بخوای یه رشته روانشناسی هست. روانشناسی رنگها، روانشناسی دستخطف روانشناسی اشکال، روانشناسی .... فقط این وسط مونده روانشناسی کدها(برنامه نویسی) که اونم بنده همین الان رسما افتتاح این رشته از روانشناسی رو توسط خودم اعلام می کنم. تحقیقات برای پیدا کردن چیزهای تازه در این زمینه همچنان ادامه داره. تازگیا سعی کردم زبان C# رو یاد بگیرم. عجب حالی کردم. عوض کردن زبان برنامه نویسی و یاد گرفتن یه زبان جدید واقعا تو روحیه آدم تاثیر می ذاره. خیلی شارژ شدم. پیشنهاد می کنم اگه شما هم از برنامه نویسی به یه زبان خاص کسل شدید برای عوض شدن روحیتون هم شده یه زبان جدید رو شروع کنید!

اصلا شاید تصمیم بگیرم علاوه بر نوشتن مطالب VB 6 و VB.NET مطالب مربوط به C# هم که یاد می گیرم بنویسم. (این مسئله همین الان به ذهنم رسید و هنوز در این مورد تصمیم نگرفتم ولی شما می تونید نظرتون رو در این مورد بگید).

 

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

خوب اول یه پروژه جدید از نوع Windows Application ساخته و بعد اشیای زیر را به فرم اضافه کنید و خواص اونا رو تغییر بدید.

 

Form

(Name)=frmMain

Text=Add Dinamically Text to Images

Size=424;388

 

TextBox

(Name)=txtYourText

Text=""

 

NumericUpDown

(Name)= NumX

 

NumericUpDown

(Name)= NumY

 

Button

(Name)=btnAddText

Text= &Add

 

Button

(Name)=btnSave

Text=&Save Image

 

Button

(Name)=btnLoad

Text=&Load Image

 

PicturBox

(Name)= picPreview

SizeMode=StretchImage

Size=395;269

 

OpenFileDialog

(Name)= dlgOpen

 

 

SaveFileDialog

(Name)=dlgSave

 

خوب بعد از قرار دادن این اشیا روی فرم در محلهای دلخواه (سعی کنید فرم قشنگی طراحی کنید) نوبتبه کدنویسی میرسه. قبل از هرچیزی این Namespace ها رو در ابتدای پنجره کد بنویسید.

Imports System.Drawing

Imports System.Drawing.Drawing2D

Imports System.Drawing.Text

Imports System.Drawing.Imaging

 

حالا کد زیر رو بنویسید. در اینجا از نوشتن کدهای تولید شده توسط خود VS.NET خودداری شده.

 

Public Class frmMain

    Inherits System.Windows.Forms.Form

 

" Windows Form Designer generated code "

 

Dim fName As String

Dim State As Boolean = False

Dim MyBitmap As Bitmap

 

Private Sub btnAddText_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles btnAddText.Click

        If txtYourText.Text <> "" And State = True Then

            MyBitmap = New Bitmap(fName)

            Dim MyGraphic As Graphics = Graphics.FromImage(MyBitmap)

            MyGraphic.SmoothingMode = SmoothingMode.AntiAlias

            MyGraphic.DrawString(txtYourText.Text, New Font("Arial", 12, FontStyle.Bold), SystemBrushes.WindowText, 50, 25)

            MyGraphic.Dispose()

        End If

    End Sub

 

    Private Sub btnLoad_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles btnLoad.Click

        dlgOpen.ShowDialog()

        If dlgOpen.FileName <> "" Then

            fName = dlgOpen.FileName

            picPreview.Image = Bitmap.FromFile(fName)

            State = True

        End If

    End Sub

 

    Private Sub btnSave_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles btnSave.Click

        Dim fOutName As String

 

        dlgSave.DefaultExt = "jpg"

        dlgSave.ShowDialog()

        If dlgSave.FileName <> "" Then

            fOutName = dlgSave.FileName

            MyBitmap.Save(fOutName, ImageFormat.Jpeg)

        End If

    End Sub

 

    Protected Overrides Sub Finalize()

        MyBitmap.Dispose()

        MyBase.Finalize()

    End Sub

End Class

 

 

برنامه رو اجرا کنید. بصورت خلاصه بگم که شما اول باید با استفاده از کلید Load Image تصویر مورد نظرتون رو داخل PictureBox لود کنید (کد مربوط به کلید btnLoad_Click رو بررسی کنید).  بعد داخل TextBox متنی رو که می خواید به تصویر اضافه کنید رو می نویسید. با زدن کلید Add متن به تصویر اضافه میشه البته در PictureBox نمایش داده نشده (کد مربوط به کلید btnAddText_Click را بررسی کنید). با زدن کلید Save Image می تونید تصویر جدید رو در محل دلخواه ذخیره کنید ( کد مربوط به کلید btnSave_Click رو بررسی کنید).

 

از این کد می تونید جاهای مختلفی استفاده کنید مثلا یکی از جاهایی که این کد خیلی می تونه مفید باشه در برنامه نویسی صفحات وب مربوط به ثبت نام یا پیغام یا همچین جاهاییه. جاهایی که می خوان مطمئن باشن که یه روبات نیست که داره این کار رو انجام میده  از یه تصویر که نوشته هایی بصورت تصادفی روی اون نوشته شده استفاده میشه و از کاربر می خواد که اون نوشته ها رو توی یه TextBox وارد کنه. درست متوجه شدید برای ساخت اون تصویر می تونید از این تکنیک استفاده کنید.

 

 

جادوگر ويژوال بيسيك درساعت۱:٥٦ ‎ق.ظ


جمعه ٤ دی ،۱۳۸۳

مقالات جديد

سلام.

چند روز پیش اتفاق جالبی برام افتاد. یعنی این اتفاق خیلی وقتها می افته ولی تا حالا بهش دقت نکرده بودم و شاید خیلی از شما هم همینطور باشید. توی تاکسی نشسته بودم که یه خانمی ازم ساعت رو سوال کرد. نگاه به ساعت کردم و گفتم 7 دقیقه به یک. یهو رفتم تو فکر. چند سال پیش اگه تو یه همچین وضعیتی ازم ساعت رو سوال می کردن می گفتم 5 دقیقه به یک یعنی گردش می کردم ولی حالا از دو دقیقه هم نتونستم بگذرم. تو داشنگاه که بودیم یکی از استادامون اینو بهمون گفته بود. بهمون گفت که خواهی نخواهی رشته تحصیلی و یا شغل هر کسی یه تاثیراتی رو زندگی و رفتارش می ذاره مثلا شما که رشتتون کامپیوتره به زمان خیلی حساس میشید. نیم دونم، شاید به خاطر همینه که این وبلاگو اینقدر سر وقت Update می کنم!!!

 

متاسفانه اون پست قبلی کمی بهم ریخته. اگه کمی حوصله کنید حتما PDF اونو می ذارم تو سایت تا بدون مشکل مقاله رو بخونید.

 

این هفته بالاخره کلی از مقاله ها و پستها رو Upload کردم. حالا شما می تونید از لیست مقالات هر مقاله ای رو که می بینید به دردتون می خوره دانلود کنید. چون مقاله ها بصورت PDf هستن پیشنهاد می کنم که با استفاده از یه Download Manager مثل FlashGet مقاله ها رو دانلود کنید. ببینم راستی کسی سورس یه شمارنده نداره؟ می خوام ببینم از هر کدوم از مقالات چند تا دانلود میشه. خودم اصلا حوصلشو ندارم یکی بنویسم اگه آماده دارید یا سایت یرو سراغ دارید که سورس آمادشو داره به ما هم بگید.

 

دوست عزیزی به نام آقا یا خان مظلوم روش ارتباط با بانک دارای پسورد رو خواستن. البته ذکر نکردن که بانک اطلاعاتی مورد استفادشون چی هست ولی زیادم فرق نمی کنه فرض می کنیم Access . ضمنا فرض می کنیم که ایشون از ADO استفاده می کنن. شما باید از Connection String زیر استفاده کنید. در این CS متغیر dsStr مسیر و نام فایل بانک اطلاعاتی در اون قرار داره، مثلا فرض شده که پسورد بانک شما کلمه Mazlom است که می تونید هر کلمه دلخواهی رو جایگزین کنید.

 

strCnn="Provider=Microsoft.Jet.OLEDB.4.0;Persist Security Info=False;Data Source=" & dsStr & ";Jet OLEDB:Database Password=Mazlom"

 

دوست عزیزی به نام رامین هم نحوه استفاده از اکتیوایکسی به نام HWInfo را می خوان که باید بگم من تا حالا با این اکتیوایکس کار نکردم. شما می تونید با آقای کورال (ایمیل ایشون رو می تونید تو پیغامها پیدا کنید) تماس بگیرید که ایشون با این اکتیوایکس کار کردن.

 

جادوگر ويژوال بيسيك درساعت۱:۱٦ ‎ب.ظ


سه‌شنبه ٢٤ آذر ،۱۳۸۳

قدم به قدم: تشریح ارث بری Visual

سلام.  خوب طبق معمول اول جواب پیغامها.

کورال عزیز من از Wise Install Master برای ساخت Setup استفاده می کنم و بنابراین در مورد InstallShield اطلاعاتی ندارم.

 

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

 

و اما پست این هفته که مربوط به وراثت Visual برنامه ها در VB.NET است که البته به راحتی می تونید اونو به C# هم تبدیل کنید. به زبون ساده این مقاله توضیح می ده که چطوری می تونیم برای بالا بردن قابلیت ReUsability در برنامه هامون فرمهای پایه بسازیم و از از اونا برای طراحی بقیه فرمها استفاده کنیم. به عبارتی یه کتابخانه Visual.

 

شروع مقاله:

ارث بری Visual به شما اجازه می دهد تا کنترلهایی در فرم پایه ببینید و کنترلهای جدید را اضافه کنید. در این راهنما، شما یک فرم پایه خواهید ساخت و آن را در یک کتابخانه کلاس کمپایل می کنید. این کتابخانه کلاس را در پروژه دیگری Import خواهیم کرد و یک فرم جدید که از فرم پایه به ارث می برد را می سازیم. در طس این راهنمای قدم به قدم شما با مفاهیم زیر آشنا خواهید شد:

·        ساخت یک پروژه کتابخانه کلاس حاوی یک فرم پایه.

·        اضافه کردن یک Button با خواصی که کلاسهای مشتق شده از فرم پایه می توانند آنها را تغییر دهند.

·        اضافه کردن یک Button که نمی تواند بوسیله ارث برنده های فرم پایه تغییر داده شود.

·        ساخت یک پروژه حاوی یک فرم که از فرم پایه با نام BaseForm به ارث می برد.

و در نهایت، این راهنما تفاوت بین کنترلهای Protected و Private را در یک فرم به ارث برده شده شرح خواهد داد.

 

مراحل این سناریو

اولین مرحله ساخت یک فرم پایه است. 

 

برای ساخت یک پروژه کتابخانه کلاس حاوی یک فرم پایه مراحل زیر را دنبال کنید:

 

1-از منوی فایل، گزینه New و سپس Project را انتخاب کنید تا پنجره New Project باز شود.

2-یک پروژه از نوع Windows Application انتخاب کرده و آن را BaseFormLibrary نامگذاری کنید.

3-برای ساخت یک کتابخانه کلاس به جای یک برنامه کاربردی استاندارد، روی گره BaseFormLibrary را در Solution Explorer کلیک راست کرده و Properties را انتخاب کنید.

4-در پنجره خواص پروژه، نوع خروجی را از Windows Application به Class Library تغییر داده و کلید OK را کلیک کنید.

5-از منوی File گزینه Save All را برای ذخیره کردن همه فایلهای پروژه در مسیر پیش فرض انتخاب کنید.

 

در دو مرحله بعد Button هایی را به کلاس پایه اضافه می کنیم. برای تشریح ارث بری Visual، شما Button هایی با سطح دسترسی متفاوت را با استفاده از تنظیم خاصیت Modifier ارائه خواهید داد.

 

مراحل زیر برای اضافه کردن یک Button  است که ارث برنده های کلاس پایه می توانند آن را تغییر دهند:

 

1-   در قسمت جعبه ابزار در برگه Windows Forms، روی Button دوبار کلیک کنید تا یک Button به فرم شما اضفه شود. با استفاده از ماوس مکان و اندازه آن را تعیین کنید.

2-      در پنجره خواص، مقدار خواصی را که مشاهده می کنید تنظیم کنید:

·         خاصیت Text را برابر Say Hello قرار دهید.

·         خاصیت Name را برابر btnProtected قرار دهید.

·     خاصیت Modifier را به Protected تغییر دهید. این کار این امکان را فراهم می سازد که فرمهایی که از فرم پایه به ارث می برند، توانایی تغییر خواص btnProtected را داشته باشند.

3-      روی کلید Say Hello دو بار کلیک کنید تا گرداننده رویداد برای رویداد Click ساخته شود.

4-      خطوط کد زیر را به گرداننده رویداد اضافه کنید:

MesageBox.Show("Hello,World!")

 

مراحل زیر برای اضافه کردن یک کلید است که ارث برنده های کلاس پایه نمی توانند آن را تغییر دهند:

 

1-      با کلیک روی برگه Form1.vb[Design] در بالای ویرایشگر کد یا با فشار کلیدهای Shift+F7 به محیط طراحی بروید.

2-       دومین Button را اضافه کرده و خواص زیر را مقداردهی کنید:

  • خاصیت Text را به Say Goodbye تنظیم کنید.
  • خاصیت Name را به btnPrivate تنظیم کنید.
  • خاصیت Modifier را به Private تنظیم کنید. این کار باعث می شود که فرمی که از فرم پایه به ارث می برد نتواند خواص آن را تغییر دهد.

3-      روی کلید Say Goodbye دو بار کلیک کنید تا گرداننده رویداد برای رویداد Click ساخته شود. کد زیر را در گرداننده رویداد اضافه کنید:

MessageBox.Show("Goodbye!")

 

از منوی Build گزینه Build را برای ساخت کتابخانه کلاس انتخاب کنید.

 

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

برای ساختن یک پروژه حاوی یک فرم که از فرم پایه به ارث می برد مراحل زیر را انجام دهید:

 

1-      از منوی File گزینه Add Project و سپس New Project را انتخاب کنید تا پنجره New Project نمایش داده شود.

2-      یک پروژه از نوع Windows Application با نام InheritanceTest بسازید.

 

برای اضافه کردن یک فرم وارث مراحل زیر را انجام دهید:

 

1-      روی پروژه InheritanceTest کلیک راست کرده و گزینه Add و سپس Inherited Form را انتخاب کنید.

2-      در پنجره Add New Item، بررسی کنید که Inherited Form انتخاب شده باشد و سپس کلید OK را فشار دهید.

3-   در پنجره Inheritance Piker، Form1 از پروژه BaseFormLibrary را به عنوان فرمی که از آن به ارث برده می شود، انتخاب کرده و کلید OK را فشار دهید. این کار یک فرم در پروژه InheritanceTest می سازد که از فرمی که در پروژه BaseFormLibrary بود مشتق شده است.

4-   این فرم را در طراح فرم با استفاده از دوبار کلیک روی آن باز کنید. در طراح فرم، Button های به ارث رسیده شده دارای علامت فلش در گوشه بالای خود هستند که دلالت بر به ارث رسیدن آنها دارد.

5-    کلید Say Hello را انتخاب کرده . آن را تغییر اندازه دهید. از آنجا که این کلید از نوع Protected است، ارث برنده ها می توانند آن را حرکت داده، تغییر اندازه دهند، عنوان آن را تغییر دهند و تغییرات دیگری را اعمال کنند.

6-   کلید Say Goodby که از نوع Private است را انتخاب کرده و توجه کنید که آن تغییر اندازه داده نمی شود. علاوه بر آن در پنجره خواص، خواص این Button غیر فعال شده اند که دلالت بر این دارد که آنها را نمی توانید تغییر دهید. در نهایت، اشاره گر ماوس را روی آن حرکت دهید و یک Tooltip ظاهر می شود که چگونگی به ارث بری این کنترل را نشان می دهد.

7-      روی پروژه InheritanceTest در Solution Explorer کلیک راست کرده و گزینه Set As Startup Project را انتخاب کنید.

8-   روی پروژه InheritanceTest در Solution Explorer کلیک راست کرده و گزینه Properties را انتخاب کنید. در این پنجره خواص پروژه InheritanceTest گزینه Startup Object را به فرم ارث برده شده تنظیم کنید (مثلا در اینجا Form2)

9-      کلید F5 را برای اجرای برنامه کلیک کنید و رفتار فرم به ارث برده شده را مشاهده کنید.

 

 

جادوگر ويژوال بيسيك درساعت٦:۳٦ ‎ب.ظ


سه‌شنبه ۱٠ آذر ،۱۳۸۳

تبدیل یک پروژه VS.NET 2003 به VS.NET 2002

 

سلام.

خوب می دونم کمی دیر دارم update می کنم ولی خود شما دیگه می دونید چقدر گرفتارم. تازه علاوه بر اینها سفر و دیدن نمایشگاه الکامپ هم اضافه کنید. اول از الکامپ بگم که بدک نبود. ما که دستمون به CeBit و Gitex نمیرسه مجبوریم با الکامپ حال کنیم!

 

راستش اینقدر تو این چند وقته در مورد الکامپ نقد خوندم و نوشتم که دیگه اگه بخوام بنویسم هم، نوشتنم نمی یاد فقط در مورد یه چیز شایدم دو چیز می نویسم.

 

اول "سرویس خوشنگار وب" بود که به نظرم جالب رسید. کار قشنگی بود. با استفاده از اون می تونید با خطوط بسیار زیبایی مثل نستعلیق و نسخ و ... متون داخل وب سایتتون رو بنویسید و ضمنا روشی که این نرم افزار ارائه کرده باعث میشه که کسی نتونه از متون شما کپی کنه و یا اونو ذخیره کنه. ضمنا استفاده از این تکنولوژی به سادگی استفاده از یه تگ جدید در Html است. این محصول توسط شرکت "مهندسی نرم افزاری دانش ارتباطات و توسعه" ساخته شده. این سرویس برای ترسیم خط‌تحریر بر روی وب هست که با روشهای متداول فونت یا تصویر فرق می‌کنه (و کاملا مستقل از سیستم عامل گیرنده هست) و درواقع یه تگ HTML استاندارد با عنوان <ows:calligraphy> هست که می‌تونه خط‌های ثلث و نستعلیق و نسخ شکسته و تحریر رو با قابلیت تغییر سایز و رنگ و سایه و ... بر روی صفحات وب شما به نمایش دربیاره. برای اطلاع از این موضوع هم که چه شرکت‌هایی این محصول رو خریدن می‌تونید به ساتشون سر بزنید. روش ساخت اونو از برنامه نویسش پرسیدم. به این روش کار می کنه که نوشته های شما با استفاده از فرمولهایی به حالتهای برداری تبدیل میشن. زمانی که یه Client درخواستی برای سرور حاوی یه صفحه وب که از خوشنگار استفاده کرده فرستاد، یه Plugin برای مرورگر فرستاده میشه که میتونه این فرمولهای برداری رو دوباره به شکل نوشته هایی با خطهای مورد نظر در بیاره. این Plugin حجمش کمه و بنابراین دانلود اون زیاد طول نمیکشه. این Plugin فقط در حافظه و در فضای آدرس خود مرورگر لود میشه و روی کامپیوتر ذخیره نمیشه. این باعث میشه که با آزاد شدن فضای آدرس مرورگر در پایان استفاده از اون، این Plugin هم از حافظه پاک بشه و صفحات دیگه قابل ذخیره سازی نباشن. از این تکنولوژی به خوبی میشه برای جاهایی که Copyright متون اهمیت داره استفاده کرد.

 

می خواستم در مورد شرکت "سمیع رایان پردازگ بنویسم دیدم حسش نیست. فقط اینو بگم که نمی دونم چرا ما ایرانیا گیر دادیم به اولین بودن در انجام کاری نه بهترین بودن در انجام اون کار. حالا حکایت این شرکت نرم افزاریه!

 

و اما پاسخ به سوالات:

 

مهدی جان عجیبه ولی همه اینهایی که در  مورد Opera گفتی FireFox هم داره (البته من شنیدم) با حجم کمتر. برای برنامه نویسی شبکه از هر زبانی می تونید استفاده کنید. منظورتون رو از کنترل کامل شبکه در برنامه بهتر بگید. برای برنامه نویسی کردن برای هر نوع شبکه ای به راحتی می تونید از WinSock استفاده کنید. در مورد 3D باید بگم به جمع دوستداران خوش اومدی. برای گرفتن جواب سوالاتت می توی تو سایت www.persian-designers.com عضو بشی و از اطلاعاتی که در قسمت تالارهای گفتگو وجود داره استفاده کنی. این سایت یکی از معدود جاهاییه که علاقمندان به ساخت بازی دور هم جمع میشن. در ضمن یه سری به فروشگاه سایت بزنی چیزای خوبی با قیمت مناسب در این زمینه ها پیدا می کنی!اون 3D Rad هم نگاه کردم در مقابل 3D Engine هایی مثل TrueVision کم می یاره. البته این نظر منه. از معرفی اون nemoX 3d هم ممنون که معرفی کردید. در موردش خوندم خیلی برام جالب بود ولی نتونستم وارد سایتش بشم. میگه فیلتر شده. شما می تونید وارد شید؟ ایمیل بنده هم اینه:

mam_programmer at yahoo.co.uk

 

محمد رضا رستمی عزیز منم از آشنایی با شما خوشحالم. نمی دونم چرا اسم شما خیلی برام آشناست. میشه بگید تو کدوم دانشگاه درس خوندید؟ ایمیل منم اینه:

mam_programmer at yahoo.co.uk

 

رضا کاظمی عزیز اکتیوایکس ها رو می تونی تقریبا از همه جا دانلود کنی. CD های زیادی هم تو بازار موجوده. بعضیاشون اکتیوایکس های خارجی و بعضیا هم اکتیوایکس های ساخت برنامه نویسای ایرانیه. ولی قبلش باید بدونی دقیقا به چه اکتیوایکسی نیاز داری؟ می تونی با یکی از دوستام که از بهترین برنامه نویسای اکتیوایکسه مکاتبه کنی. ایشون یه مجموعه از اکتیوایکسهای خودشون برای فروش دارن که فقط از طریق پستی می فروشن. ایمیل ایشون هم اینه:

mrizvandi at yahoo.com

ضمنا اون ایمیلی هم که فرستادی به دستم رسید.

 

کورال عزیز برای گرفتن شماره سریال هارد راههای مختلفی هست. اگه از ویندوز 2000 یا XP استفاده می کنی بهتره از WMI استفاده کنی که قبلا در موردش بحث شده. اگه از ویندوز 98 استفاده می کنی می تونی از تابع API با نام GetVolumeInformation استفاده کنی.

 

  

خوب مطلب این دفعه مربوط به تبدیل پروژه های VS.NET 2003 به VS.NET 2002 است. شاید تعجب کنید و براتون خیلی بی معنی باشه ولی باور کنید این مسئله خیلی به دردتون می خوره اگه تو وضعیتی مثل من گرفتار شده باشید. چند وقت پیش کدهایی دستم رسید که با VS.NET 2003 نوشته شده بودن ولی VS.NET نصب شده رو سیستم نسخه 2002 بود و نمی تونست سورسها رو باز کنه. خوب ساده ترین راهی که به نظر می رسید این بود که خیلی راحت VS.NET 2002 رو Uninstall کنیم و بعدش نه چندان راحت! VS.NET 2003 رو نصب کنیم. ولی به نظرم رسید اول ببینم راهی هست که بی دردسر تر از این حرفا بتونم سورس رو نگاه کنم بعد به فکر عزل و نصب بیفتم. نهایتا به نتیجه زیر رسیدم:

 

برای تبدیل برنامه های نوشته شده با VS.NET 2003 به VS.NET 2002 مراحل زیر رو انجام بدید:

اولین خط فایل Solution رو از Version 8.00 به Version 7.00 تغییر بدید. گزینه ProductVersion در فایل پروژه را به حالت ProductVersion = "7.10.9466" تغییر بدید. گزینه SchemaVersion در فایل پروژه را به SchemaVersion = "1.0" تغییر بدید. تمومه. حالا می تونید با VS.NET 2002 برنامه تون رو باز کنید.

 

جادوگر ويژوال بيسيك درساعت۱۱:٥٦ ‎ق.ظ


یکشنبه ٢٤ آبان ،۱۳۸۳

مقاله استفاده از MySQL در VB.NET

سلام

اول اینکه نماز و روزه هاتون قبول. دوم اینکه عید فطر به همتون مبارک باشه. سوم اینکه عیدی ما هم به شما مقاله کامل "استفاده از MySQL در VB.NET" بصورت PDF است که انشا الله خوشتون میاد. این فایل رو می تونید از این آدرس دانلود کنید:

http://www.sharemation.com/voldemort/02/MySQL%20In%20VB.NET.pdf?unq=2tlsu1

 

از من به شما نصیحت اگه از MySQL متنفر هم هستید ولی هم این مقاله رو بخونید و هم اون درایوری رو که تو مقاله گفته دانلود کنید. واسه روز مبادا. تو ایران معمولا اینطوریه که فلان مدیر دست چپ و راستشو نمی شناسه، هنوز هیچ ذهنیتی از مجموعه تحت نظرش نداره، در بعضی از موارد حتی نمی دونه چند نفر زیردست داره، اونوقت موقع سفارش پروژه بادی به غبغبش میندازه و میگه: این پروژه رو با فلان زبان می خوام. دیتابیسش هم باید (مثلا) Oracle باشه و از اینجور حرفا. حاضرم شرط ببندم خیلی از اینا حتی نمی دونن به چی می گن Database. حالا اگه یکی از این آدما به پست شما خورد و گفت که بانک اطلاعاتی برنامه باید با MySQL باشه چیکار می کنید. اگه آینده نگر باشید و یه نسخه از این درایور رو برای روز مبادا نگه داشته باشید فوری میرید سراغش و قضیه حله.

 

متاسفانه به دلایل زیاد که یکی از بزرگتریناش مشغله زیاده، سیستم آگاه کردن کاربر جهت مقاله های اضافه شده در این وبلاگ وجود نداره. بنابراین فعلا تنها راه برای باخبر شدن از مقاله ها و پستهای جدید سر زدن به وبلاگه. از دوستانی که این تقاضا رو کرده بودن ضمن تشکر از ارسال Email از این بابت عذر می خوام. یه مسئله دیگه اینکه اگه حرفی، درخواستی، چیزی دارید بجای Email از طریق سیستم نظرخواهی وبلاگ بنویسید بهتره.

 

آقا مهدی از پیشنهاد خوب شما در مورد مرورگر ممنونم. راستش همونطوری که گفتم با وجود اینکه به جز IE سه چهار تا مرورگر دیگه هم نصب کردم ولی در حال حاضر فقط از IE استفاده می کنم. ولی می خوام یواش یواش برم سراغ مرورگرهای دیگه. بنابراین اگه اطلاعاتی در این زمینه دارید ممنون میشم در اختیار منم قرار بدید. مثلا ویژگیهای خاص مرورگر Opera که پیشنهاد دادید چیه؟ فعلا تنها کاندید برای جایگزینی FireFox است.

 

راستی احساس می کنم مدت زیادیه که داریم تو مباحث Database وول می خوریم. می خوام دوباره یکم برم سراغ مباحث گرافیک. در این زمینه هم اگه پیشنهاد یا نظری دارید حتما بگید.

 

جادوگر ويژوال بيسيك درساعت۱۱:٠۱ ‎ق.ظ


چهارشنبه ٢٠ آبان ،۱۳۸۳

استفاده از MySQL در VB.NET - قسمت اول

سلام. ظاهرا دیگه نمی تونم مثل سابق هفته به هفته وبلاگ رو آپدیت کنم. راستش سرم شلوغ شده. هر چی هم تلاش می کنم بازم نمی رسم سر وقت آپدیت کنم.

 

بابا فریاد و مهران عزیز از اینکه سر زدید و پیغام گذاشتید ممنونم. مهران جان اگه پیشنهادی دارید یا به آدرس Email من بفرستید یا اینکه در همین بخش پیغامها بنویسید.

 

یه موضوعی که تازگیا نظر منو جلب کرده اینه که ما ایرانیا چقدر نسبت به آمار بی تفاوت هستیم. نگاه کنید ببینید در سایتها و وبلاگها و فرومهای فارسی که در موضوعات مختلف رای گیری می کنن چند نفر از اون صفحه دیدن کردن و چند نفر رای دادن. حالا مگه دو تا کلیک چقدر وقتمون رو می گیره، نمی دونم والا.

 

تو هفته آینده هم که نمایشگاه الکامپ رو در پیش داریم. اگه کارا بهم فرصت بدن حتما می رم. می گن نمایشگاه بین المللیه حالا تا چه حد این حرفشون صحت داره، نمی دونم. احتمالا واسه خیلی از ایرانی ها جذاب ترین قسمت نمایشگاه فروشگاههای CD است!!!

 

من که تا حالا از IE به عنوان مرورگر استفاده می کردم. البته در کنارش Netscape رو هم همیشه نصب می کنم ولی تازگیا خیلی تعریف FireFox رو شنیدم و وقتی آقا سهیل ازش تعریف کنه حتما چیز خوبیه. تصمیم دارم برای مدتی امتحانش کنم. اتفاقا همزمان با تصمیم من نسخه جدید FireFox هم اومده که می تونید از آدرس زیر دانلود کنید. اگه تجربه کار کردن با این مرورگر رو دارید حتما نظرتون رو بهم بگید تا یه وقت از چاله تو چاه نیفتم!

 

و اما موضوع این پست. تازگیا به هر طرف نگاه می کنی حرف OpenSource و سردمداران اونه. یکی از نرم افزارهای پیشرو در  OpenSource که الحق خوب خودشو تو دل صنعت نرم افزار داره جا می کنه MySQL است. MySQL یه Database است که اومده تا رقیبی برای Oracle و SQL Server باشه. از اونجایی که در خود .NET هیچ DataProvider برای کار با MySQL در نظر گرفته نشده بعضی از شرکتا دست بکار شدن و این کارو انجام دادن. مقاله ای که در ادامه می خونید ترجمه مقاله روش استفاده از MySQL در .NET است که در سایت DevX منتشر شده. این مقاله دو قسمته که قسمت اول در مورد MySQL است و قسمت دوم در مورد برنامه نویسی .NET برای اتصال به بانکهای MySQL . حیفم اومد قسمت اول رو حذف کنم، با وجود اینکه قسمت اول به موضوع وبلاگم ربطی نداره. حالا شما قسمت اول رو مطالعه کنید، بزودی قسمت دوم رو هم براتون می فرستم.

 

 

مقدمه

بانک اطلاعاتی MySQL فقط برای لینوکس نیست و بسیاری از امکانات قدرتمندی که SQL Server را به خاطر آن امکانات می پسندید در خود دارد. امکاناتی را که این بانک اطلاعاتی OpenSource به شما تقدیم می کند را باید کشف کنید.

 

چند سالی است که توسعه دهندگان از بانک اطلاعاتی Microsoft SQL Server استفاده می کنند. یکی از چیزهایی که من درباره SQL Server به آن فکر می کنم این است که نصب SQL Server آسان است و پس از نصب کردن هم کار با آن آسان است. به جرات درباره MySQL هم می توانم همین چیزها را بگویم. یک بانک اطلاعاتی سورس باز، توزیع شده تحت لیسانس GPL که به آسانی می توانید در همه برنامه ها از آن بصورت مجانی استفاده کنید. این مقاله MySQL را در مباحث نصب کردن، پیکربندی، محدودیتهای تولید و بکار بردن MySQL با برنامه های ساخته شده با Visual Studio بررسی می کند.

 

نصب MySQL

اولین قدم برای استفاده از MySQL، دانلود و نصب آن است. شما می توانید نسخه 4 بانک اطلاعاتی MySQL را از سایت www.MySQL.com دانلود کنید. وقتی شما در سایت وب MySQL.com هستید، باید تعدادی از آیتمهای دیگر را هم دانلود کنید مانند:

 

  • مرکز کنترل MySQL (MySQL Control Center): این ابزار یک رابط ساده مانند چیزی که در SQL Server است و مدیر حرفه ای (Enterprise Manager) نامیده می شود  را فراهم می کند.
  • درایور ByteFX.NET برای MySQL: این فراهم کننده داده (Data Provider) .NET برای فراهم کردن دسترسی داده های ذخیره شده در بانک اطلاعاتی MySQL استفاده می شود.

 

وقتی MySQL را دانلود کردید به سادگی برنامه نصب کننده MySQL را اجرا کنید. اجرای برنامه نصب کننده MySQL مانند هر برنامه نصب کننده دیگری در ویندوز است.

 

پس از نصب برنامه، برای آزمایش اینکه MySQL در حال اجراست، به مسیر MySQL\bin بروید و یک برنامه به نام WinMySQLAdmin.exe را اجرا کنید. این برنامه بسیار شبیه Enterprise Manager در SQL Server است.

 

 

استفاده از مرکز کنترل MySQL

شما از مرکز کنترل MySQL برای اجرای کارهای زیر استفاده می کنید:

  • ساختن بانکهای اطلاعاتی
  • ساختن جداول
  • ویرایش ساختار جداول
  • پرس و جوی داده
  • بهینه سازی جداول

 در مرحله اول شما باید محل MySQL را ثبت کنید. ثبت سرور به شما اجازه می دهد تا نام ارتباط، نام سرور (یا آدرس IP) جایی که شما سرور MySQL را نصب کرده اید، نام کاربر و کلمه رمز را فراهم کنید. شما اغلب می توانید تعدادی از بهینه سازی ها، تنظیمات ارتباطها را برای نشست تعیین کنید.

 

وقتی که شما سرورتان را نصب کردید، به سادگی روی سرور تازه ثبت شده کلیک راست کنید و گزینه Select را از منوی Shortcut انتخاب کنید. این روش شما را به سرور مرتبط خواهد کرد و لیستی از بانکهای موجود در سرور MySQL انتخاب شده نمایش می دهد. حالا شما می توانید وارد بانکهای اطلاعاتی (و جداول آنها) شده و آنها را بوسیله سرورتان مدیریت کنید.

 

استفاده از پنجره پرس و جو:

پنجره پرس و جو شبیه به تحلیلگر پرس و جوی مایکروسافت است. برای فعال کردن پنجره پرس و جو، در نوار ابزار مرکز کنترل روی آیکون SQL کلیک کنید. با این کار پنجره ای نمایش داده خواهد شد. در پنجره پرس و جو شما می توانید پرس و جوهایی در اتباط با دستورات UPDATE و INSERT و دیگر دستورات SQL را تایپ کنید.

 

امکانات دیگر مرکز کنترل

مرکز کنترل MySQL تعدادی امکانات دیگر دارد. یکی از امکاناتی که آن را سودمند یافتم امکان تاریخچه تقسیم بندی شده است. وقتی شما مرکز کنترل MySQL را اجرا کردید، یک پنجره History همه دستورات اجرا شده بوسیله مرکز کنترل را نمایش می دهد.

 

یکی دیگر از امکانات سودمند مرکز کنترل توانایی آن است برای تغییر ساختار جداولی که در بانک اطلاعاتی هستند. شما می توانید تعدادی از گزینه های پیکربندی که برای هر جدول MySQL بصورت خاص یا عمومی وجود دارد انتخاب کنید. برای مثال، می توانید نوع جدول متفاوتی برای هر کدام از جداول MySQL انتخاب کنید.

 

بطور پیش فرض MySQL جداول را با استفاده از نوع MyISAM می سازد. این نوع جدول یک ضعف اساسی دارد: از تراکنش ها پشتیبانی نمی کند. اگر بخواهید یک جدول SQL را در یک تراکنش استفاده کنید، باید نوع جدول را به نوع InnoDB تغییر دهید. از این ساده تر هم می شود؟

 

همچنین مرکز کنترل MySQL مکانی است که برای ساختن اسکریپتهای تولید برای جداول MySQL استفاده می شود. برای ساخت یک اسکریپت تولید، به این روش عمل کنید: روی جدول مورد نظر کلیک راست کنید، گزینه Tools را انتخاب کنید، سپس گزینه Show Create را انتخاب کنید. در پنجره باز شده جداولی را که می خواهید برای انها اسکریپت تولید کنید مشخص کنید.

 

 

منبع: http://www.DevX.com

جادوگر ويژوال بيسيك درساعت٤:٠٩ ‎ب.ظ


پنجشنبه ٧ آبان ،۱۳۸۳

ساخت و استفاده از فضاهای نامی در VB.NET

این دو سه هفته ای که نبودم اصلا از خودتون پرسیدید این بنده خدا کجاست؟ مرده است؟ زنده است؟ بابا دمتون گرم. خیلی باحالید. پیش خودتون نگفتید این وبلاگ که سر هر هفته آپدیت می شد چرا این همه تاخیر داشته؟ خوب بگذریم ولی من تو این چند وقت بدجوری مریض شده بودم بعدش هم که حالم بهتر شد یه چند روزی حوصله تکنولوژی و اینجور حرفا رو نداشتم و سعی کردم یه چند روزی رو دور از تکنولوژی زندگی کنم وقتی که برگشتم دیدم یه خروار کار عقب مونده دارم. حالا هم که اینجام. طبق معمول اول بریم سراغ جوابات دوستان:

 

پژمان عزیز در مورد API تو آرشیو وبلاگ رو بگردی خیلی چیزا می تونی پیدا کنی. کتابهای خوبی هم که الان تو بازار در مورد API می تونی پیدا کنی اینا هستن:

1- مرجع توابع Win API 32 از انتشارات نص

2- VB و API از انتشارات بنفام

پیشنهاد می کنم به جای وقت گذاشتن رو API روی .NET Framework کار کنی.

 

هادی جان شما همیشه به این وبلاگ در پیت لطف داشتید و دارید.

 

فرا رسیدن ماه مبارک رمضان هم به همه مسلمانهای دنیا تبریک می گم.

 

دوستانی که به مباحث ساخت بازی علاقه دارند حتما یه سری به سایت persian-designers بزنند. تو این سایت به عنوان سکویی برای شروع ساخت بازی تو ایران با Game Maker کار می کنند و در زمینه ساخت مدلها و تصاویر سه بعدی مورد استفاده در بازیها با استفاده از نرم افزارهای 3D بحث میشه و ابزار و موتورهای بازی جدید معرفی میشن و علاوه بر همه اینها برای افراد مبتدی آموزشهای خوبی برای شروع کار با Game Maker ارائه شده. در ضمن مطمئن باشید که سوالات شما در قسمت تالارهای گفتگو بی جواب نمی مونه. ضمنا قراره آموزشهای C++ به عنوان زبان پایه صنعت بازی هم ارائه بشه.

 

خوب به علاقه مندان Delphi هم تبریک عرض می کنم به خاطر عرضه نسخه Delphi 2005.

 

اما مطلب این هفته در مورد روش ساخت فضاهای نامی (Namespaces)  و استفاده از اونا در VB.NET است.

 

مقدمه:

همه ما می دانیم که فضاهای نامی زیربنای اصلی فضاهای کاری در .NET است. در این مقاله، من به شما نشان خواهم داد که چگونه فضاهای نامی را در VB.NET بسازید و استفاده کنید.  

 

یک فضای نامی چیست؟

فضاهای نامی راهی است برای تعریف کلاسها و انواع داده در یک ساختار سلسله مراتبی. System یک فضای نامی پایه برای همه کدهای نوشته شده در .NET است. اگر ما کمی فضای نامی System را مرور کنیم تعداد زیادی فضای نامی بکار برنده System خواهیم دید. برای مثال System.IO و System.Net و System.Collections و System.Threading و غیره.

 

یک فضای نامی می تواند از طریق لغت کلیدی Namespace ایجاد شود. در اینجا مثالی برای ساخت فضای نامی Books در VB.NET مشاهده می کنید:

Namespace Books
     Class Authors
       ‘Do something
     End Class
End Namespace

 

این مثال ساده ای از فضای نامی است. همچنین ما می توانیم فضای نامی سلسله مراتبی بسازیم. در اینجا مثالی در این زمینه مشاهده می کنید:

 

Namespace Books
  Namespace Inventory
    Imports System
    Class AddInventory
      Public Function MyMethod
        Console.WriteLine(“Adding Inventory via MyMethod!”)
      End Function
    End Class
  End Namespace
End Namespace

 

این همه چیز درباره ساخت فضای نامی بود. اجازه دهید چگونگی استفاده از فضاهای نامی را در کد خودمان بررسی کنیم. من یک برنامه برای استفاده از فضاهای نامی می سازم.

 

Imports System
Class HelloWorld
  Public Sub Main()
    Dim AddInv as Inventory.AddInventory = New AddInventory
    AddInv.MyMethod
  End Sub
End Class

 

یا:

 

Imports System.Inventory
Class HelloWorld
  Public Sub Main()
    Dim AddInv as AddInventory = New AddInventory
    AddInv.MyMethod
  End Sub
End Class

 

توجه: وقتی از عبارت Imports استفاده می کنید ما فقط نام فضاهای نامی را می بینیم و نمی توانیم از نام کلاسها استفاده کنیم. برای مثال عبارت زیر نادرست است:

 

Imports Books.Inventory.AddInventory

 

نکته آخر

فضاهای نامی زیربنای روش .NET در توسعه نرم افزار است. فضاهای نامی درهای جدیدی را به روی توسعه توزیعی و پروژه های مخصوص مولفه های سفارشی و کتابخانه های کلاس باز کرده است.

 

جادوگر ويژوال بيسيك درساعت۱۱:۱٦ ‎ق.ظ


دوشنبه ٢٠ مهر ،۱۳۸۳

آموزش Wise – قسمت سوم

از قسمت دوم این آموزش استقبال چندانی نشد. خدا کنه مورد توجه واقع شده باشه.

 

یه دوست خوب پیغام دادن که مطلب مربوط به WMI رو برای ایشون هم بفرستم. حتما. در ضمن برای استفاده از اون حتما باید VS.NET و خود WMI رو نصب کرده باشید.

 

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

http:// spidermanx.persianblog.ir

 

قسمت سوم

 

مرحله Wizzard Appearance

 

گزینه Setup Information: در قسمت Setup Title متنی را که می خواهید در زمان نصب برنامه تان در پشت زمینه و در نوار عنوان پنجره نصب نمایش داده شود را بنویسید. قسمت Default Directory محل پیش فرض نصب برنامه می باشد. با تیک زدن گزینه زیر آن با نام Place Default Directory on the Program Files در ویندوزهای بالاتر از 95 محل نصب مورد نظر شما در شاخه Program Files در نظر گرفته می شود.

 

گزینه Dialogs: در این قسمت پنجره هایی که می خواهید در زمان نصب برنامه نمایش داده شوند را انتخاب می کنید و در صورت نیاز می توانید آنها را با توجه به نیازتان تغییر دهید و یا پنجره دلخواهتان را ساخته و به لیست پنجره های از پیش ساخته شده Wise اضافه کنید. برای تغییر هر پنجره باید ابتدا آن را انتخاب کنید و سپس کلید Edit را کلیک کنید. در این صورت وارد حالت ویرایش پنجره می شوید. (از اونجایی که هدف از این مقاله آموزشی، آموزش ابتدایی Wise است وارد جزییات طراحی پنجره ها نخواهیم شد). برای اضافه کردن پنجره جدید نیز کلید Add را فشار دهید و اطلاعات خواسته شده را وارد کنید.

 

گزینه Screen: در این قسمت می توانید تنظیمات محتویات نمایش داده شده در زمان نصب را انجام دهید. در قسمت Background Gradiant و در ComboBox بالای آن وجود و یا عدم وجود Background را تنظیم می کنیم. در صورت انتخاب یکی از حالتهای Background Gradiant می توانید با استفاده از کلیدهای Top Color و Buttom Color رنگهای بالا و پایین آن را انتخاب کنید. در قسمت Font نیز می توانید مشخصات فونت استفاده شده را تنظیم کنید.

 

در مورد گزینه های Billboard و Languages و ProgressBar نیز با توجه به طولانی شدن مطلب بحث نمی کنیم.

 

 

مرحله Advanced Functionality

 

گزینه Password: در این قسمت شما می توانید برای برنامه نصب یک اسم رمز بکار ببرید و نیز می توانید از اسم رمز برنامه به عنوان Serial Number استفاده کنید و تولید و ذخیره این شماره سریالها را به عهده Wise بگذارید.

 

گزینه های Online Registration و WinCE Components نیز به دلیل کاربرد کمتر توضیح داده نمی شوند.

 

 

مرحله Finish

 

گزینه Media: در اینجا دو انتخاب داریم. اولی Single File Installation که با انتخاب آن برنامه نصب بصورت یک فایل تکی ساخته خواهد شد. دومی Media Based Installation است که در صورت انتخاب برنامه نصب با توجه به رسانه انتخاب شده در لیست آن ساخته خواهد شد مثلا با انتخاب رسانه 3 1/2 High Density Floppy کل برنامه نصب بصورت فایلهایی با حداکثر اندازه 44/1  ساخته خواهد شد.

 

گزینه Build Setting: در اینجا گزینه های مختلفی برای تنظیمات نهایی ساخت برنامه نصب موجوده که مهترین اونا عبارتند از Destination Platform که پلتفرم محل نصب برنامه رو تعیین می کنید. Installation Exe Name که نام فایل Exe برنامه نصب را تعیین می کنید. Setup Icon Path name که محل و نام آیکونی را که می خواهید به فایل Exe اختصاص دهید را انتخاب می کنید. توجه داشته باشید که هر کدام از اینها در صورت تنظیم نشدن دارای مقدار پیش فرض هستند.

 

گزینه Version Resource: که تنظیمات ورژن گذاری برای برنامه نصب را انجام می دهد.

 

از بقیه گزینه ها نیز صرفنظر می شود.

 

کمپایل برنامه نصب

پس از طی این 6 مرحله و تنظیم همه قسمتهای مورد نیاز برای ساخت برنامه نصب با استفاده از کلید Compile که در نوار پایین پنجره Wise قرار دارد می توانید پروژه را کمپایل کرده و فایل نهایی را بسازید.

 

مطلب بعدی آموزش ساخت Setup برای برنامه های VB.NET است.

 

پاورقی:

خوب آموزش مقدماتی ساخت برنامه های نصب با استفاده از نرم افزار Wise Install Master هم در اینجا به پایان رسید. امیدوارم که خوشتون اومده باشه و  برای ساخت هرچه بهتر فایلهای Setup از این آموزش استفاده کرده باشید. من منتظر نظرات شما چه انتقادی چه پیشنهادی و چه دلگرمی، هستم.

 

 

جادوگر ويژوال بيسيك درساعت۱٢:۳٥ ‎ق.ظ


جمعه ۱٠ مهر ،۱۳۸۳

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

تولد منجی عالم بشریت حضرت مهدی بر همه منتظرانش مبارک باد. به دعوت من می تونید برید برا خودتون شیرینی بخرید!!!

کاش زودتر بیاد. دیگه از این همه ظلم تو دنیا خسته شدیم. بیایید همه باهم دعا کنیم زودتر بیاد.

 

از همه دوستانی که اظهار لطف کردن ممنون. خوب طبق معمول اول پاسخ به سوالات:

 

اون دسته از دوستانی که لینک دانلود برنامه Wise رو می خواستن باید بگم که حجم این برنامه بالاست و بهتره خیلی راحت CD اونو تهیه کنن. اگرم می خواید CD این برنامه رو تهیه کنید سعی کنید که نسخه کامل باشه چون در کنار Wise چیزهای دیگه ای هم هست مثل DirectX و MDAC و اینجور چیزا که فروشنده ها به خاطر اینکه رو یه CD نرم افزارای بیشتری قرار بدن اینا رو ور می دارن تا حجمش بیاد پایین و شما موقع ساخت Setup مجبورید به اینترنت وصل بشید و هر کدوم از این قطعات رو که نیاز دارید دانلود کنید.

 

کورال عزیز من در پست قبلی به شما پیشنهاد استفاده از WMI رو کردم. یه مقاله در مورد استفاده از این WMI قبلا نوشتم که PDF اونو برات می فرستم. مطمئن باش در این زمینه API های خود ویندوز زیاد نمی تونن بهت کمک کنن.

 

MNZ عزیز همونطوری که قبلا هم گفتم اینها Report Engine هستن یعنی کار گزارش گیری و طبیعتا چاپ اونو آسون می کنن. هر کردوم از اینها توانایی هایی داره ولی من شخصا Crystal Report رو به بقیه ترجیح می دم. به دلایل زیادی که شاید تو یه مقاله مستقل توضیح دادم. Data Report همراه خود VB6 عرضه میشه. Active Report یه اکتیو ایکسه که باید از بازار تهیه کنید و یا از اینترنت (من هیچ لینکی برای دانلودش ندارم). و اما Crystal Report که آخرین نسخه اون 10 هست فقط باید از بازار تهیه کنید چون یه CD کامله. البته در نظر داشته باشید که هر کدوم از اینها رو که تهیه کنید باید اول آموزش (یا خودآموزی) ببینید ولی ارزشش رو داره. کتابای اونا هم تو بازار هستن که می تونید تهیه کنید. هر کدوم ار اینا هم با روشهای خاصی با زبانهای برنامه نویسی ارتباط برقرار می کنن که از بحث ما خارجه.

 

راستی یه چیزی یادم اومد که بگم. دوستان لطف کنید وقتی پیغام می ذارید Email خودتون رو هم بنویسید تا اگه یه وقت نیاز بود چیزی براتون بفرستم آدرس شما رو داشته باشم.

 

خوب دو تا دوست جمع شدن و با هزار امید و کوشش و خیلی چیزای دیگه یه کتاب نوشتن در باره VB.NET و به ناشر دادن تا چاپ کنه. بعد از شش ماه دیدن که از چاپ خبری نیست هیچی تازه انتظارات ناشر هم بالاتر رفته. این بود که تصمیم گرفتن کتابشون رو صورت Ebook و کاملا رایگان رو اینترنت عرضه کنن. من به شجاعتشون آفرین می گم. (راستش من که قبلا کتاب نوشتم می دونم این ناشرا چه جونورایی هستن). به هر حال سری به لینک زیر بزنید و هم درد دل های این دوستان رو گوش کنید و هم این کتاب خوب رو دانلود کنید.

http://www.ehsani.org/jooti/?code=1339

 

ادامه آموزش Wise

 

مرحله System Additions

 

گزینه Icons: در این قسمت می توانید برای هر برنامه در منوی Start آیکونی را تعیین کنید. ضمن اینکه می توانید نام گروه برای قرار دادن برنامه هایتان در آن در منوی Start را نیز تعیین کنید. ابتدا نام گروه را در TextBox با نام Default Group Name وارد می کنید. سپس با استفاده از کلید Add در پایین لیست و انتخاب برنامه مورد نظرتان برای آن آیکون تعیین می کنید.

 

گزینه Registry: در صورتی که بخواهید در زمان نصب برنامه تان کلید (های) خاصی در Registry ویندوز ساخته شود باید از این گزینه استفاده کنید. با استفاده از کلید New هم می تونید یک کلید رجیستری جدید بسازید و هم می تونید کلید مورد نظرتون رو از یک فایل اکسپورت شده از رجیستری وارد کنید. دو جعبه بالا رجیستری شما را نشان می دهند و جعبه های پایین رجیستری کامپیوتر مقصد را و شما با انتخاب کلیدهای رجیستری مورد نظر در قسمت بالا و فشار دادن کلید Add آن را در کامپیوتر مقصد اضافه کنید.

 

گزینه Ini Files: در این قسمت فایلهای Ini لازم برای پروژه را تعیین می کنیم تا در کامپیوتر مقصد در محل مناسبی قرار گیرند. جعبه سمت چپ طبق معمول کامپیوتر مقصد را نمایش می دهد. با استفاده از کلید New Folder می توانید یک فولدر به محل نصب یا فولدر ویندوز در کامپیوتر مقصد اضافه کنید. کلید New File برای ساخت یک فایل Ini جدید در محل تعیین شده در کامپیوتر مقصد و تنظیم کردن محتویات آن بکار می رود. هر فایل Ini که به پروژه Setup اضافه شود در جعبه سمت راست قرار خواهد گرفت و در صورت لزوم می توانید با استفاده از کلید Details محتویات آن را مشاهده و ویرایش کنید.

 

گزینه File Type: در این قسمت نوع فایلهایی که برنامه شما باز خواهد کرد را معرفی می کنیم تا سیستم عامل کامپیوتر مقصد آن را بشناسد. برای این کار ابتدا کلید Add را فشار دهید و از پنجره باز شده در قسمت کامپیوتر مقصد یکی از برنامه هایی که قرار است نصب شود را انتخاب کرده و در جعبه متن پایین آن پسوند مرتبط شده با این برنامه را تعیین می کنید.

 

گزینه Services: اگر برنامه شما بصورت Service برای ویندوزهای بر پایه NT می باشد و یا سرویسی برای آن ارائه کرده است، می توانید از این قسمت استفاده کنید.

 

گزینه Devices: اگر به همراه برنامه شما کنترل کننده ابزاری نصب می شود از این گزینه استفاده کنید.

 

گزینه های Autoexec.Bat و Config.sys : در صورتی که می خواهید در زمان نصب برنامه تان در هر کدام از این فایلها دخل و تصرفی انجام دهید از این گزینه استفاده کنید.

 

گزینه Installation Log: با استفاده از این قسمت می توانیم برای عملیات نصب یک فایل Log بسازیم تا تمام عملیات انجام شده در زمان نصب و نیز تغییراتی که در زمان نصب در کامپیوتر مقصد انجام شده است را در این فایل متنی بنویسد. در این قسمت سه انتخاب وجود دارد. انتخاب اول Do not create installation log می باشد که با انتخاب این گزینه فایل Log در کامپیوتر مقصد ساخته نخواهد شد. انتخاب بعدی Create Installation Log in same directory as first installed file که باعث می شود تا فایل Log در همان فولدری که اولین فایل نصب می شود، ساخته شود. با انتخاب Create installation log in custom directory فایل Log در مسیری که ما تعیین خواهیم کرد و نامی که برای فایل Log در جعبه متن پایین می نویسیم، ساخته خواهد شد.

 

مرحله User System Checks

 

گزینه Configuration: در این قسمت نیازهای سیستم را تعیین می کنید تا  در زمان نصب برنامه این نیازها بررسی شده و در صورت عدم تامین این نیازها پیغام مورد نظر شما را نمایش دهد. این گزینه شامل پنج قسمت است که آنها را بررسی می کنیم. در Windows Version نوع ویندوز مورد نیاز در سیستم مقصد را تعیین می کنیم. برای این کار کلید Details را فشار داده و از پنجره نمایش داده شده نوع ویندوز مورد نیاز برنامه را تعیین می کنیم. در صورتی که برنامه ما برای همه ویندوزها ساخته شده باشد گزینه All Version را (بصورت پیش فرض انتخاب شده است) انتخاب کنید. پس از انتخاب یک گزینه، در قیمت Check Type باید تعیین کنید که لزوما باید این نوع ویندوز وجود داشته باشد یا اینکه بهتر است وجود داشته باشد. و در جعبه متنهای پایین پنجره عنوان و متن پیغامی که نمایش داده خواهد شد را تعیین می کنید. در قسمت Windows NT Version نوع ویندوز NT کامپیوتر مقصد را تعیین می کنید. بقیه گزینه در همه قسمتهای دیگر مانند قسمت اول می باشد. در قسمت Screen Resolution وضوح صفحه مورد نیاز در سیستم مقصد را تعیین می کنیم. در قسمت Screen Colors تعداد رنگهای مورد نیاز در سیستم مقصد را تعیین می کنیم. در قسمت Sound Support پشتیبانی از صدا را تعیین می کنیم.

 

گزینه Previous Version:

در این قسمت بررسی می شود که نسخه های قبلی این نرم افزار روی سیستم مقصد نصب است و اگر نصب باشد چه کارهایی انجام گیرد.

 

جادوگر ويژوال بيسيك درساعت۱:٢٥ ‎ب.ظ


جمعه ۳ مهر ،۱۳۸۳

آموزش Wise InstallMaster

همونطوری که قبلا هم پیش بینی کرده بودم این هفته نتونستم سر وقت مطلب رو آماده کنم. چند وقت پیش قرار بود که در مورد یکی از نرم افزارهای معروف ساخت Setup یعنی Wise Install Master و یا InstallShield یه راهنما بنویسم. تو همون ایام هم آقای شیداییان تصمیم گرفته بود که همین کار رو بکنه. منم این کار رو به تاخیر انداختم تا ایشون راهنمای یکی از این نرم افزارها رو بنویسه و بعد من راهنمای اون یکی رو بنویسم. بعد از این مدت خبری از راهنمای آقای شیداییان نشد و تصمیم گرفتم که برای Wise یه راهنما بنویسم.

 

از اونجایی که قرار دادن تصویر در وبلاگهای PersianBlog کار وقتگیریه (و وقت چیزیه که من کم دارم) فعلا مطالب رو بدون تصویر در وبلاگ می نویسم و سر فرصت کل مطلب رو بصورت PDF با تصویر برای دانلود در اختیارتون می ذارم.

 

البته بدیهیه که ادامه مطلب و انتشار PDF بستگی به میزان استقبال دوستان داره و در صورت استقبال نشدن از این مقالات مثل دفعه قبل سر و ته قضیه رو سریع هم می یارم و سراغ یه مطلب دیگه میرم.

 

طبق معمول اول یه چند تا سوال جواب بدم:

 

اول میلاد عزیز دو تا سوال پرسیده بودن.

سوال اول: برای پیدا کردن پنجره فعال می تونید از تابع GetForgroundWindow استفاده کنید. تابع GetFocus رو هم یه نگاهی بندازید.

سوال دوم: Microsoft برای کارهای مختلف API هایی ارائه داده که برنامه نویس مجبور نشه با لایه های پایین برنامه نویسی سر و کار داشته باشه. تصور کنید اگه شما بخواید یه Email با استفاده از سوکتها و پروتکل SMTP بفرستید حتما باید جزییات این پروتکل رو و همینطور جزییات برنامه نویسی با سوکتها رو بدونید ولی با استفاده از این API ها به راحتی می تونید با فراخوانی چند تابع API و ست کردن چند ساختار از پیش تعریف شده کار مورد نظرتون رو انجام بدید. مایکروسافت به همین منظور MAPI رو فراهم کرده که می تونید جزییات اونو در کتابای مختلف پیدا کنید. اگه اشتباه نکنم تو وبلاگ آقای شیداییان در قسمت آرشیو می تونید چیزایی در مورد MAPI پیدا کنید.

 

کورال عزیز سوال کردن که چطور تو پرشین بلاگ میشه عکس گذاشت؟ متاسفانه خود پرشین بلاگ برای آپلود عکس فضا نمی ده و باید روی یه Host مجانی فضا بگیرید. من خودم از Sharemation استفاده می کنم که شما هم می تونید با ثبت نام تو این سایت 5 مگ فضا بگیرید. بعد عکستون رو در اون آپلود کنید و لینک اون رو در پرشین بلاگ بذارید.

 

MNZ عزيز برای پرينت گرفتن از موتورهای ريپورت گيری مثل Crystal Reports و Data Reports و Active Reports استفاده کن.

 

شروع آموزش Wise Install Master

 

مقدمه:

شرکت Wise Solutions سه محصول مختلف برای ساخت برنامه های Setup ساخته است که عبارتند از: InstallMaker و InstallBuilder و InstallMaster. معروفترین و کاملترین این محصولات Wise InstallMaster است که برای برنامه نویسان حرفه ای تهیه شده است. در این راهنما سعی شده تا روش ساخت Setup با نرم افزار Wise InstallMaster 8.5 بصورت کلی آموزش داده شود.

 

نکته: از این به بعد به جای Wise InstallMaster به اختصار Wise ذکر خواهد شد.

 

محیط Wise:

نرم افزار Wise دارای سه محیط کاری است که عبارتند از :

1-  Installation Expert

2-  Script Editor

3-  Wizards

 

نکته: برای وارد شدن به هر محیط کاری می توانید آن را از منوی view انتخاب کنید.

 

در قسمت Installation Expert شما قادر خواهید بود که به تمام جزییات ساخت یک پروژه Setup دسترسی داشته باشید و آنها را از طریق رابطهای گرافیکی تنظیم کنید.

 

در قسمت Script Editor از یک زبان داخلی که شباهت زیادی به بیسیک دارد استفاده شده است. در حقیقت خود Wise هر چیزی را که شما تغییر دهید به این کدها تبدیل کرده و سپس آن را کمپایل می کند. خود شما هم می توانید در صورتی که به زبان آن آشنایی دارید تنظیمات خود را از طریق اسکریپت نویسی اعمال کنید!!

 

قسمت Wizards که از اسم آن هم پیداست Wizard هایی را فراهم کرده است که در ادامه با آنها بیشتر آشنا خواهیم شد فقط اسم این ویزاردها و توضیحات مختصری از آنها را فعلا به خاطر داشته باشید که عبارتند از:

1-  Import Visual Basic Project: این ویزارد اسکریپتهای Wise برای پروژه های Visual Basic 5/6 را بطور خودکار می سازد. شما محل یک فایل پروژه VB را وارد می کنید و این ویزارد اطلاعات لازم را از آن استخراج می کند.

2-  Run Application and watch for Loaded files: این ویزارد برنامه اجرا شده در سیستم را باز نگری می کند و اسکریپتهای Wise برای آن را می سازد. این ویزارد فایلهای Dll و OCX را که توسط برنامه اجرا شده استفاده می شود را تشخیص می دهد.

3-  SetupCapture: این ویزارد اسکریپتهای مربوط به ساخت یک Setup از نوع Wise از روی یک Setup دیگر را تهیه می کند. SetupCapture با بازنگری سیستم شما قبل و بعد از اجرای عملیات نصب و بدست آوردن تغییرات بوجود آمده در سیستم این کار را انجام می دهد.

 

معمولا برنامه نویس ها از محیط کاری Installation Expert به منظور دسترسی آسان با جزییات استفاده می کنند و در نهایت می توانند با رفتن به محیط Script Editor کد تولید شده را به دلخواه تغییر دهند.

 

نکته: هر کدام از این مراحل را از نوار ابزاری که در پایین صفحه قرار دارد نیز می توانید انتخاب کنید.

 

در اینجا سعی خواهیم کرد که تمرکز بیشتری روی محیط Installation Expert داشته باشیم.

 

محیط Installation Expert

 

این محیط شامل 6 مرحله می باشد به نامهای زیر:

1-    Files and Components

2-    System Additi