• 0
merouane

الجديد في دلفي 2009 بالعربي و بعض الملاحظات

سؤال

السلام عليكم و رحمة الله تعالى و بركاته

أحببت أن أضع بين يدي أخواني و أخواتي أول مثال، المتبع من CodeGear بالعربي ..

- - - - - - - - - - - - - - - - - -

كثر القول أن Delphi 2009 يعتبر النقلة المهمة للـ VCL منذ دلفي 7، و أنه سيكون أكثر انتشارا في العالم لدعمه UNICODE (مع أننا لم نكن يوما ضمن المعادلة)

المهم .. ما أتحدث عنه هو هذا

post-113861-1216358279.png

post-113861-1216358322.png

post-113861-1216358331.png

post-113861-1216358338.png

post-113861-1216358346.png

لكن الفرق هو أنني سأحاول التركيز على العربية (يمكن القول أنه سوى ترجمة للتطبيق) و سأرى مستوى الدعم.

حسنا سأذكر المشاكل التي واجهتني و كيف حللتها إلا واحدة أو اثنين ..

ملاحظة قبل البداية : لرؤية كامل عمل التطبيق قمت بنتفيذه تحت نظام فيستا.

التنفيذ للتطبيق العربي

في XP

post-113861-1218131415_thumb.gif

في VISTA

post-113861-1218131428_thumb.gif

أولا قبل التنفيذ لاحظت أن النسخة Pre-Release تعتمد على FrameWork 1.1

post-113861-1218283500_thumb.gif

وبعد التبيت لاحظت أنه يعمل مع IDE Delphi2007

في الصورة لم أثبت C# و C++ لسرعة التثبيت و لعدم اهتمامي بهما الآن.

post-113861-1218131667_thumb.gif

قمت أولا بإعطاء الـ Form : BiDiMode = bdRightToLeft

العمل مع TCategoryPanelGroup:

المشكلة – أو بالأحرى النقائص – تمثلت في عدم إضافة الوحدات بعد Uses تلقائيا عند العمل مع مكون يستعمل خاصية تتدرج من وحدة مغايرة

مثل: CategoryPanelGroup مذكور في الوحدة ExtCtrls، أما الخاصية GradientDirection مذكرة في GraphUtil مما جعنلي أكتبها بعد uses ،

سنعود لمشكلة الوحدات ..

الامر الأخر هو عند محاولة تلوين CategoryPanel لم تعمل معي و يتلون فقط المكون CheckBox1، الكود الموضوع عند الضغط على جدول الألوان:

CategoryPanel3.Color := ColorGrid4.ForegroundColor;

ننتقل إلى الطرف المقابل:

TpageControl لا تدعم BiDiMode أي الصفحات لا تترتب من اليمين إلى اليسار مما يقودنا للتعامل مع مكونات أخرى تدعم العملية.

المتحكمات (مكونات) الجديدة في VCL:

TbuttonedEdit:

post-113861-1218131759_thumb.gif

post-113861-1218131776_thumb.gif

جميل

TlinkLabel:

post-113861-1218131837_thumb.gif

الكتابة في Caption

post-113861-1218131852_thumb.gif

حدث الضغط على الرابط

post-113861-1218131873_thumb.gif

TballoonHint:

post-113861-1218132005_thumb.gif

الأزرار:

هنا يوجد ملاحظة، مثلا عند الضغط على مجموعة "اتجاه الصورة" وضعت الكود:

procedure TForm1.RadioGroup5Click(Sender: Tobject);
begin
case RadioGroup5.ItemIndex of
0 : Button2.ImageAlignment := iaLeft;
1 : Button2.ImageAlignment := iaRight;
2 : Button2.ImageAlignment := iaBottom;
3 : Button2.ImageAlignment := iaTop;
4 : Button2.ImageAlignment := iaCenter;
end;
end;

لكنني عند التنفيذ فوجئت بخطأ مفاده أن

[DCC Error] Unit1.pas(262): E2010 Incompatible types: 'TImageAlignment' and 'TIconArrangement'

لدينا

وحدة ComCtrls

post-113861-1218132089_thumb.gif

وحدة StdCtrls

post-113861-1218132148_thumb.gif

لذلك قمت بالتالي:

post-113861-1218132178_thumb.gif

هنا شرح (قديم) بسيط لعملية مشابهة

http://www.delphi4arab.com/forum/showpost....mp;postcount=15

في XP

post-113861-1218132256_thumb.gif

في VISTA

post-113861-1218132276_thumb.gif

