واضح آرشیو وب فارسی:سایت ریسک: ساعت کشورهای مختلف (ویژوال بیسیک) uu99 21 بهمن 1386, 01:50میخواهیم چند تا برچسب روی فرم قرار بدهیم و هرکدام از این برچسبها ساعت یک کشوری رو نشون بده . دستور پس و پیش کردن ساعتها چجور نوشته میشه ؟ سوال دوم در مورد مقدار Interval هست که بهتره مقدار اون چند باشه تا ساعت دقیقتر نشون داده بشه؟ با تشکر the_king 21 بهمن 1386, 05:39پاسخ سوالتون بستگی به نوع داده ای داره که برای زمان بکار می برید : در این کد، زمان فعلی با نوع داده Date دریافت می شود و 120 دقیقه به آن افزوده می شود : Dim Time As Date Time = Now Time = DateAdd("n", 120, Time) MsgBox Format(Time, "hh:nn:ss") در این تابع ما زمان را به شکل ساعت و دقیقه دریافت می کنیم و به مقدار پارامتر سوم (دقیقه) آنرا افزایش می دهیم : Private Sub AddTime(ByRef Hour As Variant, ByRef Minute As Variant, ByVal Value As Long) Dim Time As Long Time = (Hour * 60 + Minute + Value) Mod 1440 Hour = Time 60 Minute = Time Mod 60 End Sub مقدار Interval بستگی به جزئیات نمایشی برنامه شما دارد. اگر کوچکترین جزئیات مربوط به ثانیه است، مقدار 250 یعنی چهار بار در ثانیه برای Interval کافیست. ولی اگر جزئیات گرافیکی شما در حد دقیقه است، 1000 هم کفایت می کند، البته همیشه در رخداد Load فرم یکبار رخداد تایمر را صدا بزنید تا برای اولین نمایش خود منتظر سپری شدن آن Interval نشود. the_king 21 بهمن 1386, 05:49من برنامه ای ساختم که بر اساس تابع AddTime عمل می کند. ساعت سمت چپی ساعت فعلی سیستم می باشد. ساعت سمت راستی با اضافه کردن یک زمان بر حسب دقیقه عمل می کند که مقدار پیشفرض آن 120 دقیقه است. قسمت جالب توجه این برنامه شبیه سازی رفتاری است که ساعت Gadget در ویندوز ویستا دارد، وقتی زمان جدیدی را برای ساعت سمت راستی مشخص می کنید، به آرامی خود را با آن تطبیق می دهد و عقربه ها می چرخند و هر چه به زمان جدید نزدیکتر می شود، حرکت عقربه ها هم کندتر خواهد شد. () کد کامل برنامه به همراه فایل اجرایی ضمیمه این پست می باشد. uu99 21 بهمن 1386, 12:31سلام! خسته نباشید. جناب علی سعید، این ساعت فوق العاده ست . خیلی زیبا و در عین حال جادویی 2تا ساعت آنالوگ در این برنامه هست ولی هر کاری کردم نتونستم اثری از اونها روی فرم پیدا کنم . هیچ شکلی ، خطی یا خطوطی از این ساعتها روی فرم نیست . فقط در هنگام اجرای برنامه پدیدار میشن دستتون درد نکنه . خیلی ممنونم که حاصل زحماتتون رو به رایگان ، همراه با سورس در اختیار کاربران سایت میگذارید. وجود شما و امثال شما برای سایت نعمتی ست . موفق باشید uu99 08 اسفند 1386, 03:02با عرض سلام و ادب و احترام خدمت استادان ویژوال بیسیک رسیدیم به بخش ترسیم میخواهیم ساعت آنالوگ درست کنیم . فکر میکنم با دستور زیر این کار صورت میگیره (البته شاید) object.Line [Step] (x1, y1) [Step] - (x2, y2), [color], [B][F] یکی اینکه چطوری باید تنظیم کنیم که با هر ثانیه عقربه ثانیه یک واحد بچرخد و برای عقربه ساعت شمار هم همینطور . در دستور بالا اگه امکان داره یک مثال بزنید و تمامی پارامترهای اونو قرار بدین . من هر کاری کردم Step رو خطا میگیره. با تشکر فراوان the_king 08 اسفند 1386, 03:49در برنامه ای که من نوشته بودم وظیفه روتین PaintLine ترسیم یک عقربه بود : Public Sub PaintLine(ByVal Percent As Double, ByVal DrawWidth As Long, ByVal LineWidth As Long, ByVal Color As OLE_COLOR) Dim Degree As Double, X As Long, Y As Long Degree = Percent * 2 * pi - pi / 2 X = LineWidth * Cos(Degree) Y = LineWidth * Sin(Degree) FormMain.PicTemp.DrawWidth = DrawWidth FormMain.PicTemp.Line (CenterX, CenterY)-(X + CenterX, Y + CenterY), Color End Sub اول باید مشخص کنیم که عقربه در چه زاویه ای قرار داره. برای اینکار به مقدار ماکزیمم عدد عقربه احتیاج داریم، مثلا این مقدار برای عقربه ثانیه شمار 60 است و برای عقربه ساعت شمار 12. اول مقدار عدد عقربه را بر ماکزیمم اون تقسیم می کنیم تا یک نسبت به دست بیاد. مثلا اگه ساعت 6 است حاصل این نسبت 0.5 خواهد بود. اما چون عقربه ساعت بایستی به ازای هر دقیقه هم حرکت مختصری داشته باشد مقدار دقیقه تقسیم بر 720 را هم به آن اضافه می کنیم : Percent = Hour / 12 + Minute / 720 حالا باید این نسبت را به واحد رادیان تبدیل کنیم : Private Const pi As Double = 3.14159265358979 Degree = Percent * 2 * pi - pi / 2 در اینجا Percent همان نسبتی است که حساب کرده ایم. قدم بعدی تبدیل کردن این زاویه به مختصات x و y است : X = LineWidth * Cos(Degree) Y = LineWidth * Sin(Degree) مقدار LineWidth طول عقربه را مشخص می کند. و قبل از رسم کردن عقربه باید ضخامت آنرا هم مشخص کنیم : FormMain.PicTemp.DrawWidth = DrawWidth DrawWidth ضخامت عقربه را نشان می دهد. اکنون می توانیم از نقطه مرکز به مختصات (CenterX , CenterY) عقربه مورد نظر را ترسیم کنیم : FormMain.PicTemp.Line (CenterX, CenterY)-(X + CenterX, Y + CenterY), Color Color رنگ عقربه را مشخص می سازد. اگر مختصات نقطه دوم را نسبت به نقطه اول تعیین کنیم، از کلمه کلیدی Step استفاده می شود : FormMain.PicTemp.Line (CenterX, CenterY)-Step(X, Y), Color uu99 08 اسفند 1386, 16:44سلام خیلی ممنون جناب علی سعید . حسابی شرمنده م کردین . امیدوارم یه روزی بتونم محبت های شما رو جبران کنم .
این صفحه را در گوگل محبوب کنید
[ارسال شده از: سایت ریسک]
[مشاهده در: www.ri3k.eu]
[تعداد بازديد از اين مطلب: 786]