• الإعلانات

    • فيصل الحربي

      تسجيل عضوية جديدة في المنتدى   01/31/2016

      السلام عليكم ورحمة الله وبركاته  عزيزي العضو الجديد :  حاليا رسالة الإيميل لتأكيد صحة إيميلكم تذهب للبريد العشوائي ( جاري حل المشكلة )  فإذا لم تجد رسالة التحقق من إيميلكم في صندوق الوارد لديكم إتجه للبريد العشوائي ( JUNK)  وقم بتفعيل إشتراككم من هناك   

زكيري عبد العالي

المشرفون
  • عدد المشاركات

    2,455
  • تاريخ الانضمام

  • تاريخ اخر زياره

كل شيء نشر بواسطة زكيري عبد العالي

  1. صنع موقع ويب بالدلفي DataSnap/REST HTML5/jQuery

     
  2. صنع موقع ويب بالدلفي DataSnap/REST HTML5/jQuery

    السلام عليكم  لقد كتبت في السابق دروسا حول كيفية صنع مواقع الويب بالدلفي ولحد الان كانت هده الطرق غير كافيه لعمل موقع ينافس .net اة jsp  مع انه يوجد ادوت تسمح بتشغيل تطبيقاتك على سطح المكتب و احسنها هي http://www.unigui.com  مثال https://www.youtube.com/watch?v=oMAoauGHh28 لكن مع ضهور html 5 css3 بالاضافة الى التطور الكبير على الجافا سكريبت و التحسينات على Datasnap  اضن انه حان الوقت لانتقال الى برمجة الويب بالدلفي و ساشرح لكم كيف مواضيع سابقة • CGI•ISAPI • تصميم مواق الواب بالتفنية الجديدة netObjet COM ASP• مقدمة في IntraWeb• لغة Delphi.net_Asp.netWeb Services • هناك موضوع سابق تحدث فيه اخي على نجد فيه الشرح لبعض الامور   • التطبيقات المتعددة الطبقات datasnap الطريقة 3 نبدا ان شاء الله  الطريقة التي ساطرحها هي معتمدة اساسا على ثلاثة طبقات حيث جيث نجد المودل و كنترولر في جزء من المشروع نسميه ب API او Backend و الجزء الثاني نجد فيه طبقة العرض View و نسميها UI او Frontend. ادا نجد في مشروعينا تطبيقين  - تطبيق DataSnap/REST ISAPI - تطبيق Html5/Js 1- DataSnap/REST ISAPI في هدا الدرس سنقوم بانشاء تطبيق بسيط و بتعقد تدريجيا مع متطلبات المشروع سبدا إن شاء الله بعمل ويب متود تعرض لنا كلمة  Hello World بعدها نتحصل على ما في الصورة التالية لا يهمنا ما يوجد في كل من imag/css/js/.. المهم هو الوحدة ServerMethodsUnit1 حيث نقوم باستبدال الكود بوضيفة واحدة هي  unit ServerMethodsUnit1; interface uses System.SysUtils, System.Classes, Datasnap.DSServer, Datasnap.DSAuth; type {$METHODINFO ON} TServerMethods1 = class(TComponent) private { Private declarations } public { Public declarations } function HelloWorld(): string; end; {$METHODINFO OFF} implementation function TServerMethods1.HelloWorld(): string; begin Result := 'Hello World'; end; end. بعد عمليه COMPILE نتحصل على ملف Delphi.dll لقد انهينا التطبيق الدي سيشتغلى على السرفر و لتجربته يجب علينا اضافته الى IIS ادا السؤال كيف يتم اصدار DataSnap الى IIS  الجواب : 1- نقوم بانشاء تطبيق IIS   2- نقوم بتغير Pool كي يقوم بتشغيل win32 3- نقوم باضافة ملف Delphi.dell الناتج عن مشروعنا الى قاءمة ISAPI بالطريقة التالية  4- نقوم بتفعيل ISAPI  5- نضيف delphi.dll الى قاءمة default للموقع 6- نقوم بكتابه  عنوان الابي على الهوست فايل  النتيجه : عند كتابة http://delphi_backend.net على النتصفح نلاحض  Server Functions عند النقر عليها ثم على  TServerMethods1  سنجد الوضيفه التي كتبناها و عند تنفيد الامر نتحصل على كلمة  Hello World على شكل JSON  لاحض الصورة  ارجو من الله اني وفقت في شرح الخطوة االولى ان لم يكن هناك اسالة ساباشر في الخطة التالية  شكرا     
  3. صنع موقع ويب بالدلفي DataSnap/REST HTML5/jQuery

     
  4. دروس متقدمة في البرمجة

    السلام عليكم لقد قمت باسترجاع بعض الدروس التي كتبتها هنا و جلها قد اتلف عن ما كان المنتدى موقف و نقلتها الى صفحى  https://www.facebook.com/softwebnet/ ارجوا المشاركة 
  5. انا اعمل على c# منذوا اكثر من 5 سنوات االاسهل في هذا المشروع البسيط هو الدلفي زهذا مجرد راي الخاص  المهم هو انشاء المشروع و لا يهم اللغه المستعمل  شكرا 
  6. برنامج حساب الغاز والكهربة

    شكرا اخي الكريم
  7. صنع موقع ويب بالدلفي DataSnap/REST HTML5/jQuery

    السلام عليكم  بارك الله فيك اخي احمد  من هنا من ارى استاذي الكريم ORWA الحمد لله على سلامتك و ارجو من الله ان يحفضكم كم اتمنى ان يعود كل المشريفين القداما اخي عبد العزيز و محمد نسمان و الاخ Sum و الشقروني  كل من تعلمت على يديه و كم اتمني رجوع الخبراء على علوي و طلال بلال و احمد ز غيره المتدى بحاجة الينا كلنا .   
  8. صنع موقع ويب بالدلفي DataSnap/REST HTML5/jQuery

    لقد قمت ببعض التغيرات البسيطه لعمل الاضافة تجدونها في المرفق  و الان قد انتهينا من المشروع اتمنى اني وفقت في الشرح و السلام عليكم      MyWebApp.zip
  9. صنع موقع ويب بالدلفي DataSnap/REST HTML5/jQuery

    السلام علكم مع انه لا ارى اي رد الا اني ساتابع ان شاء الله يتقبل مني  سنتابع مع المثال السابق لكن الان يجب ملأ القاءمة من سجلات قاعدة البيانات  function FillUserList(): TList<TUser>; var mUser : TUser; var COMPANYSqlProc : TADOStoredProc; begin Result:= TList<TUser>.Create; COMPANYSqlProc := TDatabaseAccess.ExecProc('sp_Users'); COMPANYSqlProc.Open; while not COMPANYSqlProc.EOF do begin mUser := TUser.Create; mUser.mId:= COMPANYSqlProc.FieldByName('Id').AsInteger; mUser.mLogin:= COMPANYSqlProc.FieldByName('Login').AsString; mUser.mFirstName:=COMPANYSqlProc.FieldByName('FirstName').AsString; mUser.mLastName:=COMPANYSqlProc.FieldByName('LastName').AsString; Result.Add(mUser); COMPANYSqlProc.Next; end; COMPANYSqlProc.Close; end; لقد قمت يتعيير في كود الوضيفة FillUserList حيث اننا انشانا القاءمة فارغة ثم انشاءنا COMPANYSqlProc و الذي سيرجع لنا كل السجلات التي تحصلنا عليها من طلب الوضيف المخزنه sp_Users فكود هذه الوضيف create Procedure [dbo].[sp_Users] As Begin SELECT * FROM [DbUser] End بعدها عملت حلقه تكرارية لكل السجلات و في كل سجل انشاء ابجكت هو TUser و بعد ملاءه نضيفه الى القاءمة  لاننا غلق الاتصال بالقاعدة و اضافة الوحدة Data.DB, Data.Win.ADODB 2- كما تلاحضون اننا نفذنا Proc عن طريق TDatabaseAccess.ExecProc' حيث انها وضيفة من نوع Static و هي معرفة في الوحدة الجديدة التي اضفتها في المجلد الجديد Database class function TDatabaseAccess.ExecProc(name : string) : TADOStoredProc; var SqlProc : TADOStoredProc; begin try SqlProc := TADOStoredProc.Create(nil); SqlProc.ConnectionString := 'Provider=SQLNCLI11.1;Persist Security Info=False;User ID=sa;Password=***;Initial Catalog=*****;Data Source=**********;Initial File Name="";Server SPN=""'; SqlProc.ProcedureName := name; SqlProc.ExecProc(); Result := SqlProc; Except On e: Exception do SqlProc.Close; end; end;    
  10. صنع موقع ويب بالدلفي DataSnap/REST HTML5/jQuery

    السورس كود  MyWebApp_POST.zip
  11. صنع موقع ويب بالدلفي DataSnap/REST HTML5/jQuery

    السلام عليكم  نلاحض ان في القائمة السابقة 3 اشخاص الهدف من المثال التالي هو اضافة شخص جديد للقاءمة و ذللك من خلال الكلاس TUser نقوم باضافه وضيفة جديدة في API و لتكن SetUser  مع اداخل TUser و استرجاع القاءمة السابقة بالاضافة الاى هذا الاخير  function TProjectController.SetUser(user : TUser): TList<TUser>; var users: TList<TUser>; begin users:= FillUserList(); users.Add(user); Result:=users; end; الوضفة FillUserList هي من ترجع لنا القاءمة السابقة  ثم نضيف المستعمل الذي مررناه في param الى هذه القاءمة و نرجعها عن طريق Result  function FillUserList(): TList<TUser>; var mUser : TUser; begin Result:= TList<TUser>.Create; mUser := TUser.Create; mUser.mId:=1; mUser.mLogin:='zekiriAbd'; mUser.mFirstName:='Zekiri'; mUser.mLastName:='Abdelali'; Result.Add(mUser); mUser := TUser.Create; mUser.mId:=2; mUser.mLogin:='MohamedNA'; mUser.mFirstName:='Mohamed'; mUser.mLastName:='Nassman'; Result.Add(mUser); mUser := TUser.Create; mUser.mId:=3; mUser.mLogin:='AliW'; mUser.mFirstName:='Ali'; mUser.mLastName:='AlWi'; Result.Add(mUser); end; function TProjectController.GetUserList(): TList<TUser>; var mUser : TUser; begin Result:= FillUserList(); end; كما تلاحضون غير بعض الامور  انتهينا من API نعمل كومبيل  الان على مستوى html js نضيف  الوضيفة SetUser الى COMMN .JS  function SetUser(user,fnOnComplete) { $.ajax($fronted.SERVICE.add_user_url, { method: 'POST', xhrFields: { withCredentials: false }, data: JSON.stringify(user)}) .success(function (data) { var _data = JSON.parse(data); $fronted.Users = _data.result[0].fields.FItems; if (fnOnComplete) { fnOnComplete(); } }) .fail(function (xhr, textStatus, errorThrown) { }); } كما تلاحضون اني استعملت POST و ارسلت user الجديد في param الوضيفة ثم ارسلته الى api عن طرق الخاصية data التابعة لajax  نخزن النتيجة في fronted.Users  $fronted.SERVICE = { user_list_url : $fronted.host + "GetUserList", add_user_url : $fronted.host + "SetUser", }; كما تلاحضون اني اضفت url للمتود الجديد  الان نغيير في الواجهة فنضيف في ملف index.html  <div> Id: <input id="tx_Id" type="text" ><br> Login: <input id="tx_Login" type="text" ><br> First name: <input id="tx_FirstName" type="text" ><br> Last name: <input id="tx_LastName" type="text" ><br> <input id="btn_add_user" type="button" value="Add User"><br> </div> $("#btn_add_user").click(function (e) { var _fields = { LastName:$("#tx_LastName").val(), Id:parseInt($("#tx_Id").val()), FirstName:$("#tx_FirstName").val(), Login:$("#tx_Login").val() } var new_user = {type:"User.TUser",id:1,fields:_fields}; SetUser(new_user ,function(){ DrawUserGrid() }); }); } الكود التالي معنا عند النقر على الزر add user سنقوم ب -1 حفض كل المعلومات الدخل عن طرق تكس بوكس في الابجكت _fields  2- صنع ابجكت يفهمه API و ضالك باضافة type:"User.TUser"  id:1 3- نقم بطلب الوضيفة SetUser ; حيث نمرر في param الاول هذا الابجكة الذي صنعناع  و البرامتر الثاني هي callback اى عند الانتهاء من طلب الويب متود الموجودة في API فقم ب صنع الجدول DrawUserGrid   ملاحضة هامة عند استعما POST لست ادري لماذا دلفي يبحث عن الوضيفة بتسميتها + update  لذلك قمت بتغيير الوضيفة على مستو API الى   TProjectController.updateSetUser(user : TUser): TList<TUser>;       demoUserEdit.avi
  12. صنع موقع ويب بالدلفي DataSnap/REST HTML5/jQuery

    5- ها انتهينا من المودل و الكنترولر و لم يبقي سوى الفيو View  اي القسم الخاص بالعرض و كبعا قنا هده الطبقة ستكون بHTML5 / jQuery / CSS3   1- قمت وضع ديف في الصفحة سمته  <div id="div_users"> هنا سنضع قاءمة المستعملين   2- غيرت url السابق الى  $fronted.host = "http://delphibackend.net//DelphiBackend.dll/datasnap/rest/TProjectController/"; $fronted.SERVICE = { user_list_url : $fronted.host + "GetUserList", }; 3- وكتبت في الميتود التي ستتخاطب مع API التالي  function GetUsers(fnOnComplete) { $.ajax($fronted.SERVICE.user_list_url, { method: 'GET', xhrFields: { withCredentials: false } }) .success(function (data) { var _data = JSON.parse(data); $fronted.Users = _data.result[0].fields.FItems; if (fnOnComplete) { fnOnComplete(); } }) .fail( function(xhr, textStatus, errorThrown) { }); }  اي بعدما استرجعت القاءمة و تحويلها الى json وضعتها في fronted.Users الابجكت  الان سنكتب الكود الذي سيرسم لنا الجدول حيث وضعته في ملف جديد Index.js void function index_function(undefined) { function InitAppWhenReady() { // call api GetUsers(function () { // Draw users grid var table = $("<table id='grid_users' cellpadding='0' cellspacing='0' class='display'></table>"); var thead = $("<thead><tr><th>ID</th><th>Login</th><th>Name</th></tr></thead>"); table.append(thead); var tbody = $("<tbody></tbody>"); var tr; $.each($fronted.Users, function (i, u) { if( u != null){ tr = $("<tr></tr>"); tr.append("<td>" + u.fields.Id + "</td><td>" + u.fields.Login + "</td><td>" + u.fields.FirstName + " " + u.fields.LastName + "</td>"); tbody.append(tr); } }); table.append(tbody); $("#div_users").empty(); $("#div_users").append(table); $("#grid_users").DataTable(); }); // end GetUsers } $(document).ready(function () { if (document.getElementById) { InitAppWhenReady(); } }); }.call(); اضن ان الكود سهل هو عبارة عن حلقة تكرارية لكل مستعمل في القاءة و وضعه في td  DataTable() هدا التعليمة تسمح تحويل الجدول العادي html الى  datagrid و دلك بواسطة jquery dataTables لذلك كتب في مقدمة الملف index.html    <!--jquery Lib--> <script type="text/javascript" src="js/lib/jquery/jquery-2.1.3.min.js"></script> <script type="text/javascript" src="js/lib/jquery/dataTables.js"></script> <link type="text/css" rel="Stylesheet" href="js/lib/jquery/dataTables.css" /> <script type="text/javascript" src="js/common.js"></script> <script type="text/javascript" src="js/index.js"></script> <link type="text/css" rel="Stylesheet" href="css/index.css" /> النتيجة هي  ها قد انتهينا من المرحة الاولى وهي عملة GET في الدرس القادم سنقوم بعملية POST و بعدها مباشرة سنقوم بمثال مع استعمال قاعدم بيانات . ارجوا ان الدرس مفهم و صحا فطوركم  MyWebApp2_Get_ListGenericofObject.zip
  13. صنع موقع ويب بالدلفي DataSnap/REST HTML5/jQuery

    السلام عليكم  لم اشهاد تجاوب مع هذا الموضوع ارجوا ان لا اياس و اكم الى النهايه  1- سنحاول الان عرض قاءمة في جدول كمثال قاءمة مستعملين اي الرقم الاسم اللقب ... و هي خصاءص لكلاس نسميها مثلا Tuser و هكذا تكون الوحدة User كمايلي  unit User; interface type {$METHODINFO ON} TUser = class private LastName: string; Id: integer; FirstName: string; Login: string; procedure SetFirstName(const Value: string); procedure SetId(const Value: integer); procedure SetLastName(const Value: string); procedure SetLogin(const Value: string); { Private declarations } public { Public declarations } Property mId: integer read Id write SetId; Property mLogin : string read Login write SetLogin; Property mFirstName : string read FirstName write SetFirstName; Property mLastName : string read LastName write SetLastName; end; {$METHODINFO OFF} implementation { TUser } procedure TUser.SetFirstName(const Value: string); begin FirstName := Value; end; procedure TUser.SetId(const Value: integer); begin Id := Value; end; procedure TUser.SetLastName(const Value: string); begin LastName := Value; end; procedure TUser.SetLogin(const Value: string); begin Login := Value; end; end. نقوم بحفض هدا الملف في مجلد نسميه Models و هكذا نجمع كل المودلات في هذا المجلد  2- اتذكرون الوحدة التي كتبنا فيها الويب متود  Hello و التي قام الدلفي بتسميها ServerMethodsUnit1  سننقلها الى مجلد جديد اسمه Controllers و نغير اسمها الى ProjectController  مثلا. هنا نقوم وضع جميع ويب متود الخاصة بالمشروع  في هذا المثال سنقوم بعمل متود تقوم بشحن قاءمة من المستعملي في list و ارجاعها كاملة  TProjectController = class(TComponent) private { Private declarations } public { Public declarations } function GetUserList(): TList<TUser>; end; {$METHODINFO OFF} implementation function TProjectController.GetUserList(): TList<TUser>; var mUser : TUser; begin Result:= TList<TUser>.Create; mUser := TUser.Create; mUser.mId:=1; mUser.mLogin:='zekiriAbd'; mUser.mFirstName:='Zekiri'; mUser.mLastName:='Abdelali'; Result.Add(mUser); mUser := TUser.Create; mUser.mId:=2; mUser.mLogin:='MohamedNA'; mUser.mFirstName:='Mohamed'; mUser.mLastName:='Nassman'; Result.Add(mUser); mUser := TUser.Create; mUser.mId:=3; mUser.mLogin:='AliW'; mUser.mFirstName:='Ali'; mUser.mLastName:='AlWi'; Result.Add(mUser); end; كما تلاحضون اني انشاءت 3 ابجكت من نوع TUser  وضعتهم في قاءمة مسترجعة عن منادات الميتود GetUserList. 3- انقل WebModuleUnit1 الى مجلد جديد نسميه مثلا Swagger 4- قمت بحدف كل المجلدات الاخرى img css ... لكن قبل الحذف احفضها في مكان ما على القرص و تاكد انها موجود نسخة منهم في المجلد \Debug لاننا نحتاجها في عرض و تجربت كل الويب متود الموجود . علما اني استعمل http://swagger.io/ في مشاريعي .net  ولست ادري ان كنا نستطيع استعمالها مع الدلفي سنرى ذلك لاحقا    لنتحصل على : بعد توقيف الPool و عمل كمبير للمشروع نقوم بعرض النتيجه على المتصفح 
  14. صنع موقع ويب بالدلفي DataSnap/REST HTML5/jQuery

    نقوم بطلب الموقع على المتصفح  http://delphifrontend.net/index.html النتبجه لاتعمل هناك رسالة خطأ نعم لانه يجب علينا ان نقول للجزء الاول datasnap و الذي ساسميه من الان API لسرعت الشرح نعم يجب علينا ان نقول ل API ان الموقع الدي سيطلب منك الخدمة هو delphifrontend. كما يمكن ان نقول ايضا انك ستخدم جميع المواضع التي تطلبك  يتم ذلك باضافة الكود التالي في الوحدة WebModuleUnit1 اي تغيير الوضيفة TWebModule1.WebModuleBeforeDispatch procedure TWebModule1.WebModuleBeforeDispatch(Sender: TObject; Request: TWebRequest; Response: TWebResponse; var Handled: Boolean); begin Response.SetCustomHeader('Access-Control-Allow-Origin', '*'); if Trim(Request.GetFieldByName('Access-Control-Request-Headers')) <> '' then begin Response.SetCustomHeader('Access-Control-Allow-Headers', Request.GetFieldByName('Access-Control-Request-Headers')); Handled := True; end; if FServerFunctionInvokerAction <> nil then FServerFunctionInvokerAction.Enabled := AllowServerFunctionInvoker; end; ملاحضة عند عمل كومبيل يجب توقيف POOL DelphiBackend ليتم انشاء Dll الجديد .   لقد قمت بوضع السورس كود مع بعض التغييرات + css + صورة  ان شاء الله ساكمل الدرس بعمل تمرير ابجكت او قاءمة ابجكت من Api الى الجافا سكربت ثم نقوم بعرض النتيجة في جدول html. ثم نحول الجدول الى Dbgrid الدي يقدمه Bootstrap و الذي يسما datatable شكرا  MyFirstWebApp.zip
  15. صنع موقع ويب بالدلفي DataSnap/REST HTML5/jQuery

    2- Html5 / Js في هذا الجزء سنقوم بعمل مشروع ويب بسيط يقوم باضهار رسالة Hello Word و التي يرسلها له الجزء الاول Datasnap ,و لتخاطب معه سنسعمل اوامر ajax عن طريق jquery فنبدا ان شاء الله  1- نضيف مشروع جديد نسميه DelphiFrontend حيث به - مجلد  سنضع كل ملفات الجافا سكربت هنا  - img للصور  - css للانماط  - ملف html نسميه Index.html  web config سيضاف اتوماتكيا عن التغير في IIS  لاحض الصورة  نكتب في ملف index.html الكود التلي  <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"> <html> <head> <title></title> <!--jquery Lib--> <script type="text/javascript" src="js/lib/jquery/jquery-2.1.3.min.js"></script> <script type="text/javascript" src="js/common.js"></script> </head> <body> </body> </html> ساضع في المجد LIB كل ما نجتاجه من js  و نكتب في common.js الكود التالي  $fronted = {}; $fronted.host = "http://delphibackend.net//DelphiBackend.dll/datasnap/rest/TServerMethods1/"; $fronted.SERVICE = { helloword_method_url : $fronted.host + "HelloWorld", }; /*====================================================================== Service Web Metod ======================================================================*/ function HelloWorld() { $.ajax($fronted.SERVICE.helloword_method_url, { method: 'GET', xhrFields: { withCredentials: false } }) .success(function (data) { alert(JSON.parse(data).result[0]); }) .fail( function(xhr, textStatus, errorThrown) { }); } HelloWorld() الشرح  انشات ابجكت fronted$ من نوع  globale  به الخاصية host التي نجد فيها مسار الوضيفة التي نريد طلبها  http://delphibackend.net/DelphiBackend.dll/datasnap/rest/TServerMethods1/HelloWorld لو كتبنا هدا على النتصفح لاعطان النتيجه التاليه  {"result":["Hello World"]} ادا URL لهذا العميل هو مركب من http://delphibackend.net/ و هو عنوان موقعنا الخاص بالجزء الاول  + الكلمة /datasnap/rest/  + اسم الوحدة التي كتبنا فيها مختلف الوضاءف TServerMethods1 + اسم الوضيفة  قمنا باستدعاء هذه الوضيفة عن طريق الاجكس و كما تلاحضون انها من نوع GET 2- الان سنضيف موقعنا على IIS  بمثل ما قمنا به في المرة الاولى لكن لا نغير ولا شيء في POOL نتحصل على  الان نتاكد من ان كلا الموقعين من نوع Authentication  Anonymous نضيف الموع على الهوست   
  16. صنع موقع ويب بالدلفي DataSnap/REST HTML5/jQuery

    اهلا اخي احمد  انا في الحقيقة متوقف عن الدلفي منذوا اكثر من 5 سنوات لان الدلفي كان ضعيفا في برمجه الويب عكس ما يطلبه عملي كنت مبرمج ASP.NET  و منذوا 3 سنوات استعمل نفس هذه الطريقة لكن بواسطة WEP API اي اتحصل في الطبقه الاولى على Dll وبعد اضافتها في IIS على مستوى السرفر نستعمل jquery او الجافا سكربت او حتي الفروم ورك  Angularjs  في التحكم في واجهة المستعمل اما عن المكونات فاني استعمل لحد الان كل من  bootstrap و للروسومات البيانية highcharts . اذا استطعنا عمل GET وPOST بتمرير ابجكت على مستوى Datasnap و الاتصال ب قاعد البيانات دزن مشاكل فقول على بركه الله دلفي اصبح ينافس JSP ASP في صنع المواقع 
  17. مشروع تسيير الصيداليات

    مشروع تسيير الصيداليات
  18. التطبيقات متعددة الطبقات N-tier طريقة Data Access --> Business --> PresentationI

    السلام عليكم  اخي طلال هاهي الرابط لكن الموضوع قديم و ربما هناك تحسينات اوطريقة جديد في الدلفي لعمل مشروع N-t انا اعمل حاليا على c# و HTML5 js  توقفت عن الدلفي منذو وقت 
  19. مقدمة : ان تسيير قاعدة البيانات باستخدام برمجة OOP يعد من ابرز الطرق التي اصبحت شائعة منذو فترة . فمبرمجين الجافا يستعملون هده الطريقة في محيط برمجه اسمه STRUTS والدي هو أكثر طلبا من معضم الزبائن حاليا مع أدوات HIBERNATE اما برمجي الدوت نت لهم أداة مشابهة أيضا والكل يصب في قالب واحد هو بما يسمي MVC2 او 3-TIER . لكن نحن مبرمجي الدلفي لم يسبق لنا ان شاهدنا مشاريع او دروس تتحدث عن هذه الطريقه و بهذا المفهوه حيث حينما نسمع البرمجة متعددت الطبقات نتصور مباشرةا انه مشروع client/server *-فماهي هده الطريقة *-ما فائدتها *- ومتى نستعملها *-كيف نستعملها في الدلفي و البريسم . تعريف : محمد شاآر محمود وهيب البياتي هي عبارة عن نموذج منطقي لهيكل تطبيقي ذو ثلاث طبقات منفصل البرمجة حيث تتخاطب هذه الاخيرة مع بعضها البعض الكل يشترك لانشاء مشروع واحد , تكون هده الطبقات مرتبة ومتسلسلة وهي 1 طبقة العرض وهذا هو المستوى الأعلى من التطبيق. طبقة العرض تعرض المعلومات المتعلقة بالخدمات مثل تصفح البضائع، وشراء، ومحتويات عربة التسوق. وتتصل بالطبقات الأخرى عن طريق إخراج النتائج إلى طبقة المتصفح / العميل وجميع الطبقات الأخرى في الشبكة. 2/ طبقة التطبيق (منطق الأعمال / طبقة المنطق) طبقة المنطق انسحبت من طبقة العرض، باعتبارها طبقة خاصة بها، وتتحكم بوظيفة التطبيق عن طريق أداء معالجة تفصيلية. 3/ طبقة البيانات هذه الطبقة تتكون من خوادم قاعدة البيانات. هنا يتم تخزين المعلومات واسترجاعها. هذه الطبقة تحتفظ بالبيانات محايدة ومستقلة من خوادم التطبيقات أو منطق الأعمال. إعطاء البيانات الطبقة الخاصة بها يسهم في تحسين الأداء وتطويره. ما فائدتها 1- فصل المعالجات على المعطيات 2-التقليل من حجم الملف التنفيدي للمشروع وبدالك السرعة في التنفيد 3-من 1 نتأكد من وجود السرية والامن في المعطياة 4-يمكن وضع كل قسم في سرفر منقصل وهدا يوقينا من تراكم المعطيات في جهاز واحد 5-الصيانة تكون سهلة , فمثلا عند تغيير قاعدة البيانات من اوراكل الى اسكل سرفر يتم التغيير الا على مستوى "طبقة البيانات" 6-السماح بدمج عدة لغات برمجة اي يمكن ان يكون في فريق البرمجة مبرمج دلفي فبي و سي شارب وبهدا الطبقات الثلاثة تكون بثلاث لغات 7-الطبقة الاولى يمكن ان تكون عبارة عن *- موقع واب *-برنامج winform *-برنامج على الموبايل ....... دون تغيير الطبقات الاخرى ومتى نستعملها نستعمل هذه الطريقة حينما يطلب منا تحقيق مشروع درسة بطريقة UML طريقة مريز لا نتفع هنا ابدا حمل هنا السورس كود 3-Tier.rar
  20. مشروع لصنع Keygen لبرنامج

    مشروع لصنع Keygen لبرنامج
  21. مشروع برنامج مكتبة المسجد (تسيير : كتب، أشرطة، أقراص مضغوطة،منخرطين،طباعة،استيراد إكسل)
  22. برنامج إدارة مقهى انترنت بسيط
  23. اسم البرنامج : مشروع من أول خطوة في قواعد البيانات - الوصف : مشروع جماعي مع الشرح المبسط لقاعدة بيانات تجارية (+UML) رابط المشروع : اضغط هنا - ملاحظات :
  24. مشروع محاسبة مقسم هاتف دلفي لاجهزة الخارخية التخاطب مع المنفد COM