لاحظتم السهم الأخضر

أمر أخر عند العمل مع الزر الأخير مع الخاصية Style = bsSplitButton و ربطه مع PopupMenu لا تعمل الخاصية مما جعلني أظن أن التجميع (compilation)

ضمن XP و Vista يختلف، و أوليا أشعر كأني أريد البرمجة بين Windows و Linux بسورس واحد و مجمعين مختلفين

Tedit:

XP

post-113861-1218132363_thumb.gif

post-113861-1218132377_thumb.gif

Vista

post-113861-1218132402_thumb.gif

post-113861-1218132420_thumb.gif

الفرق في النص الباهت واضح

:TprogessBar

XP

post-113861-1218132499_thumb.gif

Vista

عادي

post-113861-1218132540_thumb.gif

توقيت مؤقت

post-113861-1218132576_thumb.gif

خطأ

post-113861-1218132593_thumb.gif

Marquee

post-113861-1218132616_thumb.gif

TlistView:

الحقيقة أنني لا أتعامل مع مثل هذه المكونات (TreeView) من بين الأسباب الصعوبة و تضييع الوقت في حال أردت ترجمتها (تحويلها) إلى العربية.

حتى إجراء المرآة أحيانا لا ينفع (أن هنا أتحدث عن العمل تحت نظام windows غير عربي)

التنفيذ ضمن XP و استعمال إجراء المرآة

post-113861-1218132743_thumb.gif

التنفيذ ضمن Vista و استعمال إجراء المرآة

post-113861-1218132767_thumb.gif

هناك مكونات أخرى مثل Ribon و الذي لا يمكن إضافة الزر Menu و Quick Acess ToolBar إلا بعد استعمال ActionManager

post-113861-1218132991_thumb.gif

سأتوقف هنا و خلاصتي سنقوم بالاحتياطات اللازمة عند البرمجة مع دلفي 2009، سنعمل دائما مع If WinXP then .. else if WinVista then أو استدعاء اجراءات خاصة بالـ Vista (ربما نراها لاحقا)

في الأخير هذه ملاحظاتي .. قد تكون ساذجة و معروفة للكثير لكن رأيت ان أشرح بلسان عربي مع تضمين رأيي كمستعمل عربي لمنتجات CodeGear.

هاهو البرنامج مع السورس، لن يعمل مع النسخ السابقة لـدلفي 2009 لكن من الأحسن النظر فيها (البرنامج التنفيذي لرؤية النتائج دون الحاجة للتجميع)

Tuburon_Test.zip

و السلام عليكم والرحمة

:)

تم تعديل بواسطه merouane
0

شارك هذا الرد


رابط المشاركة
شارك الرد من خلال المواقع ادناه

15 إجابة على هذا السؤال .

  • 0

بصراحة مميزات جميلة وروعة ... أنا بحاجة الى الأنتقال الى 2009 حين الصدور بشكل رسمى

0

شارك هذا الرد


رابط المشاركة
شارك الرد من خلال المواقع ادناه
  • 0

مشكور اخي الكريم

كل انتقال يجب ان تواجه به المشاكل

شكرا لك

0

شارك هذا الرد


رابط المشاركة
شارك الرد من خلال المواقع ادناه
  • 0
كل انتقال يجب ان تواجه به المشاكل

هذا ما يثير اعصابى .. أخاف من الانتقال لهذا السبب

0

شارك هذا الرد


رابط المشاركة
شارك الرد من خلال المواقع ادناه
  • 0

الإنتقال دائما صعب ولكنه الأفضل من البقاء خلف الركب

أشكرك على الشرح ... ولكن واضح أنك تستخدم ثيم للفيستا على الويندوز XP لان الصور الخاصة ب XP لاتظهر كما أرفقتها

تحياتي

0

شارك هذا الرد


رابط المشاركة
شارك الرد من خلال المواقع ادناه
  • 0

بارك الله فيك أخي الكريم هل يوجد في دلفي 2008 QuickRep

0

شارك هذا الرد


رابط المشاركة
شارك الرد من خلال المواقع ادناه
  • 0

TopSec

نعم أستعمل ثيم الفيستا على XP لأنني لا أحب الأصلي و لا أظن أن الكثير يستعمله

ها هو كيف يظهر على XP بالمظهر الأصلي

post-113861-1218282976_thumb.gif

saiddsa3980

في هذه النسخة Pre-Release لم أجد مكون QuickRep ، قد يكون في النسخة الكاملة

في كل الأحوال يوجد المكون Pro في المنتدى

:)

0

