پاسخ : سورس های کاربردی و پیشرفته چگونگی ایجاد منو برای کلیک راست... خوب ابتدا توسط 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
پاسخ : سورس های کاربردی و پیشرفته می خواهم چگونگی ساخت یک 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
پاسخ : سورس های کاربردی و پیشرفته توابع 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
پاسخ : سورس های کاربردی و پیشرفته توابع عمومی اينترنت : 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
پاسخ : سورس های کاربردی و پیشرفته توابع 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
پاسخ : سورس های کاربردی و پیشرفته توابع 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
پاسخ : سورس های کاربردی و پیشرفته توابع 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
پاسخ : سورس های کاربردی و پیشرفته به دست آوردن سورس یک صفحه : کار با 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
پاسخ : سورس های کاربردی و پیشرفته می خواهید ساختن یک برنامه مالتی مدیا رو یاد بگیرید ؟؟؟ اگه می خواهید ، با من همراه بشید این کارا رو که می گم دنبال کنید : 1)ازمنوی Project گزینه Components را انتخاب کنید . 2)از لیست باز شده گزینه های زیر را تیک بزنید : Microsoft Common Dialog control 6.0 Microsoft Windows Common Controls 5.0 (SP2) Windows Media Player به برنامه خود کنترلهای زیر را اضافه کنید مواد لازم ) 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
پاسخ : سورس های کاربردی و پیشرفته ايجاد کلاسی برای کار با فايلهای 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