تور لحظه آخری
امروز : چهارشنبه ، 12 اردیبهشت 1403    احادیث و روایات:  پیامبر اکرم (ص):به وسيله من هشدار داده شديد و به وسيله على عليه ‏السلام هدايت مى‏يابيد و به وسي...
سرگرمی سبک زندگی سینما و تلویزیون فرهنگ و هنر پزشکی و سلامت اجتماع و خانواده تصویری دین و اندیشه ورزش اقتصادی سیاسی حوادث علم و فناوری سایتهای دانلود گوناگون شرکت ها

تبلیغات

بلومبارد

تبلیغات متنی

تریدینگ ویو

خرید اکانت اسپاتیفای

کاشت ابرو

لمینت دندان

ونداد کولر

لیست قیمت گوشی شیائومی

صرافی ارکی چنج

صرافی rkchange

دانلود سریال سووشون

دانلود فیلم

ناب مووی

تعمیر گیربکس اتوماتیک

دیزل ژنراتور موتور سازان

سرور اختصاصی ایران

سایت ایمالز

تور دبی

سایبان ماشین

جملات زیبا

دزدگیر منزل

ماربل شیت

تشریفات روناک

آموزش آرایشگری رایگان

طراحی سایت تهران سایت

آموزشگاه زبان

اجاره سند در شیراز

ترازوی آزمایشگاهی

رنگ استخری

فروش اقساطی کوییک

راهبند تبریز

ترازوی آزمایشگاهی

قطعات لیفتراک

وکیل تبریز

خرید اجاق گاز رومیزی

آموزش ارز دیجیتال در تهران

شاپیفای چیست

فروش اقساطی ایران خودرو

واردات از چین

قیمت نردبان تاشو

وکیل کرج

قیمت فنس

armanekasbokar

armanetejarat

صندوق تضمین

پراپ تریدینگ معتبر ایرانی

نهال گردو

صنعت نواز

پیچ و مهره

خرید اکانت اسپاتیفای

صنعت نواز

لوله پلی اتیلن

کرم ضد آفتاب لاکچری کوین SPF50

دانلود آهنگ

طراحی کاتالوگ فوری

واردات از چین

اجاره کولر

دفتر شکرگزاری

تسکین فوری درد بواسیر

دانلود کتاب صوتی

تعمیرات مک بوک

قیمت فرش

خرید سی پی ارزان

خرید تجهیزات دندانپزشکی اقساطی

خانه انزلی

تجهیزات ایمنی

رنگ استخری

 






آمار وبسایت

 تعداد کل بازدیدها : 1799188786




هواشناسی

نرخ طلا سکه و  ارز

قیمت خودرو

فال حافظ

تعبیر خواب

فال انبیاء

متن قرآن



اضافه به علاقمنديها ارسال اين مطلب به دوستان آرشيو تمام مطالب
archive  refresh

طرح و حل مسئله در ویژوال بیسیک 6 با حمید احمدی -


