1. مهمان گرامی، جهت ارسال پست، دانلود و سایر امکانات ویژه کاربران عضو، ثبت نام کنید.
    بستن اطلاعیه

سورس های کاربردی و پیشرفته

شروع موضوع توسط hector2141 ‏28/9/12 در انجمن Visual Basic

  1. کاربر ارشد

    تاریخ عضویت:
    ‏6/9/12
    ارسال ها:
    14,318
    تشکر شده:
    2,702
    امتیاز دستاورد:
    0
    حرفه:
    daneshjo
    پاسخ : سورس های کاربردی و پیشرفته

    چگونگی ایجاد منو برای کلیک راست...
    خوب ابتدا توسط Menu Editor منو و تعدادی SubMenu (زیر منو) ایجاد کرده و خاصیت Visible منو (فقط منو) را غیر فعال میکنیم
    حالا فرض میکنیم که می خواهیم منو را برای هنگامیکه بر روی فرم راست کلیک کردیم ظاهر کنیم , کد زیر را در Event (ٍرویداد) MouseDown می نویسیم

    Private Sub Form_MouseDown(Button As Integer, Shift As Integer, X As Single, Y As Single)

    'Button = 1 :::>>> For LeftClick
    'Button = 2 :::>> For RightClick
    If Button = 2 Then
    PopupMenu MnuFile
    End If

    End Sub
     
  2. کاربر ارشد

    تاریخ عضویت:
    ‏6/9/12
    ارسال ها:
    14,318
    تشکر شده:
    2,702
    امتیاز دستاورد:
    0
    حرفه:
    daneshjo
    پاسخ : سورس های کاربردی و پیشرفته

    می خواهم چگونگی ساخت یک Splash Screen برای برنامه هایی که مینویسیم را براتون شرح بدم . خوب باز هم باید توابع مورد نیاز را فراخوانی کرده و همچنین ثوایت مورد نیاز را تعریف کنیم

    Const LWA_COLORKEY = &H1
    Const LWA_ALPHA = &H2
    Const GWL_EXSTYLE = (-20)
    Const WS_EX_LAYERED = &H80000
    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 _
    dwNewLong 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

    نوع نمایش این Splash Screen به گونه ای است که میزان شفافیت فرم آن از 0 به 255 رسیده و دوباره کاهش یافته به صفر می رسد (یا بعبارت دیگر از حالت نامرئی به شفافیت کامل رسیده و دوباره از شفافیت آن کاسته شده و نامرئی می شود ) . خوب تنها Control که برای این برنامه نیاز داریمTimer می باشد . کدی که در Form_Load می بینید باعث می شود که فرم در ابتدای امر نامرئی باشد چون مقدار bAlfa آنرا 0 داده ام

    Private Sub Form_Load()

    Dim Ret As Long
    'Set the window style to 'Layered'
    Ret = GetWindowLong(Me.hWnd, GWL_EXSTYLE)
    Ret = Ret Or WS_EX_LAYERED
    SetWindowLong Me.hWnd, GWL_EXSTYLE, Ret
    'SetLayeredWindowAttributes Me.hWnd,0,(0-255),LWA_ALPHA
    SetLayeredWindowAttributes Me.hWnd,0,0,LWA_ALPHA
    Timer1.interval = 1
    End
    End Sub

    در مرحله بعد برای اینکه فرم از حالت نامرئی به مرئی برسد (یعنی مقدار آن از 0 به 255 برسد) یک حلقه For نوشتم . حال برای اینکه فرم دوباره از حالت مرئی به نامرئی برشد یک حلقه For دیگر با گام افزایش -1 نوشتم تا مقدار آنرا کاهش دهد .

    Private Sub Timer1_Timer()

    For i = 1 To 255
    SetLayeredWindowAttributes Me.hWnd,0,CByte(i),LWA_ALPHA
    Next i

    For i = 255 To 1 Step -1
    SetLayeredWindowAttributes Me.hWnd,0,CByte(i),LWA_ALPHA
    Next i

    Timer1.Enabled = False

    End Sub
     
  3. کاربر ارشد

    تاریخ عضویت:
    ‏6/9/12
    ارسال ها:
    14,318
    تشکر شده:
    2,702
    امتیاز دستاورد:
    0
    حرفه:
    daneshjo
    پاسخ : سورس های کاربردی و پیشرفته

    توابع Dial-Up :
    Name
    Description
    InternetGetConnectedState
    Retrieves the current state of the Internet connection
    InternetAutodial
    Initiates an unattended dial-up connection
    InternetAutodialHangup
    Disconnects a modem connection initiated by
    InternetDial
    Initiates a dial-up connection
    InternetHangUp
    Disconnects a modem connection initiated by InternetDial
    InternetGoOnline
    Prompts the user for permission to initiate a dial-up connection to the given URL
    InternetSetDialState
    Sets the current state of the Internet connection
     
  4. کاربر ارشد

    تاریخ عضویت:
    ‏6/9/12
    ارسال ها:
    14,318
    تشکر شده:
    2,702
    امتیاز دستاورد:
    0
    حرفه:
    daneshjo
    پاسخ : سورس های کاربردی و پیشرفته

    توابع عمومی اينترنت :
    Name
    Description
    InternetOpen
    Initializes the Win32 Internet functions
    InternetConnect
    Opens an FTP, Gopher, or HTTP session for a given site
    InternetCloseHandle
    Closes a single Internet handle or a subtree of Internet handles
    InternetErrorDlg
    Displays a dialog box for the error that is passed to InternetErrorDlg
    InternetFindNextFile
    Continues a file search started as a result of a previous call to FtpFindFirstFile or GopherFindFirstFile
    InternetGetLastResponseInfo
    Retrieves the last Win32 Internet function error description or server response on the thread calling this function
    InternetLockRequestFile
    Allows the user to place a lock on the file being used
    InternetQueryDataAvailable
    Queries the amount of data available
    InternetQueryOption
    Queries an Internet option on the specified handle
    InternetReadFile
    Reads data from a handle opened by the InternetOpenURL, FtpOpenFile, GopherOpenFile, or HttpOpenRequest function
    InternetReadFileEx
    Reads data from a handle opened by the InternetOpenURL, FtpOpenFile, GopherOpenFile, or HttpOpenRequest function
    InternetSetFilePointer
    Sets a file position for InternetReadFile
    InternetSetOption
    Sets an Internet option
    InternetSetStatusCallback
    Sets up a callback function that Win32 Internet functions can call as progress is made during an operation
    InternetStatusCallback
    Placeholder for the application-defined status callback function
    InternetTimeFromSystemTime
    Formats a date and time according to the specified RFC format (as specified in the HTTP version 1.0 specification)
    InternetTimeToSystemTime
    Takes an HTTP time/date string and converts it to a SYSTEMTIME structure
    InternetUnlockRequestFile
    Unlocks a file that was locked using InternetLockRequestFile
    InternetWriteFile
    Writes data to an open Internet file
    InternetConfirmZoneCrossing
    Checks for changes between secure and nonsecure URLs
     
  5. کاربر ارشد

    تاریخ عضویت:
    ‏6/9/12
    ارسال ها:
    14,318
    تشکر شده:
    2,702
    امتیاز دستاورد:
    0
    حرفه:
    daneshjo
    پاسخ : سورس های کاربردی و پیشرفته

    توابع URL :
    Name
    Description
    InternetCanonicalizeUrl
    Canonicalizes a URL, which includes converting unsafe characters and spaces into escape sequences.
    InternetCombineUrl
    Combines a base and relative URL into a single URL. The resultant URL will be canonicalized.
    InternetCrackUrl
    Cracks a URL into its component parts.
    InternetCreateUrl
    Creates a URL from its component parts.
    InternetOpenUrl
    Begins reading a complete FTP, Gopher, or HTTP URL
     
  6. کاربر ارشد

    تاریخ عضویت:
    ‏6/9/12
    ارسال ها:
    14,318
    تشکر شده:
    2,702
    امتیاز دستاورد:
    0
    حرفه:
    daneshjo
    پاسخ : سورس های کاربردی و پیشرفته

    توابع FTP :
    Name
    Description
    FtpCreateDirectory
    Creates a new directory on the FTP server
    FtpDeleteFile
    Deletes a file stored on the FTP server
    FtpFindFirstFile
    Searches the specified directory of the given FTP session
    FtpGetCurrentDirectory
    Retrieves the current directory for the given FTP session
    FtpGetFile
    Retrieves a file from the FTP server and stores it under the specified file name, creating a new local file in the process
    FtpPutFile
    Stores a file on the FTP server
    FtpRemoveDirectory
    Removes the specified directory on the FTP server
    FtpRenameFile
    Renames a file stored on the FTP server
    FtpSetCurrentDirectory
    Changes to a different working directory on the FTP server
     
  7. کاربر ارشد

    تاریخ عضویت:
    ‏6/9/12
    ارسال ها:
    14,318
    تشکر شده:
    2,702
    امتیاز دستاورد:
    0
    حرفه:
    daneshjo
    پاسخ : سورس های کاربردی و پیشرفته

    توابع HTTP :
    Name
    Description
    HttpAddRequestHeaders
    Adds one or more HTTP request headers to the HTTP request handle
    HttpEndRequest
    Ends an HTTP request
    HttpOpenRequest
    Opens an HTTP request handle
    HttpQueryInfo
    Queries for information about an HTTP request
    HttpSendRequest
    Sends the specified request to the HTTP server
    HttpSendRequestEx
    Sends the specified request to the HTTP server
     
  8. کاربر ارشد

    تاریخ عضویت:
    ‏6/9/12
    ارسال ها:
    14,318
    تشکر شده:
    2,702
    امتیاز دستاورد:
    0
    حرفه:
    daneshjo
    پاسخ : سورس های کاربردی و پیشرفته

    به دست آوردن سورس یک صفحه :

    کار با Inet و Web Browser خیلی جالب هست :

    اگرمیخواهیداین دو کنترل به کنترلهای دیگر بپیوندند.
    از منوی project گزینه Components را کلیک کنید.
    از بین لیست کنترلها دو گزینه microsoft internet transfer control 6.0
    و microsoft internet controls را تیک بزنید و OK کنید.

    کاراصلی WebBrowser نمایش صفحات وب و معمول ترین کار کنترل Inet بدست آوردن سورس یک آدرس است.

    کنترلها: Command1,Text1,Text2,WebBrowser1,Inet1


    کدهایی که لازمه وارد کنید :

    Private Sub Command1_Click()
    If Text1.Text <> "" Then
    WebBrowser1.Navigate Text1.Text
    Text2 = Inet1.OpenURL(Text1.Text)
    End If
    End Sub

    Private Sub Form_Load()
    Me.Width = 5325
    Me.Height = 5400
    Me.Caption = "Mini browser"
    With WebBrowser1
    .Width = 4575
    .Height = 2375
    .Top = 600
    .Left = 240
    End With
    With Text1
    .Top = 240
    .Left = 1680
    .Height = 285
    .Width = 3135
    .Text = "http://www.vbassistant.blogfa.com"
    End With
    With Text2
    .Width = 4575
    .Height = 2375
    .Top = 3000
    .Left = 240
    .Text = ""
    End With
    With Command1
    .Top = 120
    .Left = 240
    .Height = 375
    .Width = 1215
    .Caption = "Navigate"
    .Default = True
    End With
    End Sub
     
  9. کاربر ارشد

    تاریخ عضویت:
    ‏6/9/12
    ارسال ها:
    14,318
    تشکر شده:
    2,702
    امتیاز دستاورد:
    0
    حرفه:
    daneshjo
    پاسخ : سورس های کاربردی و پیشرفته

    می خواهید ساختن یک برنامه مالتی مدیا رو یاد بگیرید ؟؟؟

    اگه می خواهید ، با من همراه بشید

    این کارا رو که می گم دنبال کنید :

    1)ازمنوی Project گزینه Components را انتخاب کنید .

    2)از لیست باز شده گزینه های زیر را تیک بزنید :

    Microsoft Common Dialog control 6.0
    Microsoft Windows Common Controls 5.0 (SP2)
    Windows Media Player


    به برنامه خود کنترلهای زیر را اضافه کنید [​IMG] مواد لازم )
    Command1
    Command2
    Label1
    Timer1
    Slider1
    CommonDialog1
    MediaPlayer1


    کدهای زیر رو اضافه کنید :



    Option Explicit
    Dim File_name As String
    Dim pp As Boolean

    Private Sub Command1_Click()
    Call Form_Load
    End Sub

    Private Sub Command2_Click()
    On Error Resume Next
    If pp = False Then
    pp = True: Command2.Caption = "Play"
    MediaPlayer1.Pause
    Else
    pp = False: Command2.Caption = "Pause"
    MediaPlayer1.Play
    End If
    End Sub

    Private Sub Form_Initialize()
    MsgBox "http://vbassistant.blogfa.com", vbInformation, "About"
    Me.Move 4000, 4000, 5000, 1100
    Command1.Move 10, 10, 700, 330
    Command2.Move 10, 340, 700, 330
    Slider1.Move 800, 110, 3000, 1000
    Label1.Move 3900, 240, 1500, 1000
    Command1.Caption = "Open"
    Command2.Caption = "Pause"

    End Sub

    Private Sub Form_Load()
    On Error Resume Next
    pp = False
    Timer1.Interval = 100
    Me.BorderStyle = 3
    CommonDialog1.Filter = "mp3 File|*.mp3|All File|*.*"
    CommonDialog1.ShowOpen
    File_name = CommonDialog1.FileName
    Me.Caption = File_name
    MediaPlayer1.FileName = File_name
    MediaPlayer1.Play
    Slider1.Max = MediaPlayer1.Duration
    End Sub

    Private Sub Slider1_Scroll()
    MediaPlayer1.CurrentPosition = Slider1.Value
    End Sub

    Private Sub Timer1_Timer()
    Slider1.Value = MediaPlayer1.CurrentPosition
    Label1.Caption = Int(MediaPlayer1.CurrentPosition) & " Seconds"
    End Sub
     
  10. کاربر ارشد

    تاریخ عضویت:
    ‏6/9/12
    ارسال ها:
    14,318
    تشکر شده:
    2,702
    امتیاز دستاورد:
    0
    حرفه:
    daneshjo
    پاسخ : سورس های کاربردی و پیشرفته

    ايجاد کلاسی برای کار با فايلهای XML
    برای قرار دادن پارامترهای اتصال به بانک اطلاعاتی از فايل XML استفاده خواهيم نمود . بنابراين ابتدا بايستی کلاسی برای کار با فايلهای XML بنويسيم . توجه داشته باشيد که کلاسی که در اين بخش معرفی می شود کلاسی ساده می باشد که فقط با آن می توان مقدار يک ند Node وجود در فايل xml را خواند . در صورت نياز ، می توانيد خودتان متدهای ديگری را به آن اضافه کنيد . برای اين منظور نکاتی را در انتهای همين بخش آورده ام .
    XML يک زبان نشانه ای توسعه پذير ( eXtensible Markup Language ) است که در سال 1998 توسط کنسرسيوم وب جهانی W3C ايجاد شد . XML واقعاً يک زبان نيست بلکه يک متا-زبان است و برای توصيف ساير زبانها بکار می رود . داده ها در فايلهای XML براحتی قابل تعريف و استفاده هستند .
    مثالی از يک فايل XML :


    <user>
    <name>ali</name>
    <id>12</id>
    </user>


    کار با فايلهای XML در وی بی :
    برای کار با فايلهای xml در ويژوال بيسيک بايستی ابتدا از بخش References مورد Microsoft XML 3.0 را انتخاب کنيد . سپس يک Class Modules به پروژه تان اضافه کنيد و نام آنرا XMLReader بگذاريد . در اين کلاس ابتدا يک متغير از نوع شی xml برای کار با فايلهای xml تعريف می کنيم :

    Private xml

    سپس متدی برای مقداردهی اوليه شی xml می نويسيم . اين متد دارای يک متغير ورودی است که نام فايل xml مورد نظر می باشد :

    Public Sub Initiate(ByVal filename As String)x
    Set xml = CreateObject("Microsoft.XMLDOM")x
    xml.async = False
    xml.Load (server.MapPath(filename))x
    End Sub

    توجه کنيد که در کد فوق از شی server برای يافتن مسير فيزيکی فايل XML استفاده شده است بنابراين ابتدا بايستی در Class_Initialize اين شی را مطابق مطالب درس دوم مقداردهی کنيد .

    حال بايستی متدی برای خواندن مقدار يک ند از فايل xml بنويسيم . در اين متد توسط يک حلقه for each ندهای فايل را بررسی می کنيم تا ندی را بيابيم که نامش مشابه با متغير ورودی متد است . سپس با استفاده از خاصيت nodeValue می توانيم مقدار آنرا بخوانيم .

    Public Function getvalue(ByVal NName As String) As String
    Dim x
    getvalue = ""x
    For Each x In xml.documentElement.childNodes
    If x.nodeName = NName Then
    getvalue = x.childNodes(0).nodeValue
    Exit For
    End If
    Next
    End Function

    مثالی از کار با کلاس XMLReader :
    همانطور که گفته شد می توانيم پارامترهای اتصال به بانک اطلاعاتی را در فايل XML قرار دهيم و در زمان Initiate کردن ADODB برای اتصال به بانک اطلاعاتی ، آنها را بخوانيم :

    Dim xmlf As New XMLReader
    Call xmlf.Initiate("config.xml")x
    userName = xmlf.getvalue("DataBaseID")x
    Password = xmlf.getvalue("DataBasePassword")x
    database_name = xmlf.getvalue("DataBaseName")x
    server_name = xmlf.getvalue("ServerAddress")x

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


    <Application>testIt</Application>
    <ServerAddress>192.168.0.1</ServerAddress>
    <DataBaseName>Edatabase</DataBaseName>
    <DataBaseID>Euser</DataBaseID>
    <DataBasePassword>Epass</DataBasePassword>


    ساير نکات برای توسعه کلاس فوق :
    نکات زير شما را در نوشتن کلاسی کاملتر راهنمايي می کنند :

    1 - توجه داشته باشيد که xml.documentElement بعنوان ريشه فايل xml محسوب می شود . بنابراين برای دسترسی به ريشه می توان يک شی ريشه نيز تعريف کرد :

    Dim root
    Set root = xml.documentElement

    2 - در صورتيکه يک فايل xml دارای چندين ند در ريشه اش باشد و هر ند ريشه نيز دارای چندين ند درونی باشد توسط خاصيت root.childNodes.length و با استفاده از يک حلقه for می توان به اين ندها دسترسی داشت . برای مثال فايل زير را درنظر بگيريد :


    <people>
    <user>
    <name>ali</name>
    <id>1</id>
    </user>
    <user>
    <name>reza</name>
    <id>2</id>
    </user>
    </people>


    حلقه زير روش دسترسی را به اين فايل نشنان می دهد :

    For I = 0 TO (root.childNodes.length - 1)x
    Set thisChild = root.childNodes(I)x
    name = thisChild.childNodes(0).Text
    id = thisChild.childNodes(1).Text
    Next

    3 – اضافه کردن ند به فايل : برای اضافه کردن ند از متدهای createNode و appendChild استفاده می شود برای مثال برای اضافه کردن يک user جديد به مثال فوق :

    Set newuser = xml.createNode("element", "people", "")x
    Dim name,id
    Set newname = xml.createNode("element", "name", "")x
    newname.text = yourname
    Set newid = xml.createNode("element", "id", "")x
    newid.text = yourid
    newuser.appendChild(newname)x
    newuser.appendChild(newid)x
    root.appendChild(newuser)x

    در انتها نيز بايستی فايل را ذخيره نمود :

    xml.save(Server.Mappath(filename))x

    4 – حذف يک ند از فايل : برای حذف يک ند از فايل توسط يک حلقه for بايستی ند مورد نظر را يافته و سپس توسط متد removeChild آنرا حذف کنيم :

    found = False
    For I = (root.childNodes.length - 1) TO 0 STEP -1
    Set thisChild = root.childNodes(I)x
    name = thisChild.childNodes(0).Text
    If name = searchname Then
    root.removeChild(thisChild)x
    found = True
    End If
    Next