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

نسخة كاملة : برنامج مواقيت الصلاة لكل ولايات الوطن ( للجزائر فقط )
أنت حالياً تتصفح نسخة خفيفة من المنتدى . مشاهدة نسخة كاملة مع جميع الأشكال الجمالية .
الصفحات : 1 2 3 4 5 6
اجل عندي برنامج خاص بي خفيف وجميل



[صورة: fvR4Q.jpg]
جزاك الله خيرا
الله الله الله يفرحكم
عند تفعيل TabColorControlStyle; يصبح الشكل هكذا

[صورة: c2q9.png]
وفي الحالة العادية
[صورة: hcg0.png]
لقد تم اضافة اختيار الولاية
PHP كود :
Form9.Top:=Form1.Top;
Form9.Left:= Form1.Left + Form1.Width + 3;
Form9.Height:=Form1.Height;
Form9.Show ; 
الكود سورس كامل بأول مشاركة
[صورة: urwr.png]
تم اضافة
اخذ الارتفاع بعين الاعتبار ( طريقة جديدة في الحساب)
PHP كود :
function CalcPray(Lon, Lat, Zone,_Elevation:Real; PrayDate:TDateTime;  CalcWay, AsrType:Byte;_StatusElevation:Boolean=False): stTimes; 
PHP كود :
function riseSetAngle(elv:Real): real;
    var 
angle  :Real;
    
begin
    angle 
:= 0.0347 * sqrt((elv));
        
Result := (0.833+ angle);
   
end; 
PHP كود :
if _StatusElevation then       //  DurinalArc := myArcCos((-mySin(riseSetAngle(139.1433868408203))
  
DurinalArc := myArcCos((-mySin(riseSetAngle(_Elevation))- mySin(Dec)*mySin(Lat))/(myCos(Dec)*myCos(Lat)))
   else
  
DurinalArc := myArcCos((mySin(-0.8333)- mySin(Dec)*mySin(Lat))/(myCos(Dec)*myCos(Lat))); 
تم اضافة
PHP كود :
property ResultElevation          : Double read felevation;
    
property ResultTimeZone         : Double read fTimeZone 
وذلك لحساب المنطقة الزمنية والارتفاع اعدت كتابة unit UWebGMapsMarkers;
بارك الله فيك اخي onexite على البرنامج الرائع
جعله الله في ميزان حسناتك
مواضيعك كلها قيمة ما شاء الله
جاري مطالعة الكود سورس و المتابعة
طريقة جديدة للتنبيه
http://dn.bergsoft.net/nxalertwindow-tutorial.htm
وقمت باعادة برمجة وحدة الحساب
PHP كود :
unit unit2;

interface

uses
  SysUtils
,System.Math;

type
stTimes
=Array[0..5] of TDateTime;
//********************
  
PTime = record
  Time
:TDateTime;
  
SstringTime: string;
  
Position: Byte ;
  
name:string;
  
end;
  
//********************
 
Tyear = record
  Year
: integer;
  
Month: Byte;
  
Day: Byte;
end;
 
PrayTime = record
 Fajr
, Sunrise, Dhuhr, Asr, Maghrib, Isha, Sunset,Midnight, Imsak :TDateTime;
end;
//********************// Functions //********************
function getQibla (latitude,longitude:Extended):Extended;
function 
CalcPray(Lon, Lat, Zone,_Elevation:Real; PrayDate:TDateTime; CalcWay:Byte;school,view:string;_StatusElevation:Boolean=False): PrayTime;
function 
GregorianToHijri(Ggr: Tyear): Tyear;
implementation

procedure modulo
(var deg: Extended;const base:integer );
begin
if deg > 0 then deg:= deg - base * trunc(deg / base) else deg:= deg - base*(trunc(deg/base)-1);
end;
{-------------------------------------------------------------------------------}
   function 
getQibla (latitude,longitude:Extended):Extended;
   const 
K_latitude  = 21.423333; K_longitude = 39.823333;
    
begin
        Result 
:= RadToDeg( ArcTan(sin(DegToRad(K_longitude - longitude)) /((cos(DegToRad(latitude)) * tan(DegToRad(K_latitude))) -(sin(DegToRad(latitude))* cos(DegToRad(K_longitude - longitude))))) );
        if (
latitude > 21.423333) then
        Result 
