جواب سوال

 

باسلام دوست عزیز:

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

سوال شما : فرض کنیم یک تکست دارم در صفحه ی فرم...به اسم t1

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

میخواهم t1 را بگونه ای کنم که اگر از برنامه خارج شدم...و یا رایانه را روشن خاموش کردم...رنگ و مشخصات

 دیگری که به آن وارد کردم هنوز باقی باشد...

جواب: دوست عزیز شما از راههای متفاوتی می توانید این کار را انجام دهید ( ذخیره در رجیستری ویندوز ،

 استفاده از فایلها ، استفاده از بانکهای اطلاعاتی و ... ) اما به نظر من ساده ترین روش استفاده از فایلها می

باشد چون دستورات ساده تری دارد. بافرض خودتان کار را ادامه می دهیم: 

برای این کار شما احتیاج دارید که یک فایل را باز کنید و اطلاعات را درون ان ذخیره ( هنگام خروج از برنامه ) و 

اطلاعات را از ان بخوانید (هنگام ورود مجدد به برنامه.)

ادامه نوشته

سوالات

 

برنامه ای که 10 عدد را بگیرد و ذخیره کند و سپس عدد دیگری را بگیرد و در آن جستجو کند اگر عدد بود

پیغام دهد "ok" در غیر این صورت "not found " ؟؟؟؟

دوست عزیز کد برنامه شما به این صورت است: ( بهترین روش )

 

Dim aryy(1 To 10) As Integer


Private Sub Command1_Click()
Open (App.Path & "\Log.log") For Append As #1
Print #1, ("______________________________")
Print #1, ("[" & Time & "]")
List1.Clear
    For i = 1 To 10
        aryy(i) = InputBox("Enter Number:")
        Print #1, "Number" & Trim(Str(i)) & "=" & Str(aryy(i))
        List1.AddItem (aryy(i))
    Next
Print #1, ("-------------")
Close
End Sub

Private Sub Command2_Click()
 Dim SFind As Integer
 Dim vfind As Boolean
 a = 0
Open (App.Path & "\Log.log") For Append As #1
SFind = InputBox("Please Enter Find Number:", "Find Number")
Print #1, ("Find Number=" & Str(SFind))
For i = 1 To 10
    If aryy(i) = SFind Then
        vfind = True
        Exit For
    End If
Next
If vfind = True Then
    Call MsgBox("Number" & Str(SFind) & " Find!", vbInformation, "Find Number")
Print #1, ("Number Find!")
Print #1, ("-------------")
Else
    Call MsgBox("Number" & Str(SFind) & " Not Find!", vbInformation, "Not Find")
Print #1, ("Number Not Find!")
Print #1, ("-------------")
End If
Close
End Sub

Private Sub Command3_Click()
Open (App.Path & "\Log.log") For Append As #1
    Print #1, ("End Program ___________________________")
    End
Close
End Sub

Task Bar را مخفی کنید...!

 

برای این کار ابتدا دو دکمه برروی پروژه درگ کنید سپس کد زیر را در برنامه کپی کنید:

Private Declare Function SetWindowPos Lib "user32" (ByVal hwnd _
As Long, ByVal hWndInsertAfter As Long, ByVal x As Long, _
ByVal y As Long, ByVal cx As Long, ByVal cy As Long, ByVal _
wFlags As Long) As Long

Private Declare Function FindWindow Lib "user32" Alias _
"FindWindowA" (ByVal lpClassName As String, ByVal _
lpWindowName As String) As Long

Const SWP_HIDEWINDOW = &H80
Const SWP_SHOWWINDOW = &H40


Private Sub Command1_Click()
   Dim Thwnd as Long
   Thwnd = FindWindow("Shell_traywnd", "")
   Call SetWindowPos(Thwnd, 0, 0, 0, 0, 0, SWP_HIDEWINDOW)
End Sub

Private Sub Command2_Click()
   Dim Thwnd as Long
   Thwnd = FindWindow("Shell_traywnd", "")
   Call SetWindowPos(Thwnd, 0, 0, 0, 0, 0, SWP_SHOWWINDOW)
End Sub

عکس صفحه نمایشگر خود را بچرخانید...!

 

با استفاده از توابع API  عکس صفحه نمایش خود را بچرخانید: 

Private Declare Function GetDesktopWindow Lib "user32" () As Long

Private Declare Function GetDC Lib "user32" (ByVal hwnd As Long) As Long

Private Declare Function StretchBlt Lib "gdi32" _

                               (ByVal hdc As Long, _
                               ByVal x As Long, _
                               ByVal y As Long, _
                               ByVal nWidth As Long, _
                               ByVal nHeight As Long, _
                               ByVal hSrcDC As Long, _
                               ByVal xSrc As Long, _
                               ByVal ySrc As Long, _
                               ByVal nSrcWidth As Long, _
                               ByVal nSrcHeight As Long, _
                               ByVal dwRop As Long) As Long

