delphi4arab منتديات دلفي للعرب

نسخة كاملة : تغيير شكل الساعة
أنت حالياً تتصفح نسخة خفيفة من المنتدى . مشاهدة نسخة كاملة مع جميع الأشكال الجمالية .
الصفحات : 1 2
شكراً على كل حال
أقصد بالجديد أني اعلم كيفية وضع فورم على الساعة بتاريخ أو وقت
وكذا إخفاء الساعة ، أو أيقونات ، أو وضع أيقونات ، وما شابه ...
أنتظر برنامج يضع ما في الصورة وأعلم أنه ليس بالمشكل الكبير
وأنا في طريقي للوصول إن شاء الله فقط تنقص دالة لذلك
الصورة
[attachment=2430]
صيغة السؤال غير صحيحة
كود :
كيف يتم تغيير شكل الساعة كما هو في برنامج Tray clock وكما في الصورة :
الأصح كيف يمكن الرسم على الساعة

في هده الحالة .. عليك بال +GDI
على كل حال لقد صممت كلاس بسيط للرسم بالاعتماد على GDI+

ألق نظرة على الصورة
[attachment=2508]
PHP كود :
uses GDIPAPI, GDIPOBJ;
type TPaintClock = Class (TObject)
private
FTime : TDateTime ;
FHDC :HDC;
FBackGroundGradientStart,
FBackGroundGradientEnd,
FTextGradientStart,FTextGradientEnd:TColor;
FFontName:String;
FHeight,FWidth:integer;
Brush: TGPLinearGradientBrush;
R: TGPRectF;
StrFormat:TGPStringFormat   ;
g :TGPGraphics;
Font :TGPFont  ;
FontFamily : TGPFontFamily ;

Public
 
constructor Create(DC: HDC);
 
procedure Free;
 
procedure Paint();overload;
 
procedure Paint(DC:HDC);overload;
 
procedure SetSize(X,Y,Width, Height: integer);

published
 property Time 
: TDateTime read FTime write FTime ;
 
property BackGroundGradientStart : TColor read FBackGroundGradientStart
 write FBackGroundGradientStart 
;
 
property BackGroundGradientEnd: TColor read FBackGroundGradientEnd
 write FBackGroundGradientEnd
;
 
property TextGradientStart : TColor read FTextGradientStart
 write FTextGradientStart 
;
 
property TextGradientEnd: TColor read FTextGradientEnd
 write FTextGradientEnd
;
 
property FontName : string read FFontName write FFontName;
// property Width : integer read FWidth write SetWidth;
// property Height : integer read FHeight write SetHeight;
implementation

{ TPaintClock by SMP3 }

constructor TPaintClock.Create(DC: HDC);
begin
R
.X:=0;
R.Y:=0;
R.Width:=200;
R.Height:=30;

g :=TGPGraphics.Create(DC);

Brush:=TGPLinearGradientBrush.Create(R, MakeColor(0,199,5),
       
MakeColor(33,79,15), LinearGradientModeVertical);
FBackGroundGradientStart:= MakeColor(0,199,5) ;
FBackGroundGradientEnd  := MakeColor(33,79,15) ;
FTextGradientStart      := aclWhite   ;
FTextGradientEnd        := aclWhite ;
StrFormat:=TGPStringFormat.Create();
FHDC:=DC;
FTime:=System.SysUtils.Time ;
FFontName:='Times New Roman';
end;

procedure TPaintClock.Free;
begin
StrFormat
.Free;
Brush.Free;
g.Free;
if 
assigned( FontFamily)then
FontFamily
.Free;
if 
assigned( Font)then
Font
.Free;
end;

procedure TPaintClock.Paint;
begin
 Paint
(FHDC);
end;

procedure TPaintClock.Paint(DC: HDC);
begin                        //Times New Roman

  
FontFamily := TGPFontFamily.Create(FontName);
  
Font := TGPFont.Create(FontFamily, 24, FontStyleRegular, UnitPixel);
  
Brush.SetLinearColors(FBackGroundGradientStart,FBackGroundGradientEnd);
  
g:=g.FromHDC(DC);
  
g.FillRectangle(Brush, R.X, R.Y, R.Width,R.Height);
  
Brush.SetLinearColors(FTextGradientStart,FTextGradientEnd);
  
StrFormat.SetFormatFlags(StringFormatFlagsNoWrap);
  
StrFormat.SetAlignment(StringAlignmentCenter) ;
  
g.DrawString(FormatDateTime('tt',FTime),-1,Font,  R, StrFormat,Brush);
  
StrFormat.SetAlignment(StringAlignmentNear) ;
  
FontFamily.Free;
  
Font.Free;
  
FontFamily := TGPFontFamily.Create(FontName);
  
Font := TGPFont.Create(FontFamily, 14, FontStyleRegular, UnitPixel);
  
R.X:=R.X + 10.0;
  
StrFormat.SetLineAlignment(StringAlignmentNear)   ;
  
g.DrawString(FormatDateTime('d',FTime),-1,Font,  R, StrFormat,Brush);
  
StrFormat.SetLineAlignment(StringAlignmentFar)   ;
  
g.DrawString(FormatDateTime('mmm',FTime),-1,Font,  R, StrFormat,Brush);
  
R.X:=R.X - 20.0;
  
StrFormat.SetFormatFlags(StringFormatFlagsDirectionRightToLeft);
  
StrFormat.SetLineAlignment(StringAlignmentFar);
  
g.DrawString(FormatDateTime('ddd',FTime),-1,Font,  R, StrFormat,Brush);
  
StrFormat.SetLineAlignment(StringAlignmentNear);
  if 
ISPM(Time) then
  g
.DrawString('PM' ,-1,Font,  R, StrFormat,Brush)else
  
g.DrawString('UP' ,-1,Font,  R, StrFormat,Brush) ;

end;

procedure TPaintClock.SetSize(X,Y,Width, Height: integer);
begin
R
.X:=X;
R.Y:=Y;
R.Width:=Width;
R.Height:= Height;

 
Brush.Free;
 
Brush:=TGPLinearGradientBrush.Create(R, MakeColor(0,199,5),
       
MakeColor(33,79,15), LinearGradientModeVertical);

end; 
الاستخدام :
PHP كود :
var p:TPaintClock ;
begin
p
:=TPaintClock.Create(Canvas.Handle);
p.BackGroundGradientStart:=aclWhite;
p.BackGroundGradientEnd:=aclBlack;
p.TextGradientStart:=aclOrange;
p.TextGradientEnd:=aclOrangeRed;
p.SetSize(50,50,200,30);
p.Time:=Time;
p.FontName:='Times New Roman';
p.Paint;
p.Free;
end; 
لا رسم ولا هم يحزنون
وجدت الحل وانتهى الأمر
السلام عليكم

لماذا لا تضع الحل ليستفيد غيرك ؟
[color="seagreen"] سأضعه عندما يكون جاهزا كاملا إن شاء الله
لا أقصد الاستهانة بأي أحد ، وآسف لسوء الفهم
ولكن لم أجد جوابا شافيا للفكرة التي في ذهني[/color]
الصفحات : 1 2