شارك هذا الرد


رابط المشاركة
شارك الرد من خلال المواقع ادناه
  • 0

بارك الله فيك اخي مروان

ولكن هل نسخة دلفي الاخير تتضمن تقنية LINQ ام لا

تحياتي

0

شارك هذا الرد


رابط المشاركة
شارك الرد من خلال المواقع ادناه
  • 0
ولكن هل نسخة دلفي الاخير تتضمن تقنية LINQ ام لا

و فيك بركة

لم أفهم ما تقصده بالـ LINQ ؟

0

شارك هذا الرد


رابط المشاركة
شارك الرد من خلال المواقع ادناه
  • 0

مشكور أخي مروان عن التوضيح وعن الجديد دوماً

- أين أجد المكون pro لقد بحثت في المنتدى ولم أجده

- هل المكون pro يعمل مثل المكون QuickRep

- وهل يعمل على نسخة دلفي 2008

لأني عندي مشروع عملته بالدلفي 7 وفتحته بدلفي 2008 حينها صادفتني مشاكل في فتح المشروع لأن المشروع يحتوي على QuickRep والنسخة 2008 من دلفي لم أجد بها المكون QuickRep

مشكور اخي مروان مرة أخرى جزاك الله كل الخير دمت كنزاً لنا .

تم تعديل بواسطه saiddsa3980
0

شارك هذا الرد


رابط المشاركة
شارك الرد من خلال المواقع ادناه
  • 0

بالنسبة للمكون QuickReport

هنا : http://www.arabteam2000-forum.com/index.php?showtopic=136700

و قد قمت بإعادة رفعهما على المنتدى

المرفق الخاص بدلفي 2007 يعمل ، و لا أعرف ما هو دلفي 2008 ؟؟؟

0

شارك هذا الرد


رابط المشاركة
شارك الرد من خلال المواقع ادناه
  • 0
بالنسبة للمكون QuickReport

هنا : http://www.arabteam2000-forum.com/index.php?showtopic=136700

و قد قمت بإعادة رفعهما على المنتدى

المرفق الخاص بدلفي 2007 يعمل ، و لا أعرف ما هو دلفي 2008 ؟؟؟

نعم أخي مروان كنت أقصد دلفي 2007 وليس 2008

لقد قمت بتنزيل المكون Pro وسأقوم بتجريبه

الله يجازيك ما لا نهاية من الأجر - شكراً -

0

شارك هذا الرد


رابط المشاركة
شارك الرد من خلال المواقع ادناه
  • 0

اخي مروان LINQ تستطيع ان تقول عنها انها طريقة استعلام جديدة وبديلة عن طريقة الاستعلام SQL تضمنتها الاصدارة الاخيرة من الفيجول ستديو 2008

وهذه مقالة للاخ عروة يتحدث فيها عن LINQ بشكل اوضح

http://www.arabteam2000-forum.com/index.php?showtopic=76490

اتمنى ان تضاف تقنية مثل هذه لدلفي

تحياتي

0

شارك هذا الرد


رابط المشاركة
شارك الرد من خلال المواقع ادناه
  • 0

السلام عليكم

منقول من

كما اخبرنا اساتذتتنا سابقا ان الدلفي 2009 اصبحت مكتبة VCL جديدة ومعززه المكونات ، هناك ايضا تجديد datasnap تماما.

هنا سنلفي نظرة سريعه على اثنتين من السمات الجديدة لغة دلفي

1- generics

2 Delphi Anonymous Methods

Delphi Generics: Great for containers and collections