واضح آرشیو وب فارسی:سایت ریسک: طرح و حل مسئله در ویژوال بیسیک 6 با حمید احمدی hamidahmadi 05 دي 1387, 23:02دوستان به این نتیجه رسیدم که فقط خواندن کتاب ویژوال بیسیک نمیتواند در یادگیری این زبان کاملا" موفق باشد و می بایست خود نیز مسئله هائی را طرح کرده و آن ها را انجام دهیم. شاید برایتان جالب باشد که بدانید من برای فکر کردن به این مثالی که در ذیل خواهم گفت حداقل یک ساعت وقت گذاشتم مسئله من حرکت یک برچسب در روی فرم بود به شرطی که وقتی این برچسب به سمت چپ فرم رسید به سمت راست حرکت کند و وقتی به سمت راست رسید به سمت چپ حرکت کند . اولش به نظرم آسان می آمد و پیش خود میگفتم خوب کاری ندارد یک شرط می سازم بدین صورت که اگر Left برچسب من مساوی صفر شد به برچسب خود در یک رویداد تایمر یک مقدار اضافه میکنم و اگر به قسمت راست فرمم رسید از آن کم می کنم . اما مسئله به همین راحتی هم نبود. خوب حالا من سعی می کنم برای راهنمائی شما و اینکه در ویژوال بیسیک معمولا" اینطور مطرح است که سعی کنید رویدادهای بزرگ را به قسمت های کوچک تقسیم کنید و آنها را در مدول های عمومی قرار دهید این مسئله را که به راحتی در یک مدول فرم میتوان نوشت از مدول های عمومی نیز استفاده کنم خوب حالا مواد لازم برای طرح این مسئله و حل آن : یک فرم یک لیبل یک تایمر بهترین مکان برای بار کردن خصوصیات این فرم و برچسب معمولا" قسمت لود فرم می باشد پس در لود فرم می نوسیم : Private Sub Form_Load() With Form1 .Height = 750 .Width = 4800 End With With Label1 .Top = 0 .Left = 0 .AutoSize = True .Caption = "Hamid Ahmadi" .ForeColor = vbBlue End With End Sub توضیح درباره قسمت With و End With این است که هرگاه بخواهیم خاصیتهای زیادی از یک کنترل خود را استفاده کنیم برای راحتی کار از کلمه With همراه با اسم آن کنترل شروع کرده و با گذاشتن یک نقطه از خاصیتهای مختلف آن کنترل استفاده می کنیم و با کلمه End With آن را خاتمه میدهیم . پس ما نیز در مورد فرم و برچسب خود اینکار را کردیم تا هرگاه فرم ما لود شود این خاصیتهای ذکر شده در مورد فرم اصلاح شود حال ما از دو مدول استفاده میکنیم یکی برای حرکت برچسب به سمت راست و یکی برای حرکت برچسب به سمت چپ در قسمت Project Explorer در قسمت راست ویژوال بیسیک راست کلیک کرده گزینه Add و سپس گزینه Module را انتخاب کنید و در صفحه باز شده بر روی Open کلیک کنید یک صفحه کد باز می شود به قسمت مشخصات خاصیتها بروید و اسم مدول را Jam بگذارید از این مدول برای حرکت به سمت راست استفاده می کنیم به قسمت منوی ویژوال بیسیک بروید و از منوی Tools بر روی گزینه Add Procedure کلیک کنید در قسمت Name کلمه J را بنویسید و آن را از نوع Sub و Public انتخاب کنید و در قسمت وسط آن این کد را بنویسید Public Sub J() Form1.Label1.Left = Form1.Label1.Left + 10 End Sub دوباره یک مدول جدید باز کنید به اسم Menha و رویداد M برای حرکت به سمت چپ و این کد را در آن بنویسید Public Sub M() Form1.Label1.Left = Form1.Label1.Left - 10 End Sub توضیح در مورد این کدها این است که اولا" برای اینکه این کدها را در فرم خود صدا کنیم می بایست این رویداد یک اسم داشته باشد و آن هم از نوع Public که فرم ما بتواند این رویداد را بشناسد و توضیح اینکه در یک مدول عمومی اگر بخواهید از خاصیت یک کنترل استفاده کنید حتما" می بایست توضیح دهید این کنترل در کدام فرم استفاده شده است و ما در اینجا قسمت چپ برچسب خود را با حالت انتساب در هر حرکت به مقدار 10 تیوپ کم و یا اضافه می کنیم حال برمیگردیم به فرم خود و بر روی قسمت تایمر با یک دستور If به فرم خود میگوئیم که اگر برچسب ما به چپ فرم رسید مدول Jam را اجرا کن و اگر به راست فرم رسید مدول Menha را اجرا کن و خاصیت Interval تایمر خود را 10 میگذاریم اما اینجا یک مسئله خیلی بزرگ بوجود می آید و آن این است که قسمت چپ برچسب فقط در یک حالت به صفر و در یک حالت به قسمت راست فرم می رسد و برچسب دیگر نمیتواند حرکت کند و اگر از علامت بزرگتر و کوچکتر هم استفاده کنیم می بینم که باز مشکل دارد چون حرکت برچسب در یک نقطه هی 10 تیوپ کم می شود و هی 10 تیوپ اضافه می شود و در واقع برچسب در یک نقطه می ماند به نظر شما راه حل چیست ؟ من آن را با یک متغیر از نوع Boolean حل کردم و در واقع به فرم گفتم که اگر چپ برچسب من به صفر رسید مدول منها را خاموش کن و مدول جم را اجرا کن و اگر برچسب من به راست فرم رسید مدول منها را خاموش کن و مدول جم را اجرا کن پس ما نیاز به یک متغیر از نوع بولن داریم و آن را در قسمت General فرم خود تعریف میکنیم و در قسمت لود فرم هم تغییراتی می دهیم در ذیل کد فرم را مشاهده می کنید Dim B As Boolean Private Sub Form_Load() With Form1 .Height = 750 .Width = 4800 End With With Label1 .Top = 0 .Left = 0 .AutoSize = True .Caption = "Hamid Ahmadi" .ForeColor = vbBlue End With Timer1.Enabled = True Timer1.Interval = 10 B = True End Sub Private Sub Timer1_Timer() If B = True Then If Label1.Left = 0 Then B = False Else Menha.M End If End If If B = False Then If Label1.Left = (Form1.ScaleWidth - Label1.Width) Then B = True Else Jam.J End If End If End Sub اگر به یک خط از کد فرم توجه کرده باشید به قسمت چپ فرم با خاصیت انتساب عرض برچسب از عرض ScaleWidth فرم کم شده است و اگر این خط را حذف کنید می بیند که در هنگامی که برچسب به راست فرم میرسد به اندازه عرض برچسب نیز برچسب ما به سمت راست حرکت می کند و سپس برمیگردد که با این خط کد این مشکل حل شده است اما چرا ScaleWidth فرم و نه width فرم و آن به این خاطر است که قسمت های لبه فرم در خاصیت ScaleWidth حساب نمیشود و آن را نیز شما میتواند با عوض کردن متن کد از ScaleWidth فرم با width فرم شاهد باشید. حال آن را اجرا کنید و به حرکت متن حمید احمدی که به راست و چپ فرم خورده و حرکت میکند توجه کنید hamidahmadi 08 دي 1387, 17:32شاید تاکنون با برنامه مانا در کارتهای دی وی بی کار کرده باشید برنامه ای است برای دانلود آفلاین. برای اینکه بتوانید در این برنامه با آی پی شخص و یا سایتی کارکنید احتیاج دارید که در فیلتر آن به جای آی پی از هگزادسیمال Hex آن استفاده کنید. پس اینجاست که این برنامه به کار ما می آید. حال شروع می کنیم مواد لازم : یک فرم یک تکست باکس یک لیبل یک دکمه ابتدا کد برنامه را کامل می گذاریم و سپس در مورد آن صحبت می کنیم Option Explicit Private Sub Form_Load() With Form1 .Height = 3600 .Width = 4800 .Top = (Screen.Height - .Height) 2 .Left = (Screen.Width - .Width) 2 .Caption = "Design By Hamid Ahmadi" End With With Text1 .Height = 495 .Left = 240 .Top = 120 .Width = 4215 .FontSize = 18 .Alignment = 2 .Text = "" .TabIndex = 0 End With With Label1 .Height = 615 .Left = 240 .Top = 720 .Width = 4215 .FontSize = 18 .Alignment = 2 .Caption = "" End With With Command 1 .Height = 615 .Left = 1320 .Top = 1920 .Width = 2055 End With End Sub Private Sub Command 1_Click() Dim strsum As String Dim bytA As Byte Dim intB As Integer Dim strC As String Dim I As Integer On Error GoTo hamid Label1.Caption = "" strsum = Text1.Text If Text1.Text = "" Then Text1.SetFocus End If If Right(strsum, 1) <> "." Then strsum = strsum + "." Text1.Text = strsum Else strsum = strsum End If For I = 1 To 4 bytA = InStr(1, strsum, ".") intB = Mid(strsum, 1, bytA) strC = Hex(intB) Text1.SelStart = 0 Text1.SelLength = bytA Text1.SelText = "" strsum = Text1.Text Label1.Caption = Label1.Caption & strC Next I hamid: Text1.Text = "" Text1.SetFocus End Sub خوب کد را مشاهده کردید در خط یک توسط دسنور Option Explicit کاری کردیم که متغیرها همه تعریف شوند و اگر متغیری را اشتباها" تایپ کردیم ویژوال بیسیک از ما ایراد بگیرد. در قسمت لود فرم خاصیتهای فرم ، تکست باکس ، برچسب و دکمه را بارگذاری کردیم و می دانید که بهترین جا برای بارگزاری خاصیت ها همین لود فرم می باشد. در خاصیت فرم توسط دو گزینه Left و Top و استفاده از Screen کاری کردیم که فرم هنگام لود شدن در وسط صفحه مانیتور شخص دیده شود حال به شرح کدهای دکمه می پردازیم در خط اول بعد از تعریف متغیرها توسط On Error GoTo hamid به ویزوال بیسیک گفتیم که اگر خطائی رخ داد برو به خطی که کلمه Hamid نوشته شده است و این را باید توجه کنید که می بایست از دو نقطه بعد از :Hamid استفاده کنید. در خط بعد برچسب را با دستور انتساب پاک میکنیم چرا که اگر کاربر برنامه شما دو بار بر روی دکمه فشار داد اطلاعاتی که برروی برچسب توسط فشار اول دکمه بوجود آمده پاک شود. احتیاج به یک متغیر داریم که من به آن نام StrSum را داده ام و درون آن توسط انتساب متن تکست باکسم را نگه داری میکنم و بعد در یک شرط من به ویژوال بیسیک می گویم که اگر متن تکست باکس من خالی بود فقط فوکوس را داشته باشد تا کاربر متنی را درون آن بنویسید. در دستور بعدی باز هم توسط گزینه شرطی و توسط تابع Right اعلان کردم که اگر آخر متن تکست باکس من نقطه ممیز نداشت هم در متغیر StruSum و هم در تکست باکس من این نقطه را بگذارد. و در آخر از آنجاکه یک آی پی معمولا" از چهار قسمت نقطه دار تعریف شده است با یک دستور For در چهار حلقه تکرار کاری کردیم که ابتدا در یک متغیر توسط تابع instr با یک جستجو کاراکترهای ما تا علامت نقطه را به ثبت کند و سپس در خط بعدی با تابع Mid و یک متغیر صحیح از نوع Integer کاری کردیم که متن تا نقطه اعشار ثبت شود و سپس از آنجا که متغیر صحیح اعشار نمیگیرد نقطه را دور انداخته و فقط عدد تا نقطه اعشار را ثبت کند و سپس توسط یک متغیر از نوع رشته و تابع Hex هگزادسیمال عددی که در متغیر Integer ثبت شده را گرفتیم. حال می بایست عددی که اینک در متغیر StrSum ما است را پاک کنیم و فقط مابقی اعداد را داشته باشیم که با استفاده از SelStart و SelLength و SetText تکست باکس خود این متن را پاک کردیم و سپیس این متن جدید را به متغیر StrSum خود دادیم و در آخر نیز توسط حالت انتساب کاری کردیم که متن برچسب ما علاوه بر گرفتن متن جدید متن قبلی را هم به خود اضافه کند تا بتوانیم چهار حالت حلقه For را اضافه کند در دو خط آخر بعد از خط : Hamid کاری کردیم که اگر کاربری متنی را به جای عدد وارد کرد تکست باکس خالی شود و فوکوس را بگیرد. hamidahmadi 09 دي 1387, 20:57اگر در برنامه های گرافیکی دقت کرده باشید جائی از آن برای انتخاب رنگ از سه میله استفاده شده است که با حرکت میله ها میتوان رنگ دلخواه را انتخاب کرد . حال ما به ساختن این برنامه می پردازیم ابتدا مواد لازم : یک فرم چهار عدد لیبل سه عدد میله افقی Option Explicit Private Sub Form_Load() With Form1 .Height = 2805 .Left = 0 .Top = 0 .Width = 4830 .Top = (Screen.Height - .Top) 2 .Left = (Screen.Width - .Width) 2 End With With Label1 .Height = 840 .Left = 0 .Top = 0 .Width = 4695 .Caption = "Color" .FontSize = 36 .Alignment = 2 End With With Label2(0) .Height = 495 .Left = 0 .Top = 840 .Width = 1215 .Caption = "Red" .BackColor = vbRed .FontBold = True .FontSize = 18 End With With Label2(1) .Height = 495 .Left = 0 .Top = 1320 .Width = 1215 .Caption = "Green" .BackColor = vbGreen .FontBold = True .FontSize = 18 End With With Label2(2) .Height = 495 .Left = 0 .Top = 1800 .Width = 1215 .Caption = "Blue" .BackColor = vbBlue .FontBold = True .FontSize = 18 End With With hsrrgb(0) .Height = 495 .Left = 1200 .Top = 840 .Width = 3495 .Min = 1 .Max = 255 .SmallChange = 10 .LargeChange = 20 .Value = 127 End With With hsrrgb(1) .Height = 495 .Left = 1200 .Top = 1320 .Width = 3495 .Min = 1 .Max = 255 .SmallChange = 10 .LargeChange = 20 .Value = 127 End With With hsrrgb(2) .Height = 495 .Left = 1200 .Top = 1800 .Width = 3495 .Min = 1 .Max = 255 .SmallChange = 10 .LargeChange = 20 .Value = 127 End With End Sub Private Sub hsrRGB_Change(Index As Integer) Label1.BackColor = RGB(hsrrgb(0).Value, hsrrgb(1).Value, hsrrgb(2).Value) End Sub Private Sub hsrRGB_Scroll(Index As Integer) Call hsrRGB_Change(hsrrgb(Index).Value) End Sub این کد خیلی راحت است شرح قسمت لود فرم که دیگر به عهده خودتان می باشد اما شرح میله های افقی اینطور است که ما رنگ پشت زمینه برچسب اول را با دستور انتساب از تابع RGB گرفتیم که آن هم توسط آرگومانهایی که از Value میله های افقی به این تابع فرستاده شد انجام داد بدین صورت که این تابع از سه رنگ اصلی تمام رنگها را بوجود می آورد و سه رنگ اصلی در این تابع قرمز و سبز و آبی می باشد که هر کدام آنها تا 255 غلظت هر رنگ را اندازه گیری میکنند که با ترکیب این رنگها ، رنگهای مختلف بوجود می آید و اگر دقت کرده باشید ما در این مثال به خاصیت Min و Max هر یک از میله ها ی افقی از 1 تا 255 مقدار دادیم و توسط خاصیت Value میله ها و انتساب آن به رنگ پشت زمینه برچسب اول رنگ آن را با حرکت غلتک میله ها تغییر دادیم و نکته ای که در مورد میله های افقی باقی می ماند این است که ما می بایست در رویداد Scroll میله های افقی هم این تغییرات را انجام دهیم چرا که ممکن است کاربر برنامه شما بخواهد میله را با فشار دادن موس گرفته حرکت کند که می بایست این تغییرات هم با کشیدن این میله نشان داده شود و اینکار در رویداد Scroll میله ها اتفاق می افتد که ما هم با صدا کردن رویداد Change میله های افقی و استفاده به جا از ایندکس میله ها این کار را به درستی انجام دادیم و نکته دیگری که باقی می ماند این است که اگر به نام میله ها نگاه کرده باشید می بینید که ما از آرایه های کنترل ها هم استفاده کرده ایم که حسن این کار استفاده به جا از ایندکس آن در رویداد Scroll بود و یک نکته دیگر اینکه چون ما کدی برای تغییر سایز فرم ننوشته ایم سعی کنید خاصیت BorderStyle فرم را به Fixed Single تغییر دهید تا دیگر تغییر سایزی نداشته باشیم hamidahmadi 10 دي 1387, 21:11فکر می کنم مثال امروز کمی راحت باشد ما میخواهیم از روی صفحه دسکتاپ خود با زدن دکمه Print Screen عکس بگیریم مواد لازم : یک فرم یک ایمیج حال کد برنامه را میگذاریم و بعد آن را تفسیر میکنیم Private Sub Form_Load() With Me .Height = 7995 .Width = 11115 .Top = (Screen.Height - .Height) 2 .Left = (Screen.Width - .Width) 2 End With With Image1 .Height = 6615 .Left = 600 .Top = 360 .Width = 9615 .Stretch = True .BorderStyle = 1 End With End Sub Private Sub Form_Keyup(KeyCode As Integer, Shift As Integer) If KeyCode = 44 Then Image1.Picture = Clipboard.GetData End If End Sub در مورد قسمت لود فرم دیگر توضیحی نمی دهم فقط یک نکته که میتوان به جای نام فرم حاضر از کلمه Me استفاده کرد و اما در مورد قسمت KeyUp فرم یعنی هنگامی که کاربر برنامه شما دکمه ای را که فشار داده رها کرده است. اگر به دکمه Print Screen فشار دهید و این نکته را در مورد Windows بدانید که با فشار دادن دکمه Print Screen یک عکس از صفحه دسکتاپ در Clipboard کپی میشود میتوانید به راحتی کدهای فوق را بفهمید . و اما ما چکار کرده ایم. با یک جمله شرطی در قسمت KeyUp فرم به ویژوال بیسیک گفته ایم که اگر کاربری بر روی دکمه Print Screen فشار داد در حالت انتساب حافظه کلیپبرد ما را به Picture ایمیج نسبت بدهد و اما چگونه با دانستن اینکه کد دکمه Print Screen عدد 44 می باشد.




این صفحه را در گوگل محبوب کنید

[ارسال شده از: سایت ریسک]
[مشاهده در: www.ri3k.eu]
[تعداد بازديد از اين مطلب: 3406]

bt

اضافه شدن مطلب/حذف مطلب







-


گوناگون

پربازدیدترینها
طراحی وب>


صفحه اول | تمام مطالب | RSS | ارتباط با ما
1390© تمامی حقوق این سایت متعلق به سایت واضح می باشد.
این سایت در ستاد ساماندهی وزارت فرهنگ و ارشاد اسلامی ثبت شده است و پیرو قوانین جمهوری اسلامی ایران می باشد. لطفا در صورت برخورد با مطالب و صفحات خلاف قوانین در سایت آن را به ما اطلاع دهید
پایگاه خبری واضح کاری از شرکت طراحی سایت اینتن