تم علاج مشكلة المكون EditSpain في المحاذاة الرأسية اما الأفقية فلم تعمل
ولعلاج المشكلة رفعت الوحدة التي سوف يتم اضافتها للمشروع
وعلى العموم وجدت هناك برمجة غير مفهومة وغير منطقية على سبيل المثال يوجد الاجراء التالي المسؤول عن مكان كتابة النص
كود :
procedure TSpinEdit.SetEditRect;
var
Loc: TRect;
begin
SendMessage(Handle, EM_GETRECT, 0, IntPtr(@Loc));
Loc.Bottom := ClientHeight + 1; {+1 is workaround for windows paint bug}
Loc.Right := ClientWidth - FButton.Width - 2;
// Loc.Top := 0;
if Alignment=taLeftJustify then
Loc.Left := 0;
SendMessage(Handle, EM_SETRECTNP, 0, IntPtr(@Loc));
SendMessage(Handle, EM_GETRECT, 0, IntPtr(@Loc)); {debug}
end;
هذا الاجراء لاعادة تموضع مكان الكتابة بالمكون وهو السبب في عدم حل مشكلة المكون في كتابة النص بالمكان الصحيح عند حل المشكلة مع ابوه TCustomEdit
والسؤال هو لماذا هذا الاجراء طالما المكون TCustomEdit له كل ما هو مطلوب من اجراءات وخصائص لكتابة النص ...؟
الحل طبعا كان التدخل في السطر
وطبعا لن يعمل المكون بهذه الطريقة لان هناك شئ غير منطقي أخر وهو أخر سطر والذي يجب ان يتم الغاءه
كود :
SendMessage(Handle, EM_GETRECT, 0, IntPtr(@Loc));
فهذا السطر سوف يعيد اي قيم تغيرها الى القيم الأصلية
والسؤال هو لماذا جعلو هذا السطر هنا اساسا ولماذا اعادة القيم
المهم باتباع الخطوات السابقة سيتم كتابة النص بمكانه الصحيح رأسيا اما افقيا فقد اضفت له
كود :
if Alignment=taLeftJustify then
Loc.Left := 0;
if Alignment=taCenter then
Loc.Left := Loc.Right div 2;
if Alignment=taRightJustify then
Loc.Left := Loc.Right;
ولكن لم تعمل ولا اعرف لماذا حتى الان حتى اجرب الغاء هذا الاجراء كامل واترك الامر الى الوحدة TCustomEdit حتى يصير الامر منطقيا أكثر
كما توقعت يكفي الغاء الاجراء الغبي SetEditRect كاملا من الوحدة وسوف يعمل كل شئ بشكل طبيعي
وسوف يتكفل الأب TCustomEdit بعمل كل شئ
اذا حتى الان لدينا سطران برمجيان عند الحاجة لهما يجب ان يكتبهما المستخدم في حدث Greate للنموذج
كود :
DBGrid1.DefaultRowHeight:=31;
SpinEdit1.Alignment:=taCenter;
الاول لتغيير ارتفاع الخلايا
والثاني لوضع النص بالمنتصف للمكون EditSpain
قل: اللهم فاطِرَ السماوات والأرض عالم الغيبِ والشهادة، ربَّ كُلِّ شَيءٍ ومَلِيكَه، أَشْهد أن لا إله إلا أنت، أعوذ بك من شرِّ نفسي وشرِّ الشيطان وشِرْكِهِ وأن أقترف على نفسي سوءًا أو أجرُّه إلى مسلم