انسخ الكود
  1. TList[color= #339933;]<[/color]T[color= #339933;]>[/color] [color= #339933;]=[/color] [color= #000000; font-weight: bold;]class[/color][/right]

  2. [color= #000000; font-weight: bold;]private[/color]
  3. FItems[color= #339933;]:[/color] [color= #990000;]array[/color] of T[color= #339933;];[/color]
  4. FCount[color= #339933;]:[/color] Integer[color= #339933;];[/color]
  5. procedure Grow[color= #009900;]([/color]ACapacity[color= #339933;]:[/color] Integer[color= #009900;])[/color][color= #339933;];[/color]
  6. [color= #000000; font-weight: bold;]function[/color] GetItem[color= #009900;]([/color]AIndex[color= #339933;]:[/color] Integer[color= #009900;])[/color][color= #339933;]:[/color] T[color= #339933;];[/color]
  7. procedure SetItem[color= #009900;]([/color]AIndex[color= #339933;]:[/color] Integer[color= #339933;];[/color] AValue[color= #339933;]:[/color] T[color= #009900;])[/color][color= #339933;];[/color]
  8. [color= #000000; font-weight: bold;]public[/color]
  9. procedure Add[color= #009900;]([/color]const AItem[color= #339933;]:[/color] T[color= #009900;])[/color][color= #339933;];[/color]
  10. procedure AddRange[color= #009900;]([/color]const AItems[color= #339933;]:[/color] [color= #990000;]array[/color] of T[color= #009900;])[/color][color= #339933;];[/color]
  11. procedure RemoveAt[color= #009900;]([/color]AIndex[color= #339933;]:[/color] Integer[color= #009900;])[/color][color= #339933;];[/color]
  12. procedure Clear[color= #339933;];[/color]
  13. property Item[color= #009900;][[/color]AIndex[color= #339933;]:[/color] Integer[color= #009900;]][/color][color= #339933;]:[/color] T
  14. read GetItem write SetItem[color= #339933;];[/color] [color= #000000; font-weight: bold;]default[/color][color= #339933;];[/color]
  15. property [color= #990000;]Count[/color][color= #339933;]:[/color] Integer read FCount[color= #339933;];[/color]
  16. [color= #990000;]end[/color][color= #339933;];[/color]
  17. Use[color= #339933;]:[/color]
  18. [color= #000000; font-weight: bold;]var[/color]
  19. ilist[color= #339933;]:[/color] TList[color= #339933;]<[/color]Integer[color= #339933;]>;[/color]
  20. slist[color= #339933;]:[/color] TList[color= #339933;]<[/color]String[color= #339933;]>;[/color]
  21.  
  22. procedure PrintListInteger[color= #339933;];[/color]
  23. [color= #000000; font-weight: bold;]var[/color]
  24. i[color= #339933;]:[/color] Integer[color= #339933;];[/color]
  25. begin
  26. [color= #b1b100;]for[/color] i [color= #339933;]:=[/color] [color= #cc66cc;]0[/color] to ilist[color= #339933;].[/color][color= #990000;]Count[/color] [color= #339933;]-[/color] [color= #cc66cc;]1[/color] [color= #b1b100;]do[/color]
  27. Write[color= #009900;]([/color]ilist[color= #009900;][[/color]i[color= #009900;]][/color][color= #339933;],[/color] [color= #0000ff;]' '[/color][color= #009900;])[/color][color= #339933;];[/color]
  28. Writeln[color= #339933;];[/color]
  29. [color= #990000;]end[/color][color= #339933;];[/color]
  30.  
  31. procedure PrintListString[color= #339933;];[/color]
  32. [color= #000000; font-weight: bold;]var[/color]
  33. i[color= #339933;]:[/color] Integer[color= #339933;];[/color]
  34. begin
  35. [color= #b1b100;]for[/color] i [color= #339933;]:=[/color] [color= #cc66cc;]0[/color] to slist[color= #339933;].[/color][color= #990000;]Count[/color] [color= #339933;]-[/color] [color= #cc66cc;]1[/color] [color= #b1b100;]do[/color]
  36. Write[color= #009900;]([/color]slist[color= #009900;][[/color]i[color= #009900;]][/color][color= #339933;],[/color] [color= #0000ff;]' '[/color][color= #009900;])[/color][color= #339933;];[/color]
  37. Writeln[color= #339933;];[/color]
  38. [color= #990000;]end[/color][color= #339933;];[/color]
  39.  
  40. begin
  41. ilist [color= #339933;]:=[/color] TList[color= #339933;].[/color]Create[color= #339933;];[/color]
  42. try
  43. ilist[color= #339933;].[/color]AddRange[color= #009900;]([/color][color= #009900;][[/color][color= #cc66cc;]1[/color][color= #339933;],[/color] [color= #cc66cc;]2[/color][color= #339933;],[/color] [color= #cc66cc;]3[/color][color= #009900;]][/color][color= #009900;])[/color][color= #339933;];[/color] [color= #666666; font-style: italic;]// ['1', 'second', 'third']);[/color]
  44. PrintListInteger[color= #339933;];[/color]
  45. ilist[color= #339933;].[/color]RemoveAt[color= #009900;]([/color][color= #cc66cc;]1[/color][color= #009900;])[/color][color= #339933;];[/color]
  46. PrintListInteger[color= #339933;];[/color]
  47. ilist[color= #339933;].[/color]Clear[color= #339933;];[/color]
  48. PrintListInteger[color= #339933;];[/color]
  49. finally
  50. ilist[color= #339933;].[/color]Free[color= #339933;];[/color]
  51. [color= #990000;]end[/color][color= #339933;];[/color]
  52. slist [color= #339933;]:=[/color] TList[color= #339933;].[/color]Create[color= #339933;];[/color]
  53. try
  54. slist[color= #339933;].[/color]AddRange[color= #009900;]([/color][color= #009900;][[/color][color= #0000ff;]'one'[/color][color= #339933;],[/color] [color= #0000ff;]'two'[/color][color= #339933;],[/color] [color= #0000ff;]'three'[/color][color= #009900;]][/color][color= #009900;])[/color][color= #339933;];[/color] [color= #666666; font-style: italic;]// ['first', 'second', 'third']);[/color]
  55. PrintListString[color= #339933;];[/color]
  56. slist[color= #339933;].[/color]RemoveAt[color= #009900;]([/color][color= #cc66cc;]1[/color][color= #009900;])[/color][color= #339933;];[/color]
  57. PrintListString[color= #339933;];[/color]
  58. slist[color= #339933;].[/color]Clear[color= #339933;];[/color]
  59. PrintListString[color= #339933;];[/color]
  60. finally
  61. slist[color= #339933;].[/color]Free[color= #339933;];[/color]
  62. [color= #990000;]end[/color][color= #339933;];[/color]
  63. Readln[color= #339933;];[/color]
  64. [color= #990000;]end[/color][color= #339933;].[/color]
  65.  
  66.  

[i]Generics.Collections هي وحدة موجودة داخل كل من :[/i]

TList, TQueue, TStack, TDictionary, TObjectList, TObjectQueue, TObjectStack, وTObjectDictionary.

[b]Delphi Anonymous Methods[/b]

انسخ الكود
  1. Declaration[color= #339933;]:[/color]
  2. type
  3. [color= #666666; font-style: italic;]// method reference[/color]
  4. TProc [color= #339933;]=[/color] reference to procedure[color= #009900;]([/color]x[color= #339933;]:[/color] Integer[color= #009900;])[/color][color= #339933;];[/color]
  5.  
  6. procedure Call[color= #009900;]([/color]const proc[color= #339933;]:[/color] TProc[color= #009900;])[/color][color= #339933;];[/color]
  7. begin
  8. proc[color= #009900;]([/color][color= #cc66cc;]42[/color][color= #009900;])[/color][color= #339933;];[/color]
  9. [color= #990000;]end[/color][color= #339933;];[/color]
  10. Use[color= #339933;]:[/color]
  11. [color= #000000; font-weight: bold;]var[/color]
  12. proc[color= #339933;]:[/color] TProc[color= #339933;];[/color]
  13. begin
  14. [color= #666666; font-style: italic;]// anonymous method[/color]
  15. proc [color= #339933;]:=[/color] procedure[color= #009900;]([/color]a[color= #339933;]:[/color] Integer[color= #009900;])[/color]
  16. begin
  17. Writeln[color= #009900;]([/color]a[color= #009900;])[/color][color= #339933;];[/color]
  18. [color= #990000;]end[/color][color= #339933;];[/color]
  19.  
  20. Call[color= #009900;]([/color]proc[color= #009900;])[/color][color= #339933;];[/color]
  21. readln
  22. [color= #990000;]end[/color][color= #339933;].[/color]
  23.  
  24.  

- méthodes anonymes يمكن التقاط المتغيرات المحلية وتخزينها ؛ اذن هم متاحين للméthode ولوقت كبير ك . référence مثلا

وهذا امر مهم اذا كنت تريد مثلا تنفيذ كود من برنامج او من thread على thread اخر ك ثراد واجه مستعمل مثلا او d'arrière-plan .

تم تعديل بواسطه زكيري عبد العالي
0

شارك هذا الرد


رابط المشاركة
شارك الرد من خلال المواقع ادناه
  • 0
http://video.codegear.com/Tiburon/WhatsNew...heDelphiIDE.htm تم تعديل بواسطه زكيري عبد العالي
0

شارك هذا الرد


رابط المشاركة
شارك الرد من خلال المواقع ادناه
  • 0

مشكور أخ مروان

للأمانة موضوع أكثر من رائع عن ديلفي 2009

و ننتظر منك المزيد عن ميزات 2009

0

شارك هذا الرد


رابط المشاركة
شارك الرد من خلال المواقع ادناه

  • يستعرض القسم حالياً   0 members

    لا يوجد أعضاء مسجلين يشاهدون هذه الصفحة .