![]() |
|
Customizing Ribbon Style - نسخة قابلة للطباعة +- delphi4arab منتديات دلفي للعرب (https://delphi4arab.net/forum) +-- قسم : منتديات دلفي للعرب التعليمية (https://delphi4arab.net/forum/forumdisplay.php?fid=3) +--- قسم : دروس دلفي للمبتدئين (https://delphi4arab.net/forum/forumdisplay.php?fid=13) +--- الموضوع : Customizing Ribbon Style (/showthread.php?tid=5561) |
Customizing Ribbon Style - SMP3 - 16-09-2013 السلام عليكم و رحمة الله و بركاته
يعد مكون Ribbon من أشهر المكونات التي لاقت تفاعل كبير من المبرمجين , أول اصدار له كان سنة 2007 مع الأوفيس 2007 من مايكروسوفت , سرعان ما تم محاولة استخدامه حتى قامت ميكروسوفت بتوفير حزمة للمبرمجين . يأتي المكون مع ثلاث ستايلات : Obsidian , Silver & Luna , أشهر و أكثر ستايل استخداما Luna . تم ارفاق حزمة Ribbon مع كل اصدارات دلفي الحديثة (انطلاقا من الاصدار 2009) . في الحقيقة لقد بحثت عدة مرات حول طريقة للتعديل على هذه الستايلات .. لكني لم أجد أي شيئ في النت , حتى قررت تحليل الحزمة المرفقة مع دلفي . تحليل الحزمة ليس بالأمر الصعب .. لكن هناك العديد من الأمور التي يجب مراعاتها حتى نتمكن من تصميم أو تعديل على الستايل . حتى نتمكن من التعديل على الستايل يتوجب علينا المرور ب 10 مراحل , سنتطرق لها في هذا الموضوع بالتفصيل .. نبدأ على بركة الله : أول مرحلة : الحصول على صورة ستايل Luna : Step 1 : Save Luna Bitmap Style : سنحتاج للصورة حتى نتمكن من التعديل على هذا الستايل باستخدام الفوتوشوب أو أي محرر صور آخر .. من التحليل الذي قمت به تبين أن ملف الستايل الخاص ب Ribbon , ماهو الى عبارة عن صورة Bitmap مضغوطة بمكتبة ZLib . أنشئ مشروع جديد و أضف اليه مكون TRibbon أرفق الوحدة ZLib للمشروع .. أضف هذه الدالة حتى نتمكن من الحصول على صورة و حفظها في القرص الصلب : PHP كود : procedure ExtractLunaStyle(AFile: String);احفظ الصورة الناتجة باسم Luna.bmp المرحلة الثانية : التعديل على صورة الستايل باستخدام الفوتوشوب Step 2 : Modify the Bitmap using PhotoShop بعد أن حصلنا على الصورة نقوم بالتعديل عليها باستخدام الفوتوشوب أو أي محرر صور آخر شريطة أن يكون محرر الصور يدعم الحفظ الى 32 بت مع Alpha channels . في الحقيقة لست محترف فوتوشوب ولا أعلم عنه الا القليل و القليل , لذلك اكتفيت بالتعديل على الصور من ناحية الألوان فقط . إقتباس :PhotoShop : Image=>Adjustments=>Hue/Saturation.بعد اجراء التعديلات اللازمة ننتقل الى المرحلة الثالثة . [COLOR="Red"]المرحلة الثالثة : حفظ الصورة : Step 3 : Save the customized bitmap as 32 bit format and make sure that the bitmap is a Alpha Channels .[/COLOR] تأكد من حفظ الصورة بدعم ل Alpha channels و 32 بت ![]() ![]() المرحلة الرابعة : ضغط الصورة باستخدام خوارزمية ZLib : Step 4 : Compress the Bitmap using ZLib . في هذه المرحلة نقوم بضغط الصورة بخوارزمية مكتبة ZLib حتى نتحصل في الأخير على ملف ستايل خاص ب Ribbon . PHP كود : procedure CompressBitmapStyle(BmpFile, DstFile: String);المرحلة الخامسة : اضافة الستايل للرسورس Step 5 : include the compressed file into the application resource . بعد أن حصلنا على ملف ستايل نقوم باضافته للرسورس : إقتباس :Project=>Resource and Images => Add ![]() المرحلة السادسة : Step 6 : Create a new Class derived from TCustomRibbonColorMap. أضف Unit جديدة باسم RibbonMyNewStyleActnCtrls سنقوم بتوريث كلاس TRibbonMyNewStyleColorMap من الكلاس TCustomRibbonColorMap مهمة هذا الكلاس هي تحديد الألوان الخاصة بالخطوط و الستايل : PHP كود : TRibbonMyNewStyleColorMap = class(TCustomRibbonColorMap)المرحلة السابعة : Step 7 : Create a new Class derived from TCustomRibbonSkin . في هذه المرحلة سنقوم باضافة كلاس جديد مورث من الكلاس TCustomRibbonSkin وضيفة هذا الكلاس توفير معلومات خاصة بالستايل : اسم ملف الستايل في الرسورس , اسم الصورة في القرص الصلب (ان أردنا تحميلها من القرص الصلب) . PHP كود : TRibbonMyNewStyleSkin = class(TCustomRibbonSkin)المرحلة الثامنة : Step 8 : Create a new Class derived from TRibbonStyleActionBars نقوم بانشاء كلاس جديد مورث من الكلاس TRibbonStyleActionBars PHP كود : TRibbonMyNewStyleActionBars = class(TRibbonStyleActionBars)المرحلة التاسعة :Step 9 : Register your new Style سنحتاج الى تسجيل الستايل حتى يتم تحميله من قبل مكون Ribbon : أضف متغير Global الى الوحدة RibbonMyNewStyleActnCtrls : PHP كود : varويتم تحريره عند finalization . المرحلة الأخيرة : تغيير الستايل : PHP كود : Ribbon1.Style := RibbonMyNewStyle; ![]() ![]() مثال كامل للمشروع : كود : https://dl.dropboxusercontent.com/u/99625333/Ribbon%20Style.rarCustomizing Ribbon Style - S.FATEH - 16-09-2013 بارك الله فيك درس مميز Customizing Ribbon Style - SMP3 - 25-09-2013 على فكرة : لقد تم اصلاح بعض ال Bug الموجودة في Ribbon في نسخة XE5 من بين ال Bug : تم اصلاح Bug المشار اليها في هذا الموضوع |