Private Sub Form_KeyDown(KeyCode As Integer, Shift As Integer)

    End

End Sub

Private Sub Form_Load()

    Form1.AutoRedraw = True

    Form1.ScaleMode = vbPixels

    a = GetDesktopWindow()

    b = GetDC(a)

    StretchBlt Form1.hdc, 0, 0, Screen.Width, Screen.Height, b, 0, _

          Screen.Height, Screen.Width, -Screen.Height, vbSrcCopy

End Sub

توابع API

سلام یکی از دوستان  پیام دادن و گفته اند در مورد [Api Function] کمی بیشتر توضیح دهیم.

 * همانطور که در مبحث های قبلی گفته شد این توابع را هم می توان در پروژه به کار برد که در این حالت با [Private] و در صورتی که درModule  و به صورت سراسری بخواهید تعریف کنید باید از            [Public]  استفاده گرددو بهتر است که در Module  استفاده گردد.

Public Declare Function PaintDesktop Lib "user32" _

(ByVal hdc As Long) As Long

------------------------------------

Private Sub cmdChange_Click ()

    PaintDesktop Form1.hdc

End Sub

وقتی روی فرم یک دکمه گذاشتید نام ان را به [cmdChange] تغییر داده و کد با لا را در برنامه استفاده کنیدو در صورتی که بخواهید در کنترل PictureBox  نمایش دهید کد دکمه را اینگونه ویرایش کنید         [PaintDesktop PictureBox1.hdc] این تکه کد به شما کمک می کند تا ( Background را در فرم قرار داده و عکس را در فرم نمایش دهید )

در اینده سعی می کنم چند مثال برای درک بهتر برایتان بزنم. (استفاده از توابع API به شما کمک می کند تا برنامه ای سیستمی با کاربرد های با لا درست کنید.)

مثال ویژوال بیسیک

 

برنامه ای بنویسید که برای اعداد 1 تا 10 مجموع اعداد از یک تا آن عدد را نمایش دهد.


 

    Private Sub Command20_Click()

            Dim i As Integer, j As Integer, s As Integer

            For i = 1 To 10

            s = 0

            For j = 1 To i

            s = s + j

           Next

          Print s;

          Next

     End Sub

تغییر ظاهر برنامه ها از کلاسیک به ویندوز XP

 

ابتدا کد زیر را در برنامه قرار دهید:

Private Declare Function InitCommonControls Lib "comctl32.dll" ( ) As Long

Private Sub Form_Initialize()

         InitCommonControls

End Sub

سپس  فایل زیر را دانلود کرده و آن را به صورت زیر نام گذاری می کنیم.و کنار برنامه کامپایل شده می گذاریم.

ProgramName.exe.manifest

دانلود فایل 

مثال

۱. ده عدد را گرفته تعیین کند کدام زوج و کدام فرد است.

Private Sub Command1_Click()

  Dim i As Integer, n As Integer

  For i = 1 To 10

    n = InputBox("Enter the number")

    Print n; Tab(10); IIf(n Mod 2 = 0, "Even", "Odd")

  Next

End Sub

مثال

 

برنمه ای بنویسید که ۱۰ اسم را از ورودی دریافت و تعداد افرادی را نامشان  Ali است، نمایش دهد.

 

Private Sub Command1_Click()

   For i = 1 To 10

           If LCase(InputBox("Enter a name: " & i)) = "Ali" Then a = a + 1

  Next

Print a

End Sub

 

توابع مديريت رشته ها

----------------------------------------------------------

    Asc(string)

کد اسکی اولین کاراکتر رشته ورودي را بر می گرداند .

----------------------------------------------------------


    LCase(string)

تمام کاراکترهاي رشته ورودي را به حروف کوچک تبدیل می کند .

----------------------------------------------------------

    Space(number)

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

----------------------------------------------------------

     Trim(string)

فاصله ها را دررشته مورد نظر پاك مي كند.

-- دو تابع ديگه هم هست:

RTrim و LTrim

در اين دوتابع فاصله ها رااز سمت چپ و راست حذف مي كند.

----------------------------------------------------------

مجموع اعداد زوج و فرد

مجموع اعداد زوج و فرد 0 تا 100 را محاسبه کرده و جداگانه چاپ کند.

Private Sub Command14_Click()

Dim i As Integer, s As Integer

For i = 0 To 100 Step 2

s = s + i

Next

MsgBox Prompt:=s, Title:="Events"

s = 0

For i = 1 To 100 Step 2

s = s + i

Next

MsgBox Prompt:=s, Title:="Odds"

End Sub

 

