تبليغاتX
Iranian Technology
 
آموزش برنامه نویسی
 
 
آموزش ویژوال بیسیک و ... برای دیدن تمامی مطالب به آرشیو ماهانه مراجعه کنید
 

 

اول به سؤالات شما دوستان عزیز که نظر دادین جواب میدم ؛ امیدوارم به دردتون بخوره :

1- یکی از دوستان میل زده بودن که فرق متغیرهای معمولی با متغیرهای ایستا(Static) چی هست؟

خوب رفیق : همون جور که از اسم این جور متغیرها پیداست ایستا و ثابت هستند .

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

متغیرهای ایستا همانند متغیرهای سراسری هستند ولی توسط تمامی توابع قابل شناسایی و دستیابی نیستند ، بلکه فقط توسط تابعی که آن متغیرها رو اعلان کرده قابل دستیابی هستند.

خصوصیات متغیرهای ایستا: 1- تنها یک بار میتوان به آنها مقدار اولیه داد . 2- تا پایان برنامه مقدار خود را حفظ می کنند.

 به دوقطعه برنامه ی زیر توجه کنید :

 

Private Sub Command1_Click()        'x

            Dim TX As Integer

            TX = TX + 1

            Text1.Text = TX

End Sub

 

Private Sub Command2_Click()         'x

           

Static CX As Integer

CX = CX + 1

Text2.Text = CX

 

End Sub

 

اگه یه همچین برنامه ای رو بنویسید و اجرا کنید میتونید به تفاوت های متغیر های معمولی و ایستا پی ببرید.

در Command1 به علت اینکه متغیر TX به صورت معمولی تعریف شده هر بار که Command1 رو فشار دهید Text1.Text = 1 میشود.

حالا هر اگر Command2 رو فشار دهید متغیرCX  به صورت ایستا اعلان میشود و در پایان هر روال کلیک Command2 مقدار قبلی خود را حفظ می کند. بنابراین با هر بار فشار دادن Comand2 مقدار قبلی CX به علاوه ی یک میشود و در Text2 قرار میگیرد.

 

2- آرزو در مورد چگونگی مرتب کردن جدول های بانک اطلاعاتی سؤال پرسید بود.بهترین کار استفاده از دستورات SQL هست . دستورات SQL در قسمت RecordSource مربوط به کنترل بانک اطلاعاتی مورد استفاده قرار می گیرند.

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

Select * From table_name ORDER BY  field_name DESC / ASC

برای مثال :

Data1.RecordSource = "Select * From Class ORDER BY Family ASC"

این دستور جدول Class را بر اساس فیلد Family به صورت صعودی مرتب می کند.

اگه دوست داشتین بگین یه آموزش درباره ی دستورات SQL در Visual Basic بزارم.

 

 

3- آیدین سؤال کرده بود که چطور میتونم یک کلمه یا به عبارتی پسورد رو به صورت تصادفی ایجاد کنم؟

برای این کار یک پروژه ی استاندارد باز کن و روی فرم برنامت یک Lable قرار بده و یک عدد هم CommandButton قرار بده . حالا روی Command1 جفت کلیک کن تا روال کلیک مربوط به اون باز شه:

 

Private sub Command_Click ()         'x

 

            Dim I As Integer

            Dim Pass As String

            Dim NUMorChar As Integer

 

            Randomize

 

            For I = 1 To 5

                        NUMorChar = int(rnd*2)

                        If NUMorCHAR = 1 Then

                                    Pass = Pass & Int(rnd * 10)

                        Else

                                    Pass = Pass & Chr(Int(Rnd * 26)+65)

                        End If

            Next

 

            Lable1.Caption = Pass

End Sub

 

توجه داشته باشید که در خط 6 در حلقه مقدار 5 طول پسورد رو مشخص می کنه.

 

4-  وحید در مورد مرتب کردن آرایه ها سؤال پرسیده بود. جواب من اینه که وحید جون بهتره یک کتاب ساختمان داده بخونی . زیاد فرقی نمی کنه چه کتابی به چه زبانی باشه (C / C++ / Visual Bascic).

اما برای این کار روی فرم برنامه یک CommandButton قرار بده و روش دابل کلیک کن . بعد هم :

 

