View Full Version : ساعت آنالوگ در برنامه
کامروا
جمعه 13 آبان 1390, 15:34 عصر
سلام دوستان گرامی
می خوام در برنامه، ساعت آنالوگ داشته باشم، چطور؟
ممنون
سعید صابری
جمعه 13 آبان 1390, 16:18 عصر
میتونی از کامپوننت رایگان JVCL استفاده کنی یا
این کد بزرا در یک Timer
و یک image بزار که عکس یک ساعت انالوگ بدون ساعت شمار و دقیقه شمار و... باشه
var
HourX : Integer;
HourY : Integer;
MinX : Integer;
MinY : Integer;
SecX : Integer;
SecY : Integer;
Hour, Min, Sec, MSec: Word;
Var
stime:string[8];
begin
form1.Canvas.Draw(0,0,Image1.Picture.Graphic);
inc(sec);
if sec=60 then
begin
sec:=0;
inc(min);
if min=60 then
begin
min:=0;
inc(hour);
if hour=12 then
hour:=0;
end;
end;
HourX := Round(48 * Cos((Pi / 180) * (30 * hour+min*0.5 - 90)) + 85);
HourY := Round(48 * Sin((Pi / 180) * (30 * hour+min*0.5 - 90)) + 85);
MinX := Round(60 * Cos((Pi / 180) * (6 * min - 90)) + 85);
MinY := Round(60 * Sin((Pi / 180) * (6 * min - 90)) + 85);
SecX := Round(68 * Cos((Pi / 180) * (6 * Sec - 90)) + 85);
SecY := Round(68 * Sin((Pi / 180) * (6 * Sec - 90)) + 85);
form1.Canvas.Pen.Width := 5;
form1.Canvas.pen.Color := clBlack;
form1.Canvas.MoveTo(85, 85);
form1.Canvas.LineTo(HourX , HourY );
form1.Canvas.Pen.Width := 4;
form1.Canvas.pen.Color := clBlack;
form1.Canvas.MoveTo(85, 85);
form1.Canvas.LineTo(MinX , MinY );
form1.Canvas.pen.Color := clRed;
form1.Canvas.Pen.Width := 2;
form1.Canvas.MoveTo(85, 85);
form1.Canvas.LineTo(SecX , SecY );
form1.Canvas.Pen.Width := 1;
form1.Canvas.pen.Color := clRed;
form1.Canvas.Brush.Style := bsSolid;
form1.Canvas.Brush.Color := clRed;
form1.Canvas.Ellipse(80,80,90,90);
form1.Canvas.Font.Color:=clBlack;
form1.Canvas.Font.Size:=23;
form1.Canvas.Brush.Style:=bsClear;
form1.Canvas.Font.Name:='arial bold';
if length(inttostr(hour))=1 then stime:='0'+inttostr(hour)+':' else stime:=inttostr(hour)+':';
if length(inttostr(min))=1 then stime:=stime+'0'+inttostr(min)+':' else stime:=stime+inttostr(min)+':';
if length(inttostr(sec))=1 then stime:=stime+'0'+inttostr(sec) else stime:=stime+inttostr(sec);
form1.Canvas.TextOut(25,190,stime);
//////
DecodeTime(time, Hour, Min, Sec, MSec);
کامروا
جمعه 13 آبان 1390, 16:26 عصر
متغیر های sec,SecX و... رو از int گرفتم!
ولی کار نمیکنه.
ببین:
77413
سعید صابری
جمعه 13 آبان 1390, 16:29 عصر
رفته زیر منو بالا. باید کد دستکاری کنی که جاش تغییر کنه.
کامروا
جمعه 13 آبان 1390, 16:34 عصر
توی یه فرم جدید گذاشتم اما بازم!!!
اصلا حرکت نمیکنه، اعداد عجیبی هم نوشته
77414
سعید صابری
جمعه 13 آبان 1390, 16:42 عصر
به خاطر اینه که توابع Hour, Min, Sec مقدار دهی نکردی. یعنی ساعتو بهش ندادی.
میخوای راحت تر باشی برو توی کار JVCL رایگان
DecodeTime(time, Hour, Min, Sec, MSec);
این هم سورس کامل
behzad_dr
جمعه 13 آبان 1390, 17:50 عصر
یه کار راحتر از فایل های فلش استفاده کنید البته قبلش shockwave رو نصب کن
کامروا
جمعه 13 آبان 1390, 18:49 عصر
یه کار راحتر از فایل های فلش استفاده کنید البته قبلش shockwave رو نصب کن
shockwave کامپوننته؟
behzad_dr
چهارشنبه 25 آبان 1390, 00:44 صبح
بله ،میتونید از تو اکتیویکس کنترل فعالش کنید
shockwave کامپوننته؟
nsco_nsco
پنج شنبه 26 آبان 1390, 07:00 صبح
سلام تا اونجا که می دونم اگر از فلش استفادخ کنی نمی تونی تو فرم درست فراخوانیش کنی اما یک چیز هست فایل های اماده فلش برای ساعت زیاده مخصوصا برای وب سایت ها زیاد ساختن می تونی استفاده کنی موفق باشی :قلب:
nsco_nsco
پنج شنبه 26 آبان 1390, 08:23 صبح
سلام یکی پیدا کردم گفتم شاید بدردتون بخوره : لینک (http://www.p30vel.ir/4101-131-flash-clock-swf.html)
موفق باشید :قلب:
کامروا
پنج شنبه 26 آبان 1390, 15:54 عصر
متشکرم
البته لینک بالا خرابه
این کار میکنه: لینک (http://forum.asre-digital.com/attachments/f107/127d1283323463-131-swf-flash-clock.rar)
vBulletin® v4.2.5, Copyright ©2000-1404, Jelsoft Enterprises Ltd.