توضیحاتی درباره فلوچارت

 

فلوچارت چيست؟

فلوچارت نموداری است برای نمایش داده‌ها، اطلاعات و روند کار یک الگوریتم بر روی آنها، به‌وسیله

 نمادهای خاص و قرارداد شده وهمچنین خطوط جهت‌دار بین آنها.

فلوچارت به چه کاری می‌آید؟

فلوچارت در واقع نقشه‌ای است که برنامه‌نویسان رایانه قبل از نوشتن برنامه به زبان برنامه‌نویسی اصلی

آن را ترسیم می‌کنند. با مروری بر فلوچارت روند اجرای عملیات، مراحل و جزئیات برنامه و ورودی و

خروجی هر مرحله از برنامه مشخص می‌شود. استفاده از فلوچارت جهت حل هر مسئله‌ای مفید است و

بدون در نظر گرفتن زبان برنامه‌نویسی، نوشتن برنامه را سهولت می‌بخشد. علاوه بر این فلوچارت جزئی

باارزش از مستندات هر برنامه می‌باشد که با کمک آن تفسیر برنامه، عیب‌یابی و استفاده توسط

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

ترتیب آنها جهت به دست آوردن نتیجه مورد نظر با استفاده از داده‌های ورودی به الگوریتمی که فلوچارت

برای آن کشیده می‌شود، لازم است. البته فلوچارت كاربردهاي ديگري در علوم ديگر و حتي در زندگي

هم دارد.درحقيقت شايد بتوان گفت هر الگوريتمي يك فلوچارت دارد و زندگي نيز نوعيالگوريتم 

 است پس زندگي نيز فلوچارت دارد!

محاسبه فاکتوریل

 

 برنامه ای بنویسید که یک عدد را گرفته و فاکتوریل آن را محاسبه و چاپ کند؟

Private Sub Command1_Click()

Dim i,f As Integer

  f = 1

  For i = 1 To InputBox("Enter a number to reach its single factorial:")

       f = f * i

  Next

  MsgBox f

End Sub

 ** دوستان عزیز شرح دوتابع (InputBox) و (MsgBox) را به طور کامل برایتان می گذاریم**

شناسایی HDD و Cd Rom

 

تشخیص درایوها بااستفاده از تابع "GetDriveType" : 

کدی که در براي شما گذاشته شده این کار را برای شما در ویژوال بیسیک انجام میدهد و می تواند ۳ نوع درایو زیر را مشخص کند.

۱- هارد fixed disk

۲- سی دی رام cd rom

۳-فلش دیسکremovable disk

البته:

** برای این کار احتیاج به timer با interval=100 می باشد.

Private Declare Function GetDriveType Lib "kernel32" Alias "GetDriveTypeA" (ByVal nDrive As String) As Long

Private Sub Drive1_Change()Me.AutoRedraw = True
  Select Case GetDriveType(Drive1.Drive)     Case Is = 1
        Me.Print "Do not Exists"
     Case Is = 2
        Me.Print "Removable"
     Case Is = 3
        Me.Print "Drive Fixed"
     Case Is = 4
        Me.Print "Remote or Network"
     Case Is = 5
        Me.Print "Cd-Rom"
     Case Is = 6
        Me.Print "Ram disk"
     Case Else
        Me.Print "Unrecognized"
 End SelectEnd Sub

توابع sin,cos,tan,cot

 

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

Sin(0) = 0.00

Cos(2.3) = -0.67

Tan(0) = 0.00

*دقت داشته باشید که درون ( ) زاویه باید برحسب رادیان باشد.

*می تونید برای تبدیل رادیان از فرمول ریاضی زیر استفاده کنید:

زاویه برحسب درجه                =         ۳.۱۴ / (زاویه برحسب رادیان *۱۸۰)

زاویه برحسب رادیان               =         ۱۸۰/ (زاویه برحسب درجه * ۳.۱۴)

بنابراین برای بدست آوردن یکی از نسبت های  مثلثاتی بالا باید از رابطه ی دوم استفاده کنید تا ابتدا سیستم زاویه شما را برحسب رادیان حساب کرده و سپس مقدار نسبت مثلثاتی اونو حساب کنید.

    یه چیزه  دیگه اونم این که:

Cot(x) = Cos(x) / Sin(x)

الگوریتم بخش پذیر بودن بر دو عدد 3 و 7

 

۰- شروع

۱- N را از ورودی بگیر.

۲- باقیمانده R<---N/3

۳- باقیماندهS<---N/7

۴- اگر R=0 و S=0 آنگاه چاپ کن N هم بر 3 و هم بر 7 بخش پذیر است.

۵- پایان

الگوریتم تعیین زوج یا فرد بودن عدد

0-شروع

1- N را از ورودی بگیر.

