طريقتان مغنيتان عن إضافة مكوّنات جديدة
#1
السلام عليكم ورحمة الله وبركاته

الكثير من المبرمجين يبحث عن مكونات جديدة لاستخدامها ويرفقها مع مشروعه إن كان مفتوح المصدر، أو يجد تلك المكونات مُرْفَقة مع المشروع فيضطر لتركيبها.

ولكن الكثير منا يستاء من إجباره على إضافة مكونات جديدة لأجل تشغيل بعض المشاريع والأمثلة، وهو لا يرغب أصلاً في تركيب هذه المكونات ثم يحذفها بعد مشاهدة المثال.

الحل الآن الذي أنصح به لا يغني تركيب هذه المكونات لتلك المشاريع المبرمجة بل لا يغني عمل مكونات وباكجات جديدة، ولكني أنصح به في التعديلات البسيطة التي تجريها على المكونات

الأصلية الموجودة بالدلفي ، وأراه يغني ويخفف الكثير من الحالات المرهقة لعمل تلك المكونات وإضافتها.

ففي حالة استخدام مكونات دلفي وترغيب في وجود مناهج أو إجراءات أو خصائص عن متوفرة فيها فعليك استخدام إحدى الطريقتين :
الطريقة الأولى : عليك كتابة المكوّن الجديد قبل التصريح عن نموذج النافذة
هذا مثال تخيلي من عندي :
كود :
type
  TAlignText = (atCenter, atRight, atLeft);
    TEdit = class(StdCtrls.TEdit)
  private
    FalignTex : TAlignText;
    procedure setAlignText(const Value: TAlignText);
  published
    property alignText : TAlignText read FalignTex write setAlignText;
    end;

  TForm1 = class(TForm)
    Edit1 : TEdit;
.
.
.

مثال عملي كامل تجده هنا :
كود :
http://www.stevetrefethen.com/blog/UsingGoogleMapsFromVCLSampleApplication.aspx
والتحميل من هنا :
كود :
http://www.stevetrefethen.com/files/googlemap.zip


الطريقة الثانية : استخدام : TMyHelper = class helper for TNeedObject

ولعل الطريقة هذه فقط في delphi2010

والطريقة وجدتها عن استخدامي للوحدة superobject.pas

وجدت أن جميع الكائنات الأصلية في الدلفي بلا استثناء فيها الإجرائين : toJson و FromJson . ثم وجدت السر هنا :
كود :
TSuperObjectHelper = class helper for TObject
  public
    function ToJson(ctx: TSuperRttiContext = nil): ISuperObject;
    constructor FromJson(const obj: ISuperObject; ctx: TSuperRttiContext = nil); overload;
    constructor FromJson(const str: string; ctx: TSuperRttiContext = nil); overload;
  end;


بالتوفيق ومن كان عنده إضافة علم فلا يحرمنا منها .
وإن تقدم ذو تقوى بصالحةٍ *** قدمتُ بين يديه عبرة الندمِ
الرد
#2
شكرا استاذ .
جاري الاطلاع على كامل الموضوع
الرد
#3
كود :
بالتوفيق ومن كان عنده إضافة علم فلا يحرمنا منها .
السلام عليكم Big Grin
كود :
ولعل الطريقة هذه فقط في delphi2010
بل دلفي 2007 Wink

class helper : لقد حل العديد من مشاكل ال OOP , لدي مثال في ال VCL Style Extractor
ألق نظرة على الوحدة SMPStyle
كود :
http://www.delphi4arab.net/forum/showthread.php?tid=7969

كما هناك ال Record Helper Big Grin
PHP كود :
type intHelper =record helper for integer
public
Function 
ToString():String;
end;

function 
intHelper.ToStringString;
begin
result
:=IntToStr(Self);

end

الآن يمكننا الكتابة بالشكل التالي :
PHP كود :
var MyInt:integer ;
begin
MyInt
:=2013;
Caption:=MyInt.ToString ;
end

و السلام عليكم Big Grin
[-] كل من 1 user says قال شكرا ل SMP3 على المشاركة المفيدة
  • invocker
الرد
#4
ملاحظة : يمكن استخدام الأدوات بدون تنصيبها لاختبارها
فقط قم باضافة وحدة الأداة الى ال uses
ثم قم بانشاء الأداة و قت التشغيل عن طريق انشاء الكلاس الخاص بالأداة
PHP كود :
implementation
 uses  MyComponentUnit
;
{
$R *.dfm}


procedure TForm2.Button1Click(SenderTObject);
var 
MyComponent:TMyComponent ;
begin
MyComponent
:=TMyComponent.Create(Self);
MyComponent.Parent:=Self;
MyComponent.Left:=0;
MyComponent.BlaBla:=BlaBla;
// ....
end
[-] كل من 1 user says قال شكرا ل SMP3 على المشاركة المفيدة
  • invocker
الرد


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


مستخدمين يتصفحوا هذا الموضوع: 1 ضيف