وبلاگ تخصصي برنامه نويسي با VB

پاسخ به سوالات-۷


1 – در مورد  Crystal Report و  گزارشهای شرطی توضيح دهيد .
پاسخ : به کتاب برنامه نويسی بانکهای اطلاعاتی در ويژوال بيسيک مراجعه کنيد . در ضمن اگر فرصت کردم در این زمینه مطالبی خواهم نوشت .

2 – چگونه می توان توسط وی بی یک فایل را از روی کامپيوتر به روی دایرکتوری های یک سایت آپ لود کرد ؟
پاسخ : در آرشیو سایت به بخش آشنایی با کنترل Internet Transfer مراجعه کنید .

3 – چگونه می توان با VB Script Control کار کرد یعنی مثلاً در یک TextBox بنویسیم sin(x) و در کد برنامه sin(x) قرار داده شود ؟
پاسخ : به پرسش و  پاسخهای قبلی مراجعه کنید .

4 – چگونه می توان در وی بی برنامه ای نوشت که نام و مسیر یک فایل را از کاربر بگیرد و در مسیر انتخاب شده شورتکاتی از فایل گرفته شده ایجاد کند ؟
پاسخ : ابتدا متغيرهای زیر را که از نوع Object هستند تعريف کنید :

    Dim wsh As Object
    Dim Shortcut As Object

سپس بايستی شی wsh را ايجاد نمائید :

    Set wsh = CreateObject("wscript.shell")

سپس بايستی شی Shortcut را ايجاد نمائيد :

    Set Shortcut = wsh.CreateShortcut("c:\YourProgram.lnk")

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

    Shortcut.TargetPath = "C:\Program Files\Test\YourProgram.exe"
    Shortcut.IconLocation = "C:\Program Files\Test\YourIcon.ico"
    Shortcut.WorkingDirectory = "C:\Program Files\Test\"
    Shortcut.Description = "Your Description"

پارامتر TargetPath برنامه مرتبط با شورتکات را نشان می دهد .
در پایان بايستی شورتکات را ذخيره کنيد :

    Shortcut.Save

نکته : برای ايجاد شورتکات در دسکتاپ یا در Startup ، بايستی متغيری از نوع SpecialForders ايجاد نمائيد :

Dim sf As Object
Set sf = wsh.SpecialFolders

سپس محل ساخت شورتکات را بصورت  sf("AllUsersDesktop") & YourPath و یا sf("AllUsersStartup") & YourPath بدهيد .


5 – چگونه می توان در وی بی مسیر دایرکتوری استارت آپ را پیدا کرد ؟
پاسخ : با استفاده از روش زیر می توانید مسیر کلیه دایرکتوریهای سیستمی را پیدا کنید :
ابتدا دو تابع زیر را از کتابخانه Shell32 تعريف کنيد :

Private Declare Function SHGetSpecialFolderLocation Lib "shell32" (ByVal hwnd As Long, ByVal nFolder As Long, Pidl As Long) As Long
Private Declare Function SHGetPathFromIDList Lib "shell32" (Pidl As Long, ByVal FolderPath As String) As Long

حال متغير SystemFolder از نوع Enum را بصورت زیر تعریف کنید :

Public Enum SystemFolder
Desktop = 0
StartMenu_Programs = 2
My_Documents = 5
Favorites = 6
Startup = 7
Recent = 8
SendTo = 9
Start_Menu = 11
Windows_Desktop = 16
Network_Neighborhood = 19
Fonts = 20
ShellNew = 21
AllUsers_Desktop = 25
ApplicationData = 26
Printhood = 27
TemporaryInternetFiles = 32
Cookies = 33
History = 34
End Enum

تابع پیدا کردن دایرکتوریهای سیستمی بصورت زیر خواهد بود :