2-   R<---N/2     

3- اگر R=0 آنگاه چاپ کن عدد زوج هست در غیر اینصورت چاپ کن عدد فرد است.

4- پایان

توابع ریاضی

 

    معرفی چند تابع ریاضی

تابع عدد تصادفی :

*این تابع یک عدد تصادفی بین 0 و 1 را بر میگرداند:

Rnd ( ) = 0.432

تابع لگاریتم:

*این تابع لگاریتم یک عدد رو در مبنای عدد نپر(2.712000) بر میگردونه:

Log (10) = 0.30

آرک تانژانت:

Atn (2.3) =1.16

*مقدار خروجی این تابع بر حسب رادیان هستش.

*برای تبدیل این مقدار (رادیان به درجه) از رابطه ی زیر می تونیم استفاده کنیم:

زاویه برحسب رادیان               =                 180/(زاویه برحسب درجه * 3.14)

جز صحیح :

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

Int (x) = [x]

Int (2.36) = 2

قدر مطلق:

ABS (x) =|x|

ABS (-3) = 3

تعیین علامت:

*این تابع به ازای مقادیر مثبت عدد 1 , مقادیر منفی عدد 1-  و عدد صفر مقدار صفر را باز می گرداند.

Sgn (15000) = 1

Sgn (-5) = -1

جذر (رادیکال):

Sqr (x2) =|x|

Sqr (4) = 2

توابع رشته ای

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

توابع رشته ای:

 ---------------------------------------------

 Len ( ):

این تابع طول یک رشته را برمی گرداند.شکل کلی این تابع به صورت زیر می باشد:

Len (string)

Len (www.learnvb.blogfa.com ) = 22

---------------------------------------------

Mid ( ):

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

A=Mid (String, I, Length)

A=mid (www.learnvb.Blogfa.com, 5, 14) = "Learnvb.Blogfa"

در تابع بالا ،  String  رشته ای است که می خواهیم داخل آن جستجو کنیم و  I  شروع جستجو را به ما می گوید و همچنین پارامتر  Length طول رشته ای که می خواهیم جداکنیم را می گذاریم.

---------------------------------------------

String ( ):

این تابع یک کاراکتر را به تعداد معین تکرار می کند. شکل کلی این تابع به صورت زیر می باشد:

String (n, Char)

String (7, A) = AAAAAAA

در این تابع n   عددی است که تعداد تکرار را مشخص می کند و Char  می تواند کاراکتر یا کد اسکی باشد.

انواع فایلها

 بطور کلی فایلها بر دو نوع هستند:

1. فایلهای متنی : این فایلها فقط شامل کاراکترهای اسکی وبرخی کاراکترهای خاص مانند انتهای خط و انتهای فایل هستند.2. فایلهای باینری : شامل هر نوع کاراکتری می توانند باشند و کاربردهای گسترده ای در زمینه های : بانک های اطلاعاتی ، فایلهای اجرائی ، فایلهای گرافیکی و غیره در ویژوال بیسیک دارن و می تواند با هر دو نوع فایل کار کند .

چگونگی باز کردن فایلها :

ل

اتوضیح پارامتر های موجود در دستور :

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

فایل بعنوان ورودی بازمی شود.

       Input

فایل بعنوان خروجی باز می شود.

       Output

فایل ازنوع باینری باز می شود.

       Binary

فایل طوری باز می شود که بتوان به انتهای آن چیزی اضافه کرد.

        Append

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

خواندن فایل

Read

نوشتن در فایل

Write

خواندن و نوشتن فایل

Read Write

قسمت چهارم : نوع دسترسی سایر برنامه ها به این فایل را مشخص می کند .در بخشهای بعدی توضیح داده می شود.

 قسمت پنجم : یک ثابت بوده.

قسمت ششم: عددی است که ویژوال بیسیک از آن برای دسترسی به فایل استفاده می کند .این عدد بایستی برای هر فایل منحصر بفرد و بین 1 تا 511 باشد . برای بدست آوردن اولین شماره آزاد می توان از تابع Free File استفاده کرد .

قسمت هفتم : طول بافر فایل است . این عدد بایستی از 32767 کوچکتر باشد .

 * در صورتی که فایلی که توسط filename مشخص شده وجود نداشته و فایل برای Append ، Binary ، Output و یا Random باز شده باشد در اینصورت یک فایل جدید با این نام ساخته می شود .

* در صورتی که فایل بصورت باینری باز شده باشد پارامتر Len نادیده گرفته می شود .

چگونگی بستن فایل :

پس از پایان کار با فایل برای بستن آن از دستور Close استفاده می کنیم . فرمت این دستور بصورت زیر است :

Close #file number

دستورClose بدون هیچ پارامتری تمام فایلهای باز را می بندد .

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