:=Result+ 180;
    
end;
//==========================================================================
function DateToJulianDay(_date:TDateTime; After:Boolean = true): Extended ;
var
 
b: integer;
 
y,m,d: word;
begin
  DecodeDate
(_date,y,m,d);
  if 
m <= 2 then begin y:= y-1; m:= m + 12; end;
  
b:=0;
  if 
After then
  begin  b
:= 2- (trunc(y/100)) + trunc((trunc(y/100))/4); end;
  
result:= trunc(365.25 * (y+ 4716)) + trunc (30.6001 * (m +1)) + d + b - 1524.5;
end;

function 
JDToHijir(JD: extended): Tyear;
var
  
L,N,J:integer;
begin
  L 
:= Trunc(JD) - 1948440 + 10632;
  
N := Trunc((L - 1) / 10631);
  
L := L - 10631 * N + 354;
  
J := Trunc((10985 - L) / 5316) * Trunc((50 * L) / 17719)
      + 
Trunc(L / 5670) * Trunc((43 * L) / 15238);
  
L := L - Trunc((30 - J) / 15) * Trunc((17719 * J) / 50)
      - 
Trunc(J / 16) * Trunc((15238 * J) / 43) + 29;
  
result.Month := Trunc((24 * L) / 709);
  
Result.Day := L - Trunc((709 * result.Month) / 24);
  
Result.Year := Trunc(30 * N + J - 30);
end;
function 
GregorianToHijri(Ggr: Tyear): Tyear;
begin
  Result
:= JDToHijir(DateToJulianDay(EncodeDate(Ggr.year,Ggr.Month,Ggr.Day)));
end;
//==========================================================================

function CalcPray(Lon, Lat, Zone,_Elevation:Real; PrayDate:TDateTime; CalcWay:Byte;school,view:string;_StatusElevation:Boolean=False): PrayTime;
   var 
month, day, year:Word;
      
a,b,jd,d,g,q,l,r,ra,e,eqt,alpha,n,_d,
      
MaghribSunni,MaghribShia,MidnightSunni,MidnightShia:Extended;
  
CalcWayFajr, CalcWayIsha: Real;

Begin
//0 Univ. Of Islamic Scinces, Karachi
//1 Islamic Society Of North America
//2 Muslim World League
//3 Umm Al-Qura University
//4 Egytion General Authority of Survey
CalcWayFajr:=-19.5;
CalcWayIsha:=-17.5;

 Case 
CalcWay Of
     0
: Begin CalcWayFajr:=-18; CalcWayIsha:=-18 End;
     
1: Begin CalcWayFajr:=-15; CalcWayIsha:=-15 End;
     
2: Begin CalcWayFajr:=-18; CalcWayIsha:=-17 End;
     
3: Begin CalcWayFajr:=-19; CalcWayIsha:=-18 End;
     
4: Begin CalcWayFajr:=-19.5; CalcWayIsha:=-17.5 End;
 
End;

  
DecodeDate(PrayDate, Year, Month, Day);
        if (
month <= 2) then begin
            year  
:= year - 1;
            
month := month + 12;
        
end else begin
            year  
:= year;
            
month := month;
        
end ;

        
A := trunc(year / 100);
        
B := 2 - A + trunc(A / 4);
        
jd := trunc(365.25 * (year + 4716)) + trunc(30.6001 * (month + 1))+ day + B - 1524.5;
        
d := jd - 2451545.0;  // jd is the given Julian date
        
g := 357.529 + 0.98560028 * d;
        
modulo(g,360);
        
q := 280.459 + 0.98564736 * d;
        
modulo(q,360);
        
L := q + 1.915 * sin(DegToRad(g)) + 0.020 * sin(DegToRad(2 * g));
        
modulo(l,360);
        
R := 1.00014 - 0.01671 * cos(DegToRad(g)) - 0.00014 * cos(DegToRad(2 * g));
        
e := 23.439 - 0.00000036 * d;
        
RA := RadToDeg(ArcTan2(cos(DegToRad(e))* sin(DegToRad(L)), cos(DegToRad(L))))/ 15;
        if (
RA < 0) then
            RA 
