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

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

msdn

New Member
ادامه برنامه هاي چند سندي

[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
g4.gif


[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]

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


g1.gif


g3.jpg


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

g2.gif


.
 
آخرین ویرایش توسط مدیر:

msdn

New Member
كار با فرمهاي فرزند در حالت طراحي

[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

g5.gif

 
آخرین ویرایش توسط مدیر:

msdn

New Member
نماي موقع اجراي برنامه هاي چند سندي

[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 فرم چند سندي مخلوط مي شود و در تايتل بار فرم چند سندي نمايش داده مي شود. شكل زير:

g7.gif
<<<<<<<<
g6.gif


[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]

منويهاي فرم فرزند فعال( اگر داشته باشد) ، در منو بار فرم چند سندي نمايش داده مي شود ، نه روي فرم فرزند.
 
آخرین ویرایش توسط مدیر:

msdn

New Member
مثال عملي براي برنامه هاي چند سندي


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

.

s1.gif

.
s11.gif

.

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

s2.gif

.
s3.gif

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

s4.gif


.

s5.gif


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

s6.gif

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

s7.gif

.
[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]
.

s8.gif

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

s9.gif

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

s10.gif

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

s12.gif


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

s13.gif


 
آخرین ویرایش:

saalek110

Well-Known Member
ادامه رويدادها - رويداد فوكوس

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

k2.gif

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

k3.gif

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

k4.gif

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

k5.gif

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

k6.gif

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

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

msdn

New Member
كاربرد هر يك از كنترلها


v1.gif


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

v2.gif

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

v3.gif

.
كنترلهايي كه اجازه انتخاب را به كاربر مي دهد.
.

v4.gif

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

v5.gif

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

v6.gif

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

v7.gif

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

msdn

New Member
استفاده از ابزار كامون ديالوگ


b3.gif

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


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

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

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

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

Open
Save as
Color
Font
Print

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


a9.gif


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


b1.gif

 
آخرین ویرایش توسط مدیر:

msdn

New Member
Displaying Open and Save As Dialog Boxes

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

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

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

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

كدي كه ملاحظه مي كنيد، باعث نمايش يك Open dialog box مي شود و از نام فايل انتخاب شده به عنوان يك آرگومان براي احضار يك روال كه فايل را باز مي كند استفاده شده. (مترجم: آرگومان ، مقداري است كه به روال ارسال مي شود و روال مي تواند از آن استفاده كند..)
[/size]
.
کد:
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 آرگوماني است كه به اين روال ارسال مي شود.

در پستهاي بعدي سعي مي شود تا مثالهايي براي استفاده از اين آرگومان ذكر شود.
 
آخرین ویرایش توسط مدیر:

saalek110

Well-Known Member

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

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

ChDir "\vbfiles"

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

e2.gif

براي همه اين كارا يك (( چك كردن )) لازمه... اين هم چك كردن آن:
کد:
[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 از دستور زير استفاده كنيد:

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

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

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

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

e3.gif

 
آخرین ویرایش:

hamidahmadi

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

کد آن
کد:
[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

Active Member
آموزش یک ماشین حساب از حمید احمدی

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

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

کد:
[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

Active Member
آموزش 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 ) می گذاریم
حال به کد مربوطه توجه کنید :
کد:
[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 با من همکاری کند تا بتوانیم ادامه این سرفصل را برایتان داشته باشیم.
 
آخرین ویرایش:

hamidahmadi

Active Member
ادامه Api

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

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

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


کد:
[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 منویی اس که بر روی آن کلیک میکنیم
 
آخرین ویرایش:

hamidahmadi

Active Member
TextOut تابع دیگری از API

به نام خدا
با عرض سلام دوباره
بچه ها این دفعه میخواهم درباره تابع API ، TextOut برای شما بگویم هیچ میدانید که وقتی در ویژوال بیسیک دستور Form1.print را صادر میکنید در حقیفت از تابع API ، TextOut استفاده میکنید درحقیقت این تابع یک متن را در مکانی دلخواه ترسیم میکند ضمن آنکه میتوان تعداد کاراکترهائی را که تابع باید از متن ترسیم کند را تعیین کنیم
این مثال را با ایجاد یک فرم جدید دنبال میکنیم
کد:
[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

Active Member
CharLower تابع دیگری از API

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

لطفا" به این کد توجه کنید
کد:
[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

Active Member
CharUpper تابع دیگری از API

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

لطفا" به این کد توجه کنید
کد:
[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

Active Member
دو تا بع API به نام BlockInput و Sleep

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

کد:
[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

Active Member
تابع دیگری از API به نام AnimateWindow

عزیزانم هیچ به فکرتان افتاده که شما هم مانند بسیاری از برنامه نویسان از حالت انیمیشن استفاده کنید و برای باز و بسته کردن فرمهایتان و یا اجزای داخل آن متوسل به کارهای زیبایی هم بشوید من به شما تابع AnimateWindow یکی دیگر از توابع API را معرفی میکنم
مواد لازم
یک فرم
یک تکست
یک دکمه
کد:
[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

Active Member
یک زنگ تفریح با Sendkeys و SelStart و SelLength

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

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

جدیدترین ارسال ها

بالا