![]() |
|
استئصال وعلاج مرض وراثي - نسخة قابلة للطباعة +- delphi4arab منتديات دلفي للعرب (https://delphi4arab.net/forum) +-- قسم : منتديات دلفي للعرب التعليمية (https://delphi4arab.net/forum/forumdisplay.php?fid=3) +--- قسم : مصادر دلفي مفتوحة تعليمية (https://delphi4arab.net/forum/forumdisplay.php?fid=14) +--- الموضوع : استئصال وعلاج مرض وراثي (/showthread.php?tid=12450) |
RE: استئصال وعلاج مرض وراثي - Delphi4Us - 25-11-2023 ملاحظة على السريع كود : RegisterComponents('Samples', [TComponent1]);هذا المكون غير مهم فقط كان لتجربة الاحداث . RE: استئصال وعلاج مرض وراثي - Ndagor - 25-11-2023 إقتباس :هذه هي المشكلة هذه الشركة لم افهم توجهها ولا تفكيرها دعك من هذه الفكرة نعم قرات عن كثير من ترفض اقثرحاتهم مع العلم ان هذه ليست ثغرات ليتم تصحيحها انما تحسينات او اخطاء في هندسة و تصميم المكونات. القت نظرة على الكود و لكن لم استطع تجربه النسخة دالفي ليست نفسها و مثال و حدة D4AVcl.StdCtrls حجمها 371ko اما التي عندي حجمها 341ko فرق 40 كيلو لحد الان لاتوجد خطة عمل واضحة و لا قامة المكونات او العيوب التي يجب معالجتها و هل ينبغي ان يكون الحل في تعديل الوحدات الاصلية . RE: استئصال وعلاج مرض وراثي - Delphi4Us - 25-11-2023 إقتباس :مثال و حدة D4AVcl.StdCtrls حجمها 371ko اما التي عندي حجمها 341ko فرق 40 كيلو ربما بسبب اختلاف نسخ دلفي فانا اخدت النسخة من دلفي 11.3 ربما بسبب زيادة التعليقات والتلميحات حول الكود مثل كود : /// <summary>
/// Specifies the number of cells displayed in each picker column when the popup is visible.
/// </summary>إقتباس :لحد الان لاتوجد خطة عمل واضحة و لا قامة المكونات او العيوب التي يجب معالجتها حتى الان تم حل مشكلة عدم القدرة على زيادة ارتفاع الخلايا في DBGrid كود : DBGrid1.DefaultRowHeight:=51;وتم حل مشكلة عدم توسيط الكتابة في الخلية عند زيادة الاتفاع وتم حل مشكلة عدم توسيط الكتابة في المكون Tedit عند زيادة الارتفاع ![]() هناك مشكلة في المكون TcomboBox لا يظهر الكتابة الا بعد تمرير الفأرة عليه فقط عندما تكون الخاصية Style له تساوي csOwnerDrawFixed وعلى كل حال انا توقفت حتى احصل على شاشة اكبر لا تتعبني في معالجة وتتبع الكود الخطة لازالت هناك مكونات TcomboBox و TlistBox بحاجة الى معالجة زيادة الارتفاع وتوسيط الكتابة ولازال هناك مكونات بحاجة الى اضافة احداث لها مثل حدث تمرير زر عجلة الفأرة وهو مهم خاصة في مكون TDateTimePicker حتى يتسنى زيادة الايام والشهور والسنين بعجلة الفأرة ولازال هناك مكون TDateTimePicker بحاجة الى معالجة خاصية الـ Text فهي حتى وان لم تحدد التاريخ يبقى فيها القيمة ( / / ) والخاصية Date حتى وان لم تحدد التاريخ فيها تاريخ قديم شئ مثل 1980/11/1 وايضا مكون SpainEdit بحاجة الى توسيط الكتابة رأسياً وأفقيا حتى TAlignment لليمين او الوسط او اليسار لا يوجد كما يحتاج الى اضافة حدث عجلة الفأرة لزيادة وانقاص قيمته بعجلة الفأرة والمفترض ان يكون تم حل مشكلة التوسيط الرأسي لانه يرث من TCustomEdit والتي تم حل المشكلة بها للمكون Edit والمفترض كل المكونات التي ترث من TCustomEdit لا تحتاج الى معالجتها وهناك خطاء رسم عندما تستخدم سكين داكن اللون او اسود يظهر بمكون Dbgrid خطوط بيضاء سبق وعالجتها من الكود في حدث الرسم المكون TPageControl يحتاج الى اضافة خيار رسم الـ Tab ناحية اليمين وهذا الذي اذكره الان و هناك الكثير يحتاج لاصلاح اما المكونات الاصلية فتركنا امر وفكرة تعديلها RE: استئصال وعلاج مرض وراثي - Delphi4Us - 26-11-2023 تم علاج مشكلة المكون 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 له كل ما هو مطلوب من اجراءات وخصائص لكتابة النص ...؟ الحل طبعا كان التدخل في السطر كود : // Loc.Top := 0;وطبعا لن يعمل المكون بهذه الطريقة لان هناك شئ غير منطقي أخر وهو أخر سطر والذي يجب ان يتم الغاءه كود : 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 RE: استئصال وعلاج مرض وراثي - Ndagor - 26-11-2023 بما اننا نعمل على نسختين مختلفتين من دالفي سيكون من صعب تبادل الاكواد ينبغي فحص جيدا خاصة المكون TCustomEdit لانه مورث في كثير من المكونات RE: استئصال وعلاج مرض وراثي - Ndagor - 26-11-2023 الكود التصحيح الرسم العمودي في الجدول الموجود في الخوارزمية DrawCell في الوحدة D4AVcl.DBGrids يمكن و ضعه داخل الخوارزمة WriteText مباشرة لانها مستعملة عدة مرات و الخلايا الجدول في حدث و عناوين الاعمدة في حدث اخر و يحتاج الى التصحيح ..حسب مافهمت كود : var h :Integer;
h := ARect.Height div 2 - Canvas.TextHeight(value) div 2;RE: استئصال وعلاج مرض وراثي - Delphi4Us - 01-12-2023 السلام عليكم ورحمة الله اعتذر عن توقف العمل وهذا لظروف خارجة عن الارادة واوجه مشكلة في معالجة الكود والتدقيق فيه وجربت عدة ارقام وانواع من النظارات ولكن كلها طالما ليست معدة بطريقة طبية صحيحة لمعالجة الرؤية فدائما تضر اكثر مما تنفع وجاري حل المشكلة وبعدها ان شاء الله سوف نكمل
RE: استئصال وعلاج مرض وراثي - Ndagor - 07-12-2023 إقتباس :وجربت عدة ارقام وانواع من النظارات ولكن كلها طالما ليست معدة بطريقة طبية صحيحة لمعالجة الرؤية فدائما تضر اكثر مما تنفع انت في حاجة الى نظارة مكبرة او مقربة لتمكنك من التركيز على الاشاء القريبة من دون اجهاد العين .. RE: استئصال وعلاج مرض وراثي - Ndagor - 08-12-2023 اظن انه تم معالجة الملاحظات السابقة حول Edit -كود المرفق- اي النص متعدد الاسطر و مفتاح entry لانه باضافة خاصية multiline يصبح المكون يتعامل بطريقة اخرى غير المعهودة .. الا انه ادراج multiline يقلل ارتجاف الكتابة و ارتجاج النص اثناء الكتابة .. بالنسبة Combobox فعليا لا يوجد كود لرسم النص عندما يكون المكون ب ستايل csOwnerDrawFixed او csOwnerDrawVariable هذه العملية متروكة للمبرمج.. csOwnerDrawVariable معناه امكانية رسم كل عنصر بارتفاع مختلف هذا يتطلب استعمال الحدث OnMeasureItem للتحديد كل ارتفاع على حدة حسب الحاجة ان لم يتم تحديثه فهو مثل csOwnerDrawFixed يحدد الارتفاع جميع العناصر من خلال ItemHeight الق نظرة على كود المرفق بالنسبة ل TDBEdit يعتمد على طريقة مختلفة لاظهار النص هو يعتمد على الحدث Paint لرسم النص على Canvas المكون الكود يبدو قديم جدا على الاقل منذ دالفي 7 عندما كان Edit لا يحتوي خاصية TAlignment لهذا تم اللجوء الى الرسم مباشرة ..لكي تعمل التصحيحات المعمولة على Edit يجب حذف كود الخوارزمية WMPaint في TDBEdit ملاحظة مهمة فيما يخص الطريقة التي اعتمتها من اجل تصحيح العيوب و التي لا تعتمد على التوريث وانما تعتمد على النسخ الاصلية مع تغيير في اسماء الوحدات... هذه الطريقة سوف تسبب مشاكل اخرى منها تضارب الانواع و الاسماء الرموز و المكونات و لربها هناك بعض المتغيرات العامة المشتركة و التي لاتقبل انشاء نسختين .. اذا من الان عليك التفكير في تغيير اسماء المكونات التي قمت بتعديلها و حذف جميع الرموز و الانواع و المتغيرات العامة و الثوابث و استعمال الاصلية مثال TTextLayout |