برنامج مواقيت الصلاة لكل ولايات الوطن ( للجزائر فقط )
#51
في القريب النسخة 5 Big Grin
تم اضافة اقرب المساجد
[صورة: VdFNqQI.jpg]
الخريطة
[صورة: gqCtezd.png]
الرد
#52
[indent]

زادك الله من واسع فضله ، و حفظك من كل سوء ومكروه.
[/indent]
اللهم اجعلني من أهل القرآن ، الذين هم أهلك و خاصتك.
تذكر بأن الوقت الذي تلهو فيه ، غيرك يبني مجده فيه.
الرد
#53
الملف التنفيذي تجدونه في اول مشاركة
الطريقة المتبعة لايجاد اقرب مسجد
  • استدعاء الخريطة من الرسورس ( في المرفقات )
  • البحث عن المساجد في مجال منطقتك
  • حفظ النتيجة في input مخفي بعد معالجة البيانات و النتيجة النهائية من شكل json

PHP كود :
unit UnitMosque;

interface

uses
  Winapi
.WindowsWinapi.MessagesSystem.SysUtilsSystem.VariantsSystem.ClassesVcl.Graphics,
  
Vcl.ControlsVcl.FormsVcl.DialogsVcl.OleCtrlsSHDocVwVcl.ComCtrls,
  
sPageControlsListView,var_and_const,ActiveX,MSHTML,Vcl.SuperObject,
  
sStatusBar,unit1 ;

type
  TForm17 
= class(TForm)
    
sPageControl1TsPageControl;
    
sTabSheet1TsTabSheet;
    
sTabSheet2TsTabSheet;
    
WebBrowser1TWebBrowser;
    
sListView1TsListView;
    
sStatusBar1TsStatusBar;
    
procedure FormCreate(SenderTObject);
    
procedure sTabSheet2Show(SenderTObject);
    
procedure FormClose(SenderTObject; var ActionTCloseAction);
    
procedure WebBrowser1DownloadComplete(SenderTObject);
  private
    { Private 
declarations }
  public
    { Public 
declarations }
  
end;

var
  
Form17TForm17;

implementation
   procedure WBLoadHTML
(WebBrowserTWebBrowserHTMLCodestring) ;
var
   
slTStringList;
   
msTMemoryStream;
begin
   WebBrowser
.Navigate('about:blank') ;
   while 
WebBrowser.ReadyState <READYSTATE_INTERACTIVE do Application.ProcessMessages;

   if 
Assigned(WebBrowser.Documentthen
   begin
     sl 
:= TStringList.Create;
     try
       
ms := TMemoryStream.Create;
       try
         
sl.Text := HTMLCode;
         
sl.SaveToStream(ms) ;
         
ms.Seek(00) ;
         (
WebBrowser.Document as IPersistStreamInit).Load(TStreamAdapter.Create(ms)) ;
       finally
         
ms.Free;
       
end;
     finally
       
sl.Free;
     
end;
   
end;
end;
{
$R *.dfm}

procedure TForm17.FormClose(SenderTObject; var ActionTCloseAction);
begin
Action
:=caFree ;
WFreeMemory;
end;

procedure TForm17.FormCreate(SenderTObject);
var
MyStream:TResourceStream;
str:TStringList;
sHTML:string;
begin

str
:=TStringList.Create;
MyStream:= TResourceStream.Create(hinstance'MAP'RT_RCDATA);

try
str.LoadFromStream(MyStream);
sHTML := str.Text;
finally
 
MyStream.Free;
 
str.Free;
end;


  
sHTML:=StringReplace(sHTML,'[Lat]',StringReplace(FloatToStr(latitude),',','.',[rfReplaceAll]),[rfReplaceAll]) ;
  
sHTML:=StringReplace(sHTML,'[Lng]',StringReplace(FloatToStr(longitude),',','.',[rfReplaceAll]),[rfReplaceAll]) ;
  
WBLoadHTML(WebBrowser1,sHTML) ;
end;

procedure TForm17.sTabSheet2Show(SenderTObject);
var
  
ADocument IHTMLDocument2;
  
ABody     IHTMLElement2;
  
json string;
  
i,countWord;
  
SuperISuperObject;

      function 
GetIdValue(const Id string):string;
      var
        
Tag      IHTMLElement;
        
TagsList IHTMLElementCollection;
        
Index    Integer;
      
begin
        Result
:='';
        
TagsList := ABody.getElementsByTagName('input');
        for 
Index := 0 to TagsList.length-do
        
begin
          Tag
:=TagsList.item(IndexEmptyParam) As IHTMLElement;
          if 
CompareText(Tag.id,Id)=0 then
            Result 
:= Tag.getAttribute('value'0);
        
end;
      
end;

begin
  ADocument 
:= WebBrowser1.Document as IHTMLDocument2;
  if 
not Assigned(ADocumentthen
    
Exit;
  if 
not Supports(ADocument.bodyIHTMLElement2ABodythen
    
exit;

 
json :=GetIdValue('side_bar');
 if 
Length(json)=0 then Exit;
 
Super := SO(json);
 if 
Super nil then Exit;
 
sListView1.Clear;
 try

      if 
Assigned(Super['places'].AsArraythen
      Count 
:=Super['places'].AsArray.Length;

     for 
:= 0 to Count do
          
with sListView1.Items.Add do
          
begin
            Caption 
:=IntToStr(i+1);
            
subitems.Add(Super['places[' inttostr(i) + '].name'].AsString);
            
subitems.Add(Super['places[' inttostr(i) + '].distance'].AsString);
            
subitems.Add(Super['places[' inttostr(i) + '].vicinity'].AsString);
            
ImageIndex:=12;
          
end;
          
except  on e:exception do
           
sstatusbar1.Panels[0].Text:='حدث خطأ '+e.Message;
          
end;
      if 
slistview1.Items.Count>0 then
      sstatusbar1
.Panels[0].Text:='اقرب مسجد : ' slistview1.Items[0].SubItems[0] +' عن بعد : '  +slistview1.Items[0].SubItems[1]+ ' متر'
end;

procedure TForm17.WebBrowser1DownloadComplete(SenderTObject);
begin
//sTabSheet2.TabVisible:=True;
end;

end


الملفات المرفقة
.rar   map.rar (الحجم : 1.52 ك ب / التحميلات : 36)
الرد
#54
السلام عليكم
ما هي نسحة الدلفي المستعملة في السورس
لأني أجد صعوبة في قراءة السورس كاملا
جزاكم الله خيرا
الرد


التنقل السريع :


يقوم بقرائة الموضوع: بالاضافة الى ( 1 ) ضيف كريم