Public Function FindSystemFolder(ByVal lngNum As SystemFolder) As String
   Dim lpStartupPath As String * MAX_PATH
   Dim Pidl As Long
   Dim hResult As Long
   hResult = SHGetSpecialFolderLocation(0, lngNum, Pidl)
   If hResult = 0 Then 'there is a result
      hResult = SHGetPathFromIDList(ByVal Pidl, lpStartupPath)
      If hResult = 1 Then
         lpStartupPath = Left$(Trim$(lpStartupPath), InStr(lpStartupPath, Chr(0)) - 1)
         FindSystemFolder = Trim$(lpStartupPath)
      End If
   End If
End Function

6 – چگونه می توان از دستورات Command Prompt مثلاً دستورات Net Command در وی بی استفاده کرد ؟
پاسخ : فکر نمی کنم روشی برای استفاده از نتيجه این دستورات در وی بی وجود داشته باشد اما برای دسترسی به Command Prompt در وی بی بایستی از روش Shell Programming استفاده کنید . برا ی اطلاعات بیشتر به این کتاب مراجعه کنید .

7 – در مورد وارد کردن فایلهای Pdf در وی بی با اینکه نرم افزار Adobe Acrobat روی سیستم من نصب است اما در بخش References نتوانستم نام Adobe Acrobat Type Library را پیدا کنم همچنین با این روش نمی توان به عکسهای داخل فایل Pdf دسترسی پیدا کرد .
پاسخ : این reference در موقع نصب Adobe Acrobat 5 ( کل Acrobat  Adobe و نه فقط Reader آن ) در دایرکتوری  \Adobe\Acrobat 5.0\Acrobat قرار داده می شود . در مورد عکس هم من راه حلی به ذهنم نرسید و بنظر من بهترست از همان Ocx موجود استفاده کنید .

8 – من یک سخت افزار ساخته ام که با ویندوز 98 و با پورت سریال و تحت وی بی کار می کند . مشکلی که من دارم اینست که وقتی کامپیوتر روشن می شود و  ویندوز در حال بوت شدن است سیستم عامل پورت سریال را چک می کند و این باعث یک فرمان ناخواسته در سخت افزار می شود . آیا راهی وجود دارد که ویندوز 98 در هنگام بوت شدن پورتهای سریال را چک نکند ؟
پاسخ : یک روش اینست که یک مدار محافظت کننده را به سخت افزارتان اضافه کنید که در هنگام بوت شدن فرمان ناخواسته ای اجرا نشود . در مورد غیر فعال کردن گزینه چک پورت سریال من روشی پیدا نکردم .

9 – چگونه می توان با کلیک کردن روی یکی از مقادیر درون یک کمبو باکس ( استیل 2 : دراپ داون لیست ) از فرم شامل کمبو باکس خارج و فرم دیگری را ظاهر نمود ؟
پاسخ : با استفاده از رویداد Click مربوط به کمبوباکس و متد Hide و Show مربوط به فرم .
برای مثال فرض کنید یک کمبوباکس با نام Combo1 با یک آیتم با مقدار Test1 داشته باشیم . کد زیر را برای رویداد Click آن بنویسید :

  If Combo1.Text = "Test1" Then
     Form1.Hide
     Form2.Show
  End If

10 – چگونه می توان درایو سی دی رام را در وی بی تشخیص داد ؟
پاسخ : ابتدا مورد Microsoft Scripting Runtime را از بخش references پروژه خود اضافه کنید . سپس کد زیر را برای مشخص نمودن سی دی درایو در برنامه تان بنویسید :

Dim fso As New Scripting.FileSystemObject
Set fso = New Scripting.FileSystemObject
Dim drv As Drive
For Each drv In fso.Drives
     If drv.DriveType = CDRom Then
          CDPath = drv.Path
          Exit For
     End If
Next drv
MsgBox (CDPath)
Set drv = Nothing
Set fso = Nothing

+ به سایر سوالات بزودی پاسخ می دهم .

 

+ حامد شیدائیان ; ٢:٤۸ ‎ب.ظ ; شنبه ٩ اسفند ،۱۳۸٢
comment نظرات ()