:= 24 + RA;

        
_d := RadToDeg(ArcSin(sin(DegToRad(e))* sin(DegToRad(L))));

        
EqT := (q/15) - RA;  // equation of time

        
Result.Dhuhr := 12 + zone - (lon/15) - EqT;

        
alpha := 0.833 + 0.0347 * sqrt(_elevation);
        
n := -1 * sin(DegToRad(alpha)) - sin(DegToRad(lat)) * sin(DegToRad(_d));
        
d := cos(DegToRad(lat)) * cos(DegToRad(_d));

        
Result.Sunrise := Result.Dhuhr - (1/15) * RadToDeg(ArcCos(n / d));
        
Result.Sunset  := Result.Dhuhr + (1/15) * RadToDeg(ArcCos(n / d));

        
n     := -1 * sin(DegToRad(abs(CalcWayfajr))) - sin(DegToRad(lat))
                * 
sin(DegToRad(_d));
        
Result.Fajr  := Result.Dhuhr - (1/15) * RadToDeg(ArcCos(n / d));
        
Result.Imsak := Result.Fajr - (10/60);

        
n    := -1 * sin(DegToRad(abs(CalcWayIsha))) - sin(DegToRad(lat))
                * 
sin(DegToRad(_d));
        
Result.Isha := Result.Dhuhr + (1/15) * RadToDeg(ArcCos(n / d));

        if (
school = 'Shafi') then
            n 
:= sin(ArcTan(1/(1 + tan(DegToRad(lat - _d))))) - sin(DegToRad(lat)) * sin(DegToRad(_d))
         else

        
n := sin(ArcTan(1/(2 + tan(DegToRad(lat - _d)))))- sin(DegToRad(lat)) * sin(DegToRad(_d));
        
Result.Asr := Result.Dhuhr + (1/15) * RadToDeg(ArcCos(n / d));

        
MaghribSunni := Result.Sunset + 2/60;

        
n := -1 * sin(DegToRad(4)) - sin(DegToRad(lat)) * sin(DegToRad(_d));
        
MaghribShia := Result.Dhuhr + (1/15) * RadToDeg(ArcCos(n / d));

        if (
view = 'Sunni') then
            Result
.Maghrib := MaghribSunni
         
else
            
Result.Maghrib := MaghribShia;

        
MidnightSunni := Result.Sunset + 0.5 * (Result.Sunrise - Result.Sunset);
        if (
MidnightSunni > 12) then
            MidnightSunni 
:= MidnightSunni - 12;

        
MidnightShia := 0.5 * (Result.Fajr - Result.Sunset);
        if (
MidnightShia > 12) then
            MidnightShia 
:= MidnightShia - 12;
        if (
view = 'Sunni') then
            Result
.Midnight := MidnightSunni
         
else
        
Result.Midnight := MidnightShia;
        
//********************************************
        
Result.Fajr:=(Frac(Result.Fajr/24));
        
Result.Sunrise:=(Frac(Result.Sunrise/24));
        
Result.Dhuhr:=(Frac(Result.Dhuhr/24));
        
Result.Asr:=(Frac(Result.Asr/24)) ;
        
Result.Maghrib:=(Frac(Result.Maghrib/24));
        
Result.Isha:=(Frac(Result.Isha/24)) ;
        
Result.Sunset:=(Frac(Result.Sunset/24) ) ;
        
Result.Midnight:=(Frac(Result.Midnight/24));
        
Result.Imsak:=(Frac(Result.Imsak/24));
        
//********************************************
End;

End. 
طريقة الحساب اعدت كتابتها من الصفر ولا تخص برنامج الا صلاتي كبقية البرامج
سيكون اخر تحديث للبرنامج الا اذا ضهرت اخطاء برمجية في طريقة الحساب او رسائل خطأ !!

[صورة: kdve.png]

المصادر
PHP كود :
http://www.ar-php.org 
التنزيل
PHP كود :
http://www.mediafire.com/download/ebnazeheddjcekz/Project_bin_src_final.zip 
[صورة: uwxj.png]
النسخة الجديدة تم اضافة الكثير من التعديلات
[صورة: yKKXEx.png]
الصفحات : 1 2 3 4 5 6