Private Sub Command1_Click()       'x

           

            Dim A(1 to 10) As Integer

            Dim I,J as Integer

            Dim Max As Integer

           

            For I = 1 to 10

                        A(I) = Val(InputBox("Enter Number " & I)

            Next

 

            For I = 1 to 10

                        For J = 1 to 9

                                    If a(j) > a(j+1) then

                                                Max = a(j)

                                                A(j) = a(j+1)

                                                A(j+1) = max

                                    End If

                        Next

            Next

 

            For I = 1 to 10

                        Print A(i) ,

            Next

End Sub

 

البته الگوریتم های زیادی برای مرتب کردن وجود داره ولی راحت ترین اونها مرتب کردن حبابی هست که ما از این الگوریتم استفاده کردیم.

 

5- امیر هم سؤال کرده بود چطور میشه برای فرم برنامه یک Skin درست کرد . یا به عبارتی قسمت هایی از فرم برنامه رو حذف کرد.(البته اگه درست فهمیده باشم؟!!) :

برای این کار باید از توابع API ویندوز استفاده کنیم . یه پروژه ی استاندارد باز کن. بعد از منوی Project گزینه ی Code رو بزنید.(Project -> Code). بعد هم بنویسید:

 

Private Declare Function GetWindowLong Lib "User32" Alias "GetWindowLongA"(Byval _

hWnd As Long , byVal nIndex As Long) As Long

 

Private Declare Function SetWindowLong Lib "User32" Alias "SetWindowLongA" (ByVal _

hWnd As Long , ByVal nIndex As Long , ByVal NewLong As Long)As Long

 

Private Declare Function SetLayeredWindowAttributes Lib "User32" (ByVal _

hWnd As Long , ByVal crKey As Long , byVal bAlpha As Byte , ByVal _

dwFlags As Long)As Long

 

Private Sub Form_Load()       'x

 

            Dim TX As Long

 

            Form1.AutoRedraw = True

            Form1.BackColor = vbBlack

Form1.Line (200,200)-(500,500) , vbRed , BF

TX = GetWindowLong(Form1.hWnd , -20)

TX = TX or &H80000

SetWindowLong Form1.hWnd , -20 , TX

SetLayeredWindowAttributes Form1.hWnd , vbBlack , 0 , 1

 

End Sub

 

فکر نکنم نیازی به توضیح داشته باشه . بعد از اجرا همه چیز رو می فهمید.

 

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

برای این کار یه برنامه با این صورت می نویسیم :

یه پروژه ی استاندارد باز کنید . از منوی Project -> Components رو بزنید یا روی جعبه ابزار کلیک راست کنید و Components رو بزنید یا اینکه کلید های Ctrl+T رو بزنید!!!

بعد در سربرگ Controls دنبال Microsoft WinSock Control 6.0 بگردید و بعد از علامت دار کردن OK کنید. حالا در جعبه ابزار روی کنترل WinSock جفت کلیک کنید تا یک عدد از این کنترل به فرم اضافه بشه.بعد یک عدد TextBox و یک عدد Command به فرم اضافه کنید. کنترل Label به مقدار لازم!!

 

بعد روی Command1 دوبار کلیک کنید و بنویسید :

 

Private Sub Command1_Click()          'x

            WinSock1.RemoteHost = "Blogfa.Com/"

            WinSock1.RemotePort = 80

            WinSock1.Connect

End Sub

 

Private Sub WinSock1_Connect()                      'x

 

            Dim CMD as String

            CMD = "GET http://www.IRNT.Blogfa.Com HTTP/1.0" & vbNewLine

            CMD = CMD & "Accept: */*" & vbNewLine

            CMD = CMD & "Accept: text/html" & vbNewLine

            CMD = CMD & vbNewLine

            WinSock1.SendData CMD

End Sub

 

Private Sub WinSock1_DataArrival(byVal BytesTotal As Long)

 

            Dim Src As String

            WinSock1.GetData Src

            Text1.Text = Src

 

End Sub

 

بعد از اجرای برنامه و کلیک کردن Command1 کدهای html صفحه ی IRNT.Blogfa.Com در Text1 نمایش داده می شه . شما می تونید بقیه کارهاش رو از جمله ذخیره کردن این اطلاعات به صورت فایل html رو از مطالب پست قبلی بخونید.

 

 

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

نظر یادتون نره.

 |+| نوشته شده در  سه شنبه بیست و نهم مرداد 1387ساعت 16:48  توسط علی  | 
 
  بالا  

Free Counter