آموزش مصور ويژوال بيسيك visual basic در مجيد آنلاين

شروع موضوع توسط saalek110 ‏5 جولای 2005 در انجمن منطق و الگوریتم برنامه‌نویسی

وضعیت موضوع:
موضوع بسته شده است.
  1. msdn

    msdn New Member

    ارسال‌ها:
    17
    تشکر شده:
    18
    امتیاز دستاورد:
    1
    ادامه برنامه هاي چند سندي

    [ltr]Multiple-Document Interface (MDI) Applications
    The multiple-document interface (MDI) allows you to create an application that maintains multiple forms within a single container form. Applications such as Microsoft Excel and Microsoft Word for Windows have multiple-document interfaces.
    An MDI application allows the user to display multiple documents at the same time, with each document displayed in its own window. Documents or child windows are contained in a parent window, which provides a workspace for all the child windows in the application. For example, Microsoft Excel allows you to create and display multiple-document windows of different types. Each individual window is confined to the area of the Excel parent window. When you minimize Excel, all of the document windows are minimized as well; only the parent window's icon appears in the task bar.[/ltr]

    اينترفيس چند سندي به شما اجازه مي دهد كه برنامه هايي بسازيد كه در يك فرم واحد ، فرمهاي متعدد باز مي شوند. برنامه هايي مثل ((اكسل)) و (( ورد )) اينترفيس چند سندي دارند.
    يك برنامه چند سندي به كاربر اجازه مي دهد كه سندهاي متعددي را در يك زمان در برنامه باز كند و هر سند ، پنجره خاص خود را خواهد داشت. سندها يا پنجره هاي فرزند در برنامه در بر گرفته مي شوند توسط پنجره والد. كه باعث ايجاد يك محيط كاري براي تمام پنجره هاي فرزند مي شود. تمامي پنجره ها در اكسل توسط پنجره مادر(والد) در بر گرفته مي شود ، اگر شما پنجره اصلي اكسل را مينيمايز كنيد ، تمامي پنجره ها مينيمايز مي شوند و فقط آيكون پنجره اصلي در تاسك بار نمايش داده مي شود.

    [ltr]A child form is an ordinary form that has its MDIChild property set to True. Your application can include many MDI child forms of similar or different types.
    At run time, child forms are displayed within the workspace of the MDI parent form (the area inside the form's borders and below the title and menu bars). When a child form is minimized, its icon appears within the workspace of the MDI form instead of on the taskbar, as shown in Figure 6.4.[/ltr]

    يك فرم فرزند ، يك فرم معمولي است كه صفت ((ام دي آي چايلد)) آن به (( ترو)) تنظيم شده. برنامه شما مي تواند شامل تعداد زيادي فرم فرزند داشته باشد. از انواع مشابه يا مختلف.
    در موقع اجرا ، پنجره فرزند درون محيط كاري فرم مادر نشان داده مي شود.( منظور در منطقه اي درون لبه هاي فرم و زير تايتل و منو بار.) وقتي كه يك فرم فرزند كوچك مي شود ، آيكون آن در منطقه محيط كاري فرم مادر قرار دارد ، نه در تاسك بار. شكل زير.

    Figure 6.4 Child forms displayed within the workspace of the MDI form
    [​IMG]

    [ltr]Note[/ltr] [ltr]Your application can also include standard, non-MDI forms that are not contained in the MDI form. A typical use of a standard form in an MDI application is to display a modal dialog box.
    An MDI form is similar to an ordinary form with one restriction. You can't place a control directly on a MDI form unless that control has an Align property (such as a picture box control) or has no visible interface (such as a timer control).[/ltr]

    برنامه شما همچنين مي تواند شامل يك فرم استاندارد غير چند سندي باشد. يك استفاده شايع از فرم استاندارد در يك برنامه چند سندي ، براي نمايش يك ديالوگ باكس اجباري(مترجم: ديالوگ باكسهايي كه تا دكمه اي از آن را نزنيم نمي توانيم با پنجره هاي ديگر كار كنيم. ) مي باشد.
    يك فرم چند سندي شبيه يك فرم معمولي است ، ولي با يك محدوديت. و آن اين است كه شما نمي توانيد يك كنترل را مستقيما روي آن قرار دهيد مگر اينكه آن كنترل صفت ((اليگن - رديف شدن)) را داشته باشد(مثلا يك پيكچر باكس) يا بايد آن ابزار موقع اجرا غيرقابل ديدن باشد.( مثل تايمر)

    [ltr]size=4]Creating an MDI Application
    [/ltr]
    [ltr]Use the following procedure to create an MDI form and its child forms.
    ======To create an MDI application
    ----Create an MDI form.
    From the Project menu, choose Add MDI Form.
    Note: An application can have only one MDI form. If a project already has an MDI form, the Add MDI Form command on the Project menu is unavailable.
    ----Create the application's child forms.
    To create an MDI child form, create a new form (or open an existing one) and set its MDIChild property to True.[/ltr]

    طرز ساخت يك برنامه چند سندي:
    مراحل زير را برويد تا يك فرم چند سندي و فرمهاي فرزند آن را ايجاد كنيد.
    براي ساختن برنامه چند- سندي.....
    از منوي پروژه (( ادد ام-دي-آي فرم )) را انتخاب كنيد.


    [​IMG]

    [​IMG]

    توجه : هر برنامه فقط مي تواند يك فرم چند سندي داشته باشد. اگر يك پروژه يك فرم چند سندي دارد ، انتخاب گزينه (( ادد ام-دي آي فرم)) غير قابل دسترس است.
    براي ساختن فرمهاي فرزند ......
    براي ايجاد فرمهاي فرزند ، يك فرم جديد ايجاد كنيد (يا آن كه ايجاد شده را فرابخوانيد(اپن كنيد) ) و صفت (( ام - دي - آي چايلد)) آن را به ((ترو)) تغيير دهيد.

    [​IMG]


    .
     
    آخرین بار توسط مدیر ویرایش شد: ‏14 دسامبر 2007
    نوشته شده توسط msdn در ‏10 سپتامبر 2005
    curs30d و Blaster6 از این پست تشکر کرده اند.
  2. msdn

    msdn New Member

    ارسال‌ها:
    17
    تشکر شده:
    18
    امتیاز دستاورد:
    1
    كار با فرمهاي فرزند در حالت طراحي

    [ltr]Working with MDI Child Forms at Design Time[/ltr]
    [ltr]At design time, child forms are not restricted to the area inside the MDI form. You can add controls, set properties, write code, and design the features of child forms just as you would with any other Visual Basic form.
    You can determine whether a form is an MDI child by looking at its MDIChild property, or by examining the Project Explorer. If the form's MDIChild property is set to True, it is a child form. Visual Basic displays special icons in the Project Explorer for the MDI and MDI child forms, as shown in Figure 6.5.[/ltr]

    در حالت طراحي ، فرمهاي فرزند محدود به فرمهاي چند سندي نيستند. شما مي توانيد كنترلهايي اضافه كنيد و صفتها را تنظيم كنيد و كدها را بنويسيد و شماي فرم فرزند را طراحي كنيد ، همان طور كه با هر فرمي در ويژوال بيسيك كار مي كنيد.
    شما مي توانيد با نگاه به صفت
    MDIchild
    بفهميد كه يك فرم ، از نوع فرم فرزند است يا خير، همچنين با نگاه به پنجره ((پروجكت اكسپلورر)) . اگر صفت مذكور ((ترو)) باشد، آن فرم ، از نوع فرم فرزند است . در ((پنجره پروجكت اكسپلورر)) ، آيكونهاي خاصي براي فرمهاي چند سندي و فرمهاي فرزند در نظر گرفته شده كه در شكل زير مي بينيد.
    Figure 6.5 Icons in the Project Explorer identify MDI child, standard, and MDI forms

    [​IMG]
     
    آخرین بار توسط مدیر ویرایش شد: ‏14 دسامبر 2007
    نوشته شده توسط msdn در ‏10 سپتامبر 2005
    curs30d و Blaster6 از این پست تشکر کرده اند.
  3. msdn

    msdn New Member

    ارسال‌ها:
    17
    تشکر شده:
    18
    امتیاز دستاورد:
    1
    نماي موقع اجراي برنامه هاي چند سندي

    [ltr]Run-Time Features of MDI Forms[/ltr]

    [ltr]At run time, an MDI form and all of its child forms take on special characteristics:[/ltr]

    در موقع اجرا ، يك فرم چند سندي و فرمهاي فرزندش مشخصات خاصي به شرح زير دارند:

    [ltr]All child forms are displayed within the MDI form's workspace. The user can move and size child forms like any other form; however, they are restricted to this workspace.[/ltr]

    تمامي فرمهاي فرزند درون محيط كاري برنامه چند سندي ظاهر مي شوند. كاربر مي تواند تمامي فرمهاي فرزند را جابجا كند و تغيير اندازه دهد ، مثل هر فرمي. اما فرمهاي فرزند محدود به محوطه محيط كاري اند.

    [ltr]When a child form is minimized, its icon appears on the MDI form instead of the taskbar. When the MDI form is minimized, the MDI form and all of its child forms are represented by a single icon. When the MDI form is restored, the MDI form and all the child forms are displayed in the same state they were in before being minimized.[/ltr]

    وقتي كه يك فرم فرزند مينيمايز شود ، آيكون آن در فرم چند سندي نمايان است نه در تاسك بار. برنامه چند سندي و تمام فرمهاي فرزند ، يك آيكون دارند . وقتي كه فرم چند سندي بازيابي مي شود، فرم چند سندي و تمام فرمهاي فرزند، همان طور كه قبلا از مينيمايز بوده اند نمايش داده مي شوند.

    [ltr]When a child form is maximized, its caption is combined with the caption of the MDI form and is displayed in the MDI form's title bar (see Figure 6.6).[/ltr]

    وقتي كه يك فرم فرزند ماكزيمايز شود، caption آن با caption فرم چند سندي مخلوط مي شود و در تايتل بار فرم چند سندي نمايش داده مي شود. شكل زير:

    [​IMG]<<<<<<<<[​IMG]


    [ltr]By setting the AutoShowChildren property, you can display child forms automatically when forms are loaded (True), or load child forms as hidden (False).[/ltr]

    با تنظيم صفت autoshowchildren ، شما مي توانيد فرمهاي فرزند را به طور اتوماتيك نمايش دهيد ، وقتي كه فرمها load مي شوند. (true) يا فرمهاي فرزند را مخفي كنيد (false) . فالس

    [ltr]The active child form's menus (if any) are displayed on the MDI form's menu bar, not on the child form.[/ltr]

    منويهاي فرم فرزند فعال( اگر داشته باشد) ، در منو بار فرم چند سندي نمايش داده مي شود ، نه روي فرم فرزند.
     
    آخرین بار توسط مدیر ویرایش شد: ‏14 دسامبر 2007
    نوشته شده توسط msdn در ‏10 سپتامبر 2005
    curs30d و Blaster6 از این پست تشکر کرده اند.
  4. msdn

    msdn New Member

    ارسال‌ها:
    17
    تشکر شده:
    18
    امتیاز دستاورد:
    1
    مثال عملي براي برنامه هاي چند سندي


    مي خواهيم يك نت پد بسازيم، از نوع فرمهاي چند سندي. اين برنامه يك اديتور شبيه همان نت پد ويندوز است. اين برنامه در موقع اجرا به كاربر اجازه مي دهد كه هر وقت لازم ديد يك سند جديد باز كند. كه همان فرم فرزند هستند.
    براي ايجاد اين برنامه شما دو فرم نياز داريد. يك فرم چند سندي و يك فرم فرزند.

    .

    [​IMG]
    .
    [​IMG]
    .

    من يك پروژه استاندارد باز كردم. بعد ....
    .

    [​IMG]
    .
    [​IMG]
    .
    بعد يك تكست باكس روي فرم 1 انداختم. نامش همانtext1 باشد(تغيير ندهيد.) بعد تنظيمات سه شي (دو فرم و تكست باكس) را مثل شكل بالا انجام دادم.
    يعني كپشن فرم چند سندي را MDI NotePad و كپشن فرم 1 را Untitled و همچنين صفتMDIChild فرم 1 را true كردم.
    در مورد تكست باكس هم صفت ((مولتي لاين)) را true و صفت ((تكست)) ، خالي(پاك شود) و صفت چپ و بالا هم صفر.
    بعد تنظيم صفت چايلد فرم 1 ، پنجره ((پروجكت اكسپلورر )) را چنين خواهيد ديد:

    [​IMG]

    .

    [​IMG]

    .
    منو اديتور را باز مي كنيم و دو منو اضافه مي كنيم. كپشن و نام را از شكل بالا انتخاب مي كنيم. البته اين كار را ،روي فرم چند سندي ، نه روي فرم فرزند انجام دهيد. ساخت منو در همين تاپيك گفته شده. اگر لازم بود مراجعه كنيد. ولي اگر مثل شكل زير شد، يعني درست عمل كرده ايد.
    .

    [​IMG]
    .
    حالا كد زير را به ((پنجره كد)) بيافزاييد:
    .

    [​IMG]
    .
    [ltr] Private Sub mnuFileNew_Click ()
    ' Create a new instance of Form1, called NewDoc.
    Dim NewDoc As New Form1
    ' Display the new form.
    NewDoc.Show
    End Sub[/ltr]
    .

    [​IMG]
    .
    كد بالا باعث ايجاد و نمايش يك كپي از فرم 1 مي شود. كه newdoc نام دارد. يعني هر وقت كه كاربر گزينه new از منوي file را برگزيند ، يك كپي دقيق از فرم 1 ساخته مي شود. شامل همه شي ها(ابزار ها) و كدهاي آن. (مترجم: من اين كد را به ((پنجره كد)) مربوط به فرم چند سندي افزودم نه به ((پنجره كد)) فرم 1 . )
    .

    [​IMG]
    .
    [ltr] Private Sub Form_Resize ()
    ' Expand text box to fill the current child form.
    Text1.Height = ScaleHeight
    Text1.Width = ScaleWidth
    End Sub[/ltr]
    كد بالا را به ((پنجره كد)) فرم 1 بيافزاييد.
    .

    [​IMG]
    .
    اين كدي است كه به ((رويداد تغيير سايز)) فرم 1 واكنش نشان مي دهد. (مترجم: اين كد باعث مي شود كه تكست باكس در هر اندازه اي كه فرم1 بگيرد ، به اندازه فرم 1 بشود. يعني همه گوشه ها را بگيرد.)
    شبيه تمام كدهاي فرم 1 ، اين كد هم به شراكت گذاشته مي شود بين همه كپي هايي كه از فرم 1 ساخته مي شود. وقتي كه كپي هاي متعددي از فرم 1 ساخته شده باشد، هر يك به ((رويداد تغيير سايز فرم)) خود جواب مي دهد. نام تمام فرمها ، فرم 1 است. ولي هر فرم به رويداد مربوط به خود جواب مي دهد. بعدا اين قضيه را شرح خواهيم داد.
    .

    [​IMG]

    دكمه ((اف 5)) را بزنيد تا برنامه اجرا شود.
    .

    [​IMG]

     
    آخرین ویرایش: ‏13 سپتامبر 2005
    نوشته شده توسط msdn در ‏13 سپتامبر 2005
    curs30d و Blaster6 از این پست تشکر کرده اند.
  5. saalek110

    saalek110 Well-Known Member

    ارسال‌ها:
    2,765
    تشکر شده:
    1,382
    امتیاز دستاورد:
    113
    ادامه رويدادها - رويداد فوكوس

    .
    فوكوس يعني اينكه كدام فرم در حال حاضر فعال است و روي آن فرم كدام كنترل(ابزار) فعال است. فقط يك فرم مي تواند ((فرم فعال)) باشد و فقط يك كنترل مي تواند ((كنترل فعال)) باشد. يك فرم در حالات مختلف مي تواند فعال بشود. يكي بوسيله كد برنامه نويسي كه شما نوشته ايد. يا بوسيله كاربر، كاربر مي تواند روي تايتل بار يك فرم كه قبلا load شده ، كليك كند و آن را تبديل به ((فرم فعال)) كند ، يا از حالت مينيمايز شده آن را بازيابي كند.
    .

    [​IMG]
    .
    وقتي يك فرم فعال شود ، كنترلي كه صفت TabIndex آن صفر باشد ، به طور اتوماتيك فوكوس را دريافت مي كند و كنترل اكتيو مي شود. ولي بايد در نظر داشته باشيد كه همه كنترلها(ابزارها) نمي توانند فوكوس دريافت كنند.
    ليبل ، ايميج ، فريم ، shape و هر كنترلي كه به حالت فعال (Enabled) نباشد، نمي تواند فوكوس را دريافت كند. و فوكوس از روي آن عبور خواهد كرد ( در دستور Tab ) . (مترجم: در موقع اجراي برنامه ، با زدن دكمه Tab از كيبورد فوكوس روي كنترلها مي چرخد.)
    .

    [​IMG]
    .
    در حالت پايه(از پيش تنظيم) دستور Tab ترتيب حركتش وابسته به اين است كه كدام كنترل اول بر روي فرم قرار گرفته. اگر نياز داشتيد ، شما مي توانيد با مرتب كردن صفت TabIndex كنترلها ، به ايده آل خود برسيد. و هر گاه نخواستيد كنترلي فوكوس را دريافت كند ، صفت TabStop آن را به False تغيير دهيد. براي مثال ، يك پيكچر باكس قادر است كه فوكوس را دريافت كند ، اما شما ممكن است نخواهيد كه اين ابزار يك ((كنترل فعال)) بشود.
    .

    [​IMG]
    .
    كنترلها (ابزارها) ي مختلف راههاي نمايشي مختلفي دارند كه نشان دهند كه ((كنترل فعال)) هستند. براي مثال ، دكمه ها ، آپشن باتن ها ، و چك باكس ها .... خطوط فوكوسي اطراف خود دارند. تكست باكس يك نشان چشمك زن نشان مي دهد. و كومبو باكس با highlight كردن تكست درون خود دريافت فوكوس را نشان مي دهد. خطوط فوكوسي را به ياد داشته باشيد وقتي يك دكمه به فرم مي افزاييد زيرا ممكن است وقتي يك دكمه كوچك مي سازيد ، اين خطوط با نوشته هاي روي دكمه (كپشن) باعث تداخل (مترجم: و ناخوانايي) شود.
    .

    [​IMG]
    .
    كنترل ها به طرق مختلف فوكوس رادريافت مي كنند. يكي اينكه كاربر دكمه Tab را بزند . يا اينكه مستقيما روي كنترل كليك كند. يا شما مي توانيد با نوشتن كد ، فوكوس را به يك كنترل بدهيد.
    اين كار به سادگي با متد SetFocus انجام مي شود.
    cmdOK.SetFocus​
    .

    [​IMG]
    .
    در رويدادهاي GotFocus و LostFocus مي توانيد كد نويسي كنيد تا تغيير موضع ((كنترل اكتيو)) را در اختيار و كنترل خود داشته باشيد. .(مترجم: در پنجره كد ، از كومبو اكس رويداد ها مي توانيد رويدادهاي مذكور را انتخاب كنيد. )

    فرمها هم رويداد GotFocus و LostFocus دارند ولي در حالت نرمال استفاده نمي شوند ، زيرا اين رويدادها عمل نمي كنند مگر اينكه فرم كنترلهاي فعالي نداشته باشد.( مترجم : من اين طور برداشت كردم كه وقتي كه فرمي داراي كنترل فعال باشد، رويداد هاي فوكوس در فرم عمل نمي كند و فقط در ابزارهاي فعال عمل مي كند. شما اين قضيه را امتحان كنيد.)
    به جاي اين رويدادها از رويدادهاي Activate و Deactivate استفاده كنيد. همچنين از استفاده از متد SetFocus براي فرم بپرهيزيد و در مواقع نياز از متدهاي Show و Hide استفاده كنيد.
    .
     
    آخرین ویرایش: ‏14 سپتامبر 2005
    نوشته شده توسط saalek110 در ‏14 سپتامبر 2005
    curs30d از این پست تشکر کرده است.
  6. msdn

    msdn New Member

    ارسال‌ها:
    17
    تشکر شده:
    18
    امتیاز دستاورد:
    1
    كاربرد هر يك از كنترلها


    [​IMG]

    .
    كنترلهايي براي نمايش دادن و وارد كردن تكست
    .

    [​IMG]
    .
    تكست باكس زماني استفاده مي شود كه كاربر بتواند تكست را تغيير دهد . براي مثال دستور وارد كردن يك فيلد يا وارد كردن پسورد.
    ليبل زماني استفاده مي شود كه تكست فقط براي نمايش باشد. براي مثال دانستن يك فيلد يا بيان يك راهنمايي به كاربر.
    .

    [​IMG]
    .
    كنترلهايي كه اجازه انتخاب را به كاربر مي دهد.
    .

    [​IMG]
    .
    چك باكس زماني استفاده مي شود كه تعداد محدودي انتخاب داشته باشيم و كاربر يكي يا چند تا را انتخاب كند.
    آپشن باتون زماني استفاده مي شود كه انتخابهاي محدودي داشته باشيم و كاربر فقط يكي را مي تواند انتخاب كند. ( هر گاه گروهاهاي بيشتري از اين ابزار نياز بود ، از فريم استفاده كنيد.)
    ليست باكس: ليست باكس عبارت است از يك ليست قابل اسكرول كه كاربر مي تواند انتخاب كند.
    كومبو باكس : كومتو باكس عبارت است از يك ليست قابل اسكرول با يك مكان براي تغيير تكست. كاربر مي تواند هم انتخاب كند ، هم اينكه در كومبوباكس تايپ كند.
    .

    [​IMG]
    .
    كنترلهايي براي نمايش عكس و گرافيك
    .

    [​IMG]
    .
    پيكچر باكس 2 كاربرد دارد:
    اول مي تواند حاملي باشد براي كنترلهاي ديگر.
    دوم براي پرينت يا متدهاي گرافيكي.
    براي نمايش يك عكس مي توانيد از ايميج يا پيكچرباكس استفاده كنيد.
    از
    shape & line
    براي نمايش المانهاي ساده گرافيكي استفاده مي شود.
    .

    [​IMG]
    .
    ((ايميج)) و ((شيپ)) و ((لاين)) را گاهي ((كنترلهاي سبك گرافيكي)) مي نامند. آنها به منابع سيستمي كمي نياز دارند و بالطبع قدري سريعتر از پيكچرباكس به نمايش درمي آيند.
    متدها و صفات و رويدادهاي اين ابزارها ، زيرمجموعه اي از متعلقات ((پيكچرباكس)) است. (يعني كمتر است.)
    پس ،، هر يك براي كار خاصي مناسب است.
    .
     
    نوشته شده توسط msdn در ‏18 سپتامبر 2005
    azizdordone، curs30d و Blaster6 از این ارسال تشکر کرده اند.
  7. msdn

    msdn New Member

    ارسال‌ها:
    17
    تشکر شده:
    18
    امتیاز دستاورد:
    1
    استفاده از ابزار كامون ديالوگ


    [​IMG]
    باید ابتدا از منوی پروجکت زیرمنوی کامپوننت به جعبه ابزار اضافه شود.


    كنترل ((common dialog )) براي ما ديالوگ باكسهاي استانداري را محيا مي كند. مثل open و save و تنظيمات print و انتخاب رنگ و انتخاب فونت.
    اين كنترل همچنين قدرت نمايش help را دارد. (بوسيله موتور help ويندوز)

    كنترل ((كامون ديالوگ)) ، باعث ارتباط برنامه شما ، با توابع يك فايل به نام commdlg.dll مي شود. اگر مي خواهيد از اين كنترل استفاده كنيد ، بايد اين فايل در پوشه system از ويندوز وجود داشته باشد.

    شما بايد كنترل ((كامون ديالوگ)) را روي فرم خود قرار دهيد و پراپرتي هاي آن را تنظيم كنيد. پنجره ديالوگي كه در زمان اجرا ظاهر مي شود بوسيله متدهاي اين كنترل ايجاد مي شود.
    در زمان اجرا يك ((ديالوگ باكس)) ظاهر مي شود يا موتور help اجرا مي شود(البته با استفاده از متدهاي مربوطه).
    در زمان طراحي ، كنترل ((كامون ديالوگ)) به شكل يك آيكون روي فرم ديده مي شود كه قابل تغيير اندازه نيست.

    كنترل ((كامون ديالوگ)) به شما اجازه مي دهد تا ((ديالوگ باكس)) هاي زير را به نمايش درآوريد:

    Open
    Save as
    Color
    Font
    Print

    براي اسنفاده از (( كامون ديالوگ كنترل)) :
    اگر قبلا اين كنترل را به ((جعبه ابزار (toolbox) )) اضافه نكرده ايد ، اضافه كنيد.
    براي اين كار به منوي project برويد و زير منوي components را كليك كنيد.
    در لبه كنترلها ( مترجم : لبه اول ، شكل زير .....


    [​IMG]

    در لبه كنترلها ، كنترل مورد نظر را بيابيد و به حالت انتخاب درآوريد (تيك بزنيد) و سپس ok را بزنيد.
    مرحله دوم: روي جعبه ابزار CommonDialog را كليك كنيد و بعد آنرا روي فرم رسم كنيد.
    وقتي آنرا رسم كنيد ، خودش به طور اتوماتيك اندازه خاص خود را مي يابد. مثل كنترل ((تايمر)) ، اين كنترل هم در زمان اجرا ، غير قابل ديدن است.
    مرحله سوم: در زمان اجرا متدهاي مناسب را را براي داشتن ((پنجره ديالوگ مناسب)) بكار بريد .


    [​IMG]
     
    آخرین بار توسط مدیر ویرایش شد: ‏14 دسامبر 2007
    نوشته شده توسط msdn در ‏21 سپتامبر 2005
    curs30d و Blaster6 از این پست تشکر کرده اند.
  8. msdn

    msdn New Member

    ارسال‌ها:
    17
    تشکر شده:
    18
    امتیاز دستاورد:
    1
    Displaying Open and Save As Dialog Boxes

    ديالوگ باكس open به كاربر اجازه مي دهد كه يك درايو و دايركتوري را مشخص كند و فايلي را برگزيند. همچنين كاربر مي تواند نوع پسوند فايل را هم انتخاب كند.

    ديالوگ باكس ((save as))، در ظاهر مشابه ديالوگ باكس open است ولي در عنوان ديالوگ باكس و نام فايلي كه به شكل رنگي در ميايد ، فرق دارد. (مترجم: در كادر open نام فايل خالي است ولي در كادر save as يك نام فايل پيش فرض ، به شكل انتخاب شده و رنگي شده داريم كه به محض تايپ نام جديد پاك مي شود.)
    در موقع اجرا ، وقتي كاربر يك فايل را انتخاب مي كند و ديالوگ باكس را مي بندد ، صفت filename براي در اختيار داشتن نام فايل استفاده مي شود.

    نمايش ديالوگ باكس open :
    ابتدا بايستي ليست فيلترها را مشخص كنيد. اين فيلترها در در كادر open ، شكل بالا ، در قسمت files of type نشان داده مي شوند. (مترجم: يعني فيلتري كه اجازه مي دهد نوع خاصي از فايل – پسوند خاصي – انتخاب شود)
    شما مي توانيد اين كار را با فرمت خاصي انجام دهيد:
    کد (Text):
     description1 | filter1 | description2 | filter2...
    Description (توضيح) ، شرحي است كه در قسمت files of type نمايش داده مي شود . اين قسمت براي اطلاع كاربر است ولي filter واقعا فيلتر كننده فايلها است. براي مثال اگر در قسمت فيلتر .txt بنويسم ، فقط فايلهايي از اين نوع به نمايش درمي آيد.
    هر توضيح و فيلتري با يك سمبل pipe symbol كه به اين شكل است : ( | )
    ، از هم جدا مي شوند.
    در مرحله دوم متد showopen را بكار بريد تا ديالوگ باكس ظاهر شود.
    بعد از آن كه كاربر يك فايل را انتخاب كرد ، از صفت FileName استفاده كنيد تا نام فايل را دريافت كنيد.

    در تمام ديالوگ باكس ها بايستي تمهيداتي داشته باشيم براي وقتي كه كاربر كادر را باز مي كند و دكمه cancel را مي زند. البته اين در زماني است كه صفت CancelError فعال يعني true باشد.
    يك خطا در چنين زماني رخ خواهد داد كه ما بايد آنرا پوشش دهيم.

    كدي كه ملاحظه مي كنيد، باعث نمايش يك Open dialog box مي شود و از نام فايل انتخاب شده به عنوان يك آرگومان براي احضار يك روال كه فايل را باز مي كند استفاده شده. (مترجم: آرگومان ، مقداري است كه به روال ارسال مي شود و روال مي تواند از آن استفاده كند..)
    [/size]
    .
    کد (Text):
    Private Sub mnuFileOpen_Click ()
       ' CancelError is True.
       On Error GoTo ErrHandler
       ' Set filters.
       CommonDialog1.Filter = "All Files (*.*)|*.*|Text Files (*.txt)|*.txt|Batch Files (*.bat)|*.bat"
       ' Specify default filter.
       CommonDialog1.[color=blue]FilterIndex[/color] = 2 [color=blue] ' tozihe paaiin raa bekhanid [/color]

       ' Display the Open dialog box.
       CommonDialog1.ShowOpen
       ' Call the open file procedure.
       [color=red]OpenFile[/color] (CommonDialog1.FileName)[color=red]' toziihe paaiin raa bekhaanid[/color]
       Exit Sub

    ErrHandler:
    ' User pressed Cancel button.
       Exit Sub
    End Sub
    توضيح واضحات اين كه كد بالا براي رويداد كليك يك منو ساخته شده ولي براي موارد ديگر هم ميشه استفاده كرد.
    و ديگر اين كه خطاياب آن فقط باعث خروج از ساب مي شود و كار خاصي نمي كند.ولي اگر اين كد نباشه وقتي كنسل را بزنيم خطا ميده و برنامه از حالت اجرا خارج ميشه.

    صفت FilterIndex تعيين مي كند كه كدام يك از فيلترها در files of type به طور پايه نمايش داده شود.


    نكته مهم اينكه OpenFile براي احضار يك روال است. روالي كه اينجا اصلا وجود ندارد. شما خود بايد اين روال را بنويسيد.
    CommonDialog1.FileName آرگوماني است كه به اين روال ارسال مي شود.

    در پستهاي بعدي سعي مي شود تا مثالهايي براي استفاده از اين آرگومان ذكر شود.
     
    آخرین بار توسط مدیر ویرایش شد: ‏1 نوامبر 2007
    نوشته شده توسط msdn در ‏21 سپتامبر 2005
    curs30d و Blaster6 از این پست تشکر کرده اند.
  9. msdn

    msdn New Member

    ارسال‌ها:
    17
    تشکر شده:
    18
    امتیاز دستاورد:
    1
  10. saalek110

    saalek110 Well-Known Member

    ارسال‌ها:
    2,765
    تشکر شده:
    1,382
    امتیاز دستاورد:
    113

    مطلب زير از سايتي است كه نويد جان نشانم داد . كمال تشكر را از ايشان دارم.اميدوارم لذت ببريد ..

    براي كپي گيري يك فايل از جايي به جايي:
    کد (Text):
    [left]
    Private Sub Command1_Click()
    FileCopy "c:\vbfiles\a.txt", "c:\vbfiles\b.txt"
    End Sub
    [/left]
    تعيين درايو جاري:
    کد (Text):
    [left]
    Private Sub Command1_Click()
    MsgBox "The current directory is " & CurDir
    End Sub
    [/left]
    اين هم يه جورش:
    کد (Text):
    [left]
    Private Sub Command1_Click()
    ChDrive ("d")

    ChDir "\vbfiles"

    MsgBox "The current directory is " & CurDir
    End Sub
    [/left]
    نتيجه اش:

    [​IMG]
    براي همه اين كارا يك (( چك كردن )) لازمه... اين هم چك كردن آن:
    کد (Text):
    [left]
    Private Sub Command1_Click()
    Dim retval As String

    retval = Dir$("c:\vbfiles\b.txt")

    If retval = "b.txt" Then

    MsgBox "b.txt exists--no need to copy it..."

    Else

    FileCopy "c:\vbfiles\a.txt", "c:\vbfiles\b.txt"

    End If
    End Sub
    [/left]
    خودتون كد بالا را با مقتضيات كار خود تغيير بدهيد. با كد بالا مي فهميد كه فايلي با نام مشخص در پوشه اي هست يا نه.

    براي تغيير نام rename از دستور زير استفاده كنيد:

    کد (Text):
    [left]
    Private Sub Command1_Click()
    Name "c:\vbfiles\b.txt" As "c:\vbfiles\newb.txt"
    End Sub
    [/left]
    براي كشتن يا delet فايل هم كد زير:

    کد (Text):
    [left]
    Private Sub Command1_Click()
    Kill "c:\vbfiles\newb.txt"
    End Sub
    [/left]
    كشتن همه فايلهاي يك پوشه:

    براي پاك كردن نوع خاصي مثلا تكست فقط از يك ستاره استفاده كنيد و به جاي ستاره ديگر نوع پسوند را قرار دهيد.
    کد (Text):
    [left]
    Private Sub Command1_Click()
    Kill "c:\vbfiles\*.*"
    End Sub
    [/left]
    من كه به ذهنم نرسيده بود. آيا براي move كردن حالا بلديد چه كار كنيد؟؟
    تركيب copy و delet .
    کد (Text):
    [left]
    Private Sub Command1_Click()
    FileCopy "c:\vbfiles\a.txt", "c:\vbfiles\china\a.txt"

    Kill "c:\vbfiles\a.txt"
    End Sub
    [/left]
    ايجاد يك دايركتوري:
    کد (Text):
    [left]
    Private Sub Command1_Click()
    MkDir "c:\vbfiles\smiley"
    End Sub
    [/left]
    و حذف يك دايركتوري:
    کد (Text):
    [left]
    Private Sub Command1_Click()
    RmDir "c:\vbfiles\smiley"
    End Sub
    [/left]
    در تمامي مواردي كه چيزي(منظور فايل يا دايركتوري) را بخواهيد باهاش كار كنيد ، اگر موجود نباشه ... يا بخواهيد ايجاد كنيد و باشه.... باعث خطا ميشه.
    پس 2 راه داريد براي نداشتن خطاها:
    يكي اينكه قبل هر عمليات چك كنيد كه باشه(وقتي باهاش بخواهيد كار كنيد) يا نباشه(در صورتي كه خواستيد ايجاد كنيد)
    دوم اين كه با پوشش دهي خطا ها (با همان هندلرها يا دستگيره هاي خطا) از اين كار جلوگيري كنيد ، يعني بهش بگيد اگر خطا رخ داد چه كار كند.
    اين هم يك تصوير از اعلام خطا:

    [​IMG]
     
    آخرین ویرایش: ‏14 دسامبر 2007
    نوشته شده توسط saalek110 در ‏8 اکتبر 2005
    curs30d و Blaster6 از این پست تشکر کرده اند.
  11. hamidahmadi

    hamidahmadi Active Member

    ارسال‌ها:
    138
    تشکر شده:
    247
    امتیاز دستاورد:
    43
    دانشجویان عزیز سلام
    امروز میخواهم طرز نوشتن یک برنامه ائی را که میتواند فایلی را باز کند آن را سیو کند و یا کلا نوشته های درون فایل را پاک کند برایتان بنوسیم
    مواد لازم
    یک فرم به نام Form1
    سه دکمه به نامهای cmdOpen , cmdSave , cmdClear
    یک دیالوگ باکس به نام cd1
    یک RitchTextBox به نام RTB1

    کد آن
    کد (Text):
    [LEFT]

    Private Sub cmdClear_Click()
    RTB1.Text = ""
    End Sub

    Private Sub cmdOpen_Click()
    Dim strOpen As String

    With cd1
    .Flags = &H2000
    .DialogTitle = "Open"
    .Filter = "Ritch Text Box(.rtf)|*.rtf"
    .ShowOpen
    strOpen = .FileName
    End With
    Form1.RTB1.LoadFile strOpen



    End Sub

    Private Sub cmdSave_Click()
    Dim strSave As String

    With cd1
    .Flags = &H2000
    .DialogTitle = "Save"
    .Filter = "Ritch Text File (*.rtf)|*.rtf"
    .ShowSave
    strSave = .FileName
    End With

    Form1.RTB1.SaveFile strSave


    End Sub
    [/LEFT]
    راجع به with,end with باید خدمتتان بگویم هرگاه مجبور بودیم در یک کد از خاصیتهای مختلف یک کنترل استفاده کنیم میتوانیم به جای نوشتن مکرر نام کنترل از with , end with استفاده کنیم بطوری که مابین این دو کد را نوشته به جای کنترل از نقطه استفاده میکنیم
    راجع به Ritch TextBox هم باید به عرضتان برسانم از گزینه Project گزینه comonents رازده و اکتیویکس Microsoft Ritch TextBox را انتخاب میکنیم
     
    نوشته شده توسط hamidahmadi در ‏8 اکتبر 2005
    curs30d، Blaster6 و saalek110 از این ارسال تشکر کرده اند.
  12. hamidahmadi

    hamidahmadi Active Member

    ارسال‌ها:
    138
    تشکر شده:
    247
    امتیاز دستاورد:
    43
    آموزش یک ماشین حساب از حمید احمدی

    عزیزانم آموزشی را که میخواهم برایتان بنویسیم آموزش یک ماشین حساب است ما برای این آموزش از آرایه ها و ثابتها استفاده خواهیم کرد.
    برای شماره های یک ماشین حساب ما به ده دکمه احتیاج داریم که از آرایه استفاده میکنیم به طوری که اولین دکمه cmdShomareh(0) برای نام دکمه شماره صفر و به همین ترتیب دومین دکمه cmdShomareh(1) برای شماره یک و ... می گذاریم و آن هم به خاطر این است که ما می خواهیم از خاصیت index آن استفاده کنیم و یک دکمه برای علامت اعشار (.) و یک دکمه برای علامت مساوی و یک دکمه برای پاک کردن و صفر کردن تکست و به همین ترتیب ما برای علامت جمع ، منها ، ضرب و تقسیم از چهار دکمه البته به صورت آرایه استفاده میکنیم و نام آن را cmdGardanandeh(0) برای جمع و ... می گذاریم و البته یک تکست به نام txtNamayesh برای نشان دادن خروجی.

    حال به کد ماشین حساب توجه کنید:

    کد (Text):
    [color=blue]Option Explicit

    Private ZakhirehHafezeh As Double

    Private Const garNone = 0
    Private Const garJam = 1
    Private Const garMenha = 2
    Private Const garZarb = 3
    Private Const garTaghsim = 4
    Private Gardanandeh As Integer

    Private VorodJadid As Boolean


    Private Sub cmdAshar_Click()

            If VorodJadid = True Then
                txtNamayesh.Text = "."
                VorodJadid = False
            Else
                txtNamayesh.Text = txtNamayesh.Text & "."
            End If
       
    End Sub

    Private Sub cmdGardanandeh_Click(Index As Integer)
        cmdMosavi_Click
        Gardanandeh = Index
        VorodJadid = True
    End Sub

    Private Sub cmdMosavi_Click()

    Dim Arzesh_jadid As Double

        If txtNamayesh.Text = "" Then
            Arzesh_jadid = 0
        Else
            Arzesh_jadid = txtNamayesh.Text
        End If
       
        Select Case Gardanandeh
            Case garNone
                ZakhirehHafezeh = Arzesh_jadid
            Case garJam
                ZakhirehHafezeh = ZakhirehHafezeh + Arzesh_jadid
            Case garMenha
                ZakhirehHafezeh = ZakhirehHafezeh - Arzesh_jadid
            Case garZarb
                ZakhirehHafezeh = ZakhirehHafezeh * Arzesh_jadid
            Case garTaghsim
                ZakhirehHafezeh = ZakhirehHafezeh / Arzesh_jadid
        End Select
        Gardanandeh = garNone
        VorodJadid = True
        txtNamayesh.Text = Format(ZakhirehHafezeh)

    End Sub



    Private Sub cmdPak_Click()
        txtNamayesh.Text = ""
        ZakhirehHafezeh = 0
        Gardanandeh = garNone
    End Sub

    Private Sub cmdShomareh_Click(Index As Integer)

        If VorodJadid = True Then
            txtNamayesh.Text = Format(Index)
            VorodJadid = False
        Else
            txtNamayesh.Text = txtNamayesh.Text & Format(Index)
        End If

    End Sub[/color]
    البته من برای اینکه کدها کم باشد و سر را درد نیاورد از خاصیت keypress و ... مربوط به صفحه کلید استفاده نکردم برای اینکه این ماشین حساب کامل شود می بایست کی برد هم با آن هماهنگ شود که آن را به عهده خودتان می گذارم
     
    نوشته شده توسط hamidahmadi در ‏15 اکتبر 2005
    Blaster6 و saalek110 از این پست تشکر کرده اند.
  13. hamidahmadi

    hamidahmadi Active Member

    ارسال‌ها:
    138
    تشکر شده:
    247
    امتیاز دستاورد:
    43
    آموزش Api در ویژوال بیسیک

    دوستان عزیز شاید برایتان جالب باشد بدانید که ویژوال بیسیک از یک سری روالها و توابع داخلی ویندوز به نام API استفاده میکند که شیرینی یادگیری ویژوال بیسیک را دوچندان میکند . این روالها و توابع در فایلهایی با پسوند .DLL ذخیره می شوند و سه فایل معروفی که اکثر روالها و توابع API در آنها می باشند عبارتند از :
    USER32.DLL شامل توابعی است که محیط ویندوز و واسط کاربر مثل مکان نماها ،
    منوها و پنجره ها را کنترل میکند.
    GDI32.DLLشامل توابعی است که خروجی برنامه به صفحه تصویر و ابزارهای دیگر را کنترل میکند.
    KERNEL32.DLL شامل توابعی است که سخت افزار و واسط نرم افزار داخلی ویندوز را کنترل میکند.

    چون توابع API با زبان C نوشته شده اند می بایست برای اینکه در ویژوال بیسیک شناخته شوند با دستور Declare به ویژوال بیسک معرفی شوند
    از آنجا که توابع API خیلی زیاد می باشند در ویژوال بیسیک ابزاری به نام API Viewer معرفی شده است که با آن میتوان این روالها و توابع را پیدا کرد و فرمت دستوری آنها به همراه آرگومانهای آنها را از این ابزار کپی کرد و در ویژوال بیسیک استفاده کرد. برای اضافه کردن API Viewer کافی است از منوی پنجره Add-Ins در ویژوال بیسیک گزینه Add-In Manager را انتخاب کرده و روی گزینه VB 6 API Viewer دو بار کلیک کرده تا به گزینه Add-In Manager اضافه شود و بعد با انتخاب آن API Viewer را فعال کنیم. از آنجا که اکثر روال های API در فایلی به نام Win32api.txt نوشته شده اند با بارکردن این فایل در API Viewer میتوان به اکثر توابع API دسترسی پیدا کرد. البته ما میتوانیم ثابتها – اعلانها و همه انواع داده ها را با انتخاب Constants و Declares و Types درون گزینه API Type پیدا کنیم ( لازم به ذکر است که فایلهای .DLL در زمان اجرا بطور دینامیکی به برنامه شما پیوند می خورند نه در زمان ترجمه )

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

    بعضی مواقع میخواهید که برنامه اتان فایلهای اضافی خود را در پوشه Temp بگذارد در آن موقع میتوان از توابع GetTempPath() به این صورت استفاده کنید.

    با تشکر از آقای سالک
    ملزومات
    یک فرم به نام frmTemp
    یک تکست به نام txtTemp
    یک دکمه به نام cmdTemp

    با استفاده از API Viewer و در قسمت Declares تایپ می کنیم GetTempPath (توجه کنید که حروف کاملا" از نظر بزرگی و کوچکی مطابق باشد) متنی را که در قسمت Selected Items می آید را با استفاده از گزینه copy کپی کرده و در قسمت بالای کدهای ویژوال بیسیک ( البته در حالت Private ) می گذاریم
    حال به کد مربوطه توجه کنید :
    کد (Text):
    [color=Green]Private Declare Function GetTempPath Lib "kernel32" Alias "GetTempPathA" (ByVal nBufferLength As Long, ByVal lpBuffer As String) As Long

    Private Sub cmdTemp_Click()

    Dim intBuffer As Integer
    Dim strHamidahmadi As String * 255

    intBuffer = GetTempPath(255, strHamidahmadi)
    txtTemp.Text = Left(strHamidahmadi, intBuffer)


    End Sub[/color]
    توجه کنید که در قسمت معرفی کردن یک رشته از نوع string می بایست طول رشته را که من در اینجا 255 معرفی کردم حتما" بنویسید تا ویژوال بیسیک بتواند طول رشته را داشته باشد هرچند که بعید به نظر میرسد که یک مسیر بیشتر از 255 کاراکتر داشته باشد.

    من امیدوارم آقای سالک در معرفی توابع API با من همکاری کند تا بتوانیم ادامه این سرفصل را برایتان داشته باشیم.
     
    آخرین ویرایش: ‏19 اکتبر 2005
    نوشته شده توسط hamidahmadi در ‏19 اکتبر 2005
    Blaster6 و saalek110 از این پست تشکر کرده اند.
  14. hamidahmadi

    hamidahmadi Active Member

    ارسال‌ها:
    138
    تشکر شده:
    247
    امتیاز دستاورد:
    43
    ادامه Api

    با تشکر از آقای سالک و آقا نوید ( خیلی ممنون از شما )

    عزیزانم میخواهم توسط توابع API این بار شما را با کار زیبای دیگری در ویژوال بیسیک آشنا کنم
    آیا وقتی بر روی صفحه مانیتور راست کلیک میکنید توجه کرده اید چه گزینه هائی برای شما آماده می شود
    حال ما میخواهیم برای شما توسط API این مورد را توضیح دهیم.

    ملزومات لازم :
    یک فرم – یک تکست برای نشان دادن برگشتی توابع API


    کد (Text):
    [color=blue]
    Private Const MF_SEPARATOR = &H800&
    Private Const MF_STRING = &H0&

    Private Const TPM_HORIZONTAL As Long = &H0&
    Private Const TPM_RETURNCMD As Long = &H100&
    Private Const TPM_VCENTERALIGN As Long = &H10&

    Private Type POINTAPI
        X As Long
        Y As Long
    End Type



    Private Declare Function CreatePopupMenu Lib "user32" () As Long
    Private Declare Function TrackPopupMenuEx Lib "user32" (ByVal hMenu As Long, ByVal wFlags As Long, ByVal X As Long, ByVal Y As Long, ByVal hWnd As Long, lptpm As Any) As Long
    Private Declare Function AppendMenu Lib "user32" Alias "AppendMenuA" (ByVal hMenu As Long, ByVal wFlags As Long, ByVal wIDNewItem As Long, ByVal lpNewItem As Any) As Long
    Private Declare Function GetCursorPos Lib "user32" (lpPoint As POINTAPI) As Long
    Private Declare Function DestroyMenu Lib "user32" (ByVal hMenu As Long) As Long

    Dim lngMenu As Long

    Private Sub Form_MouseDown(Button As Integer, Shift As Integer, X As Single, Y As Single)
    Dim ptiHamid As POINTAPI
    Dim lngAhmadi As Long

    lngMenu = CreatePopupMenu()

    AppendMenu lngMenu, MF_STRING, 1, "Open"
    AppendMenu lngMenu, MF_STRING, 2, "Close"
    AppendMenu lngMenu, MF_SEPARATOR, 3, ByVal 0&
    AppendMenu lngMenu, MF_STRING, 4, "Properties"

    GetCursorPos ptiHamid

    lngAhmadi = TrackPopupMenuEx(lngMenu, TPM_RETURNCMD, ptiHamid.X, ptiHamid.Y, Me.hWnd, ByVal 0&)

    DestroyMenu lngMenu

    If (lngAhmadi = 0) Then
    Text1.Text = "BaBa Click Kon"
    ElseIf (lngAhmadi = 1) Then
    Text1.Text = "Open"
    ElseIf (lngAhmadi = 2) Then
    Text1.Text = "Close"
    Else
    Text1.Text = "Properties"
    End If

    End Sub[/color]

    تابع CreatePopupMenu یک Popupmenu می سازد و یک اشاره گر از آن را بر میگرداند در ابتدا خالی است و توس تابع AppendMenu پر میشود
    تابع TrackPopupMenuExمنوی ساخته شده توسط تابع AppendMenu را نمایش میدهد و ID آن را برمیگرداند
    تابع GetCursorPos ماوس را در منطقه ای محبوس میکند
    تابع DestroyMenu اشاره گر ساخته شده توسط CreatePopupMenu را از حافظه پاک می کند

    MF_STRING یک منوی عادی ساخته میشود
    MF_SEPARATOR یک خط جدا کننده می سازد

    TPM_RETURNCMD اگر مقدار این تابع را به متغیر Wflage اختصاص دهیم مقدار برگشتی تابع ID منویی اس که بر روی آن کلیک میکنیم
     
    آخرین ویرایش: ‏19 اکتبر 2005
    نوشته شده توسط hamidahmadi در ‏19 اکتبر 2005
    Blaster6 و saalek110 از این پست تشکر کرده اند.
  15. hamidahmadi

    hamidahmadi Active Member

    ارسال‌ها:
    138
    تشکر شده:
    247
    امتیاز دستاورد:
    43
    TextOut تابع دیگری از API

    به نام خدا
    با عرض سلام دوباره
    بچه ها این دفعه میخواهم درباره تابع API ، TextOut برای شما بگویم هیچ میدانید که وقتی در ویژوال بیسیک دستور Form1.print را صادر میکنید در حقیفت از تابع API ، TextOut استفاده میکنید درحقیقت این تابع یک متن را در مکانی دلخواه ترسیم میکند ضمن آنکه میتوان تعداد کاراکترهائی را که تابع باید از متن ترسیم کند را تعیین کنیم
    این مثال را با ایجاد یک فرم جدید دنبال میکنیم
    کد (Text):
    [left][color=Red]Private Declare Function TextOut Lib "gdi32" Alias "TextOutA" (ByVal hdc As Long, ByVal x As Long, ByVal y As Long, ByVal lpString As String, ByVal nCount As Long) As Long

    Private Sub Form_Load()
    Dim strHamid As String
    Me.Font = "Times New Roman"
    Me.FontBold = True
    Me.FontSize = 24
    Me.FontItalic = True
    Me.AutoRedraw = True
    strHamid = "hamid Ahmadi"
    TextOut Me.hdc, 50, 100, strHamid, Len(strHamid)
    End Sub[/color][/left]
    در این مثال با استفاده از گزینه های مختلف فونت و استفاده از AutoRedraw برای اینکه هنگامی که فرم load میشود متن بر روی فرم نمایش داده شود و استفاده از تابع TextOut رشته hamid ahmadi را برروی فرم در موقعیت x = 50 و y = 100 نشان دادیم ضمن آنکه با استفاده از خاصیت len خروجی تعداد کاراکترهای strhamidرا که همان متن hamid Ahmadi می باشد را بر روی فرم مشخص کردیم
     
    نوشته شده توسط hamidahmadi در ‏6 نوامبر 2005
    Blaster6 و saalek110 از این پست تشکر کرده اند.
  16. hamidahmadi

    hamidahmadi Active Member

    ارسال‌ها:
    138
    تشکر شده:
    247
    امتیاز دستاورد:
    43
    CharLower تابع دیگری از API

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

    لطفا" به این کد توجه کنید
    کد (Text):
    [left][color=green]Private Declare Function CharLower Lib "user32" Alias "CharLowerA" (ByVal lpsz As String) As String

    Private Sub Command1_Click()
    Dim strHamid As String
    strHamid = Text1.Text
    CharLower strHamid
    Text2.Text = strHamid
    End Sub[/color][/left]
     
    نوشته شده توسط hamidahmadi در ‏6 نوامبر 2005
    Blaster6 و saalek110 از این پست تشکر کرده اند.
  17. hamidahmadi

    hamidahmadi Active Member

    ارسال‌ها:
    138
    تشکر شده:
    247
    امتیاز دستاورد:
    43
    CharUpper تابع دیگری از API

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

    لطفا" به این کد توجه کنید
    کد (Text):
    [left][color=brown]Private Declare Function CharUpper Lib "user32" Alias "CharUpperA" (ByVal lpsz As String) As String

    Private Sub Command1_Click()
    Dim strHamid As String
    strHamid = Text1.Text
    CharUpper strHamid
    Text2.Text = strHamid
    End Sub[/color][/left]
     
    نوشته شده توسط hamidahmadi در ‏6 نوامبر 2005
    Blaster6 و saalek110 از این پست تشکر کرده اند.
  18. hamidahmadi

    hamidahmadi Active Member

    ارسال‌ها:
    138
    تشکر شده:
    247
    امتیاز دستاورد:
    43
    دو تا بع API به نام BlockInput و Sleep

    با سلام دوباره ،
    بچه ها آیا پیش آمده که بخواهید ماوس و صفحه کلید را قفل کنید. راهی که اینک بر شما فاش میکنم BlockInput یکی دیگر از توابع API می باشد. لازم به ذکر است از آنجا که بعد از قفل شدن صفحه کلید و ماوس می بایست راهی برای گریز از آن باشد من به شما یکی دیگر از توابع API را که تابع Sleep می باشد را معرفی میکنم
    مواد لازم
    یک فرم
    یک دکمه

    کد (Text):
    [left][color=Blue]Private Declare Function BlockInput Lib "user32" (ByVal fBlock As Long) As Long
    Private Declare Sub Sleep Lib "kernel32" (ByVal dwMilliseconds As Long)

    Private Sub Command1_Click()

    BlockInput True
    Sleep 5000
    BlockInput False

    End Sub[/color][/left]
     
    نوشته شده توسط hamidahmadi در ‏9 نوامبر 2005
    Blaster6 و saalek110 از این پست تشکر کرده اند.
  19. hamidahmadi

    hamidahmadi Active Member

    ارسال‌ها:
    138
    تشکر شده:
    247
    امتیاز دستاورد:
    43
    تابع دیگری از API به نام AnimateWindow

    عزیزانم هیچ به فکرتان افتاده که شما هم مانند بسیاری از برنامه نویسان از حالت انیمیشن استفاده کنید و برای باز و بسته کردن فرمهایتان و یا اجزای داخل آن متوسل به کارهای زیبایی هم بشوید من به شما تابع AnimateWindow یکی دیگر از توابع API را معرفی میکنم
    مواد لازم
    یک فرم
    یک تکست
    یک دکمه
    کد (Text):
    [left][color=Red]
    Private Const AW_HOR_HOSTIVE = &H1
    Private Const AW_VER_NEGATIVE = &H8

    Private Declare Function AnimateWindow Lib "user32" (ByVal hwnd As Long, ByVal dwtime As Long, ByVal dwflags As Long) As Boolean

    Private Sub Command1_Click()
    AnimateWindow Text1.hwnd, 2000, AW_VER_NEGATIVE
    End Sub

    Private Sub Form_Load()
    Text1.Visible = False
    AnimateWindow Me.hwnd, 2000, AW_HOR_HOSTIVE
    End Sub[/color][/left]
     
    نوشته شده توسط hamidahmadi در ‏9 نوامبر 2005
    Blaster6 و saalek110 از این پست تشکر کرده اند.
  20. hamidahmadi

    hamidahmadi Active Member

    ارسال‌ها:
    138
    تشکر شده:
    247
    امتیاز دستاورد:
    43
    یک زنگ تفریح با Sendkeys و SelStart و SelLength

    بچه ها گاهی پیش آمده که شما بخواهید با گذاشتن یک پاسورد بر روی برنامه اتان صحت کاربر برنامه اتان را با یک سوال بله و خیر امتحان کنید. چه میکنید اگر کاربر یک سوال اشتباه وارد کرد. من میل دارم که متنی که کاربر نوشته شده است به رنگ آبی درآید و منتظر دریافت متنی دیگر از کاربر باشد بطوری که با نوشتن اولین کاراکتر توسط کاربر متن قبلی پاک شود
    مواد لازم
    یک فرم
    یک دکمه
    یک تکست
    کد (Text):
    [left][color=Red]
    Private Sub Command1_Click()
    Text1.SetFocus
    Text1.SelStart = 0
    Text1.SelLength = Len(Text1.Text)
    End Sub
    [/left][/color]
    ویا با این کد :

    کد (Text):
    [left][color=Blue]
    Private Sub Command1_Click()
    Text1.SetFocus
    SendKeys "{home}+{end}"
    End Sub
    [/left][/color]
     
    آخرین ویرایش: ‏9 نوامبر 2005
    نوشته شده توسط hamidahmadi در ‏9 نوامبر 2005
    Blaster6 و saalek110 از این پست تشکر کرده اند.
وضعیت موضوع:
موضوع بسته شده است.

به اشتراک بگذارید