Recent

Author Topic: معرفة أدوات النموذج  (Read 30889 times)

pascal111

  • Moderator
  • Sr. Member
  • *****
  • Posts: 423
  • Un trabajo en equipo para programas serias.
Re: معرفة أدوات النموذج
« Reply #15 on: August 12, 2021, 11:08:52 am »
قبل تقديم اي ملاحظة ، الاول انشر الكود في أحد المواقع المخصصة إذا كان هذا ممكن لي يتسنى لي مراجعته مراجعته

تقريباً الأخ Al-Eid أدرج ملف الكود في مرفقات البوست (المشاركة)
« Last Edit: August 12, 2021, 11:22:31 am by pascal111 »
La chose par la chose est rappelé.

Al-Eid

  • Jr. Member
  • **
  • Posts: 77
Re: معرفة أدوات النموذج
« Reply #16 on: August 12, 2021, 01:36:32 pm »
قبل تقديم اي ملاحظة ، الاول انشر الكود في أحد المواقع المخصصة إذا كان هذا ممكن لي يتسنى لي مراجعته مراجعته
هذا كود الوحدة التي تحتوي على الدوال

Code: Pascal  [Select][+][-]
  1. unit Unit2;
  2.  
  3. {$mode objfpc}{$H+}
  4.  
  5. interface
  6.  
  7. uses
  8.   Classes, SysUtils,Forms,Controls, Graphics, Dialogs, StdCtrls;
  9.  
  10.  var arrNumbercontrol: array of Integer;
  11. function FCountEdit(varform: TWinControl): Boolean ;
  12. function FCountEdit2(varform: TWinControl): Boolean ;
  13. function FCountLabel(varform: TWinControl): Boolean ;
  14. function FCountCombobx(varform: TWinControl): Boolean ;
  15. function FCountCombobx2(varform: TWinControl): Boolean ;
  16. function FCountButton(varform: TWinControl): Boolean ;
  17. implementation
  18.                     // متغير لإستقبال Form
  19. function FCountEdit(varform: TWinControl): Boolean;
  20.   var i :Integer ; // i متغير للحلقة
  21.       ss :TStrings; // متغير للوائح النصية لحفظ رقم الأداة
  22.   begin
  23.  
  24.      ss := TStringList.Create ;
  25.   for i := 0 to varform.ComponentCount-1 do
  26.    Begin
  27.         // هذه الحلقة تقوم بالبحث عن الأدواة edit
  28.        // وسط أدوات الـفورم
  29.    if varform.Components[i] is TEdit then
  30.     Begin
  31.     // عند وجود أداة من نوع Edit يضيف رقم الترتيب للأداة في لوحة النصوص
  32.      ss.Add(inttostr(i));
  33.     end
  34.   end;
  35.  
  36.  if ss.Count > 0 then Begin; // إذاكان هناك عددالأسطر أكثر من 0 يعني هناك أداة Edit واحدة على الأقل
  37.  
  38.   // تحديد طول المصفوفة حسب عدد الأدوات Edit
  39.   SetLength(arrNumbercontrol,ss.Count) ;
  40.   for i:= 0 to ss.Count-1 do
  41.   Begin
  42.    arrNumbercontrol[i]:= strtoint(ss.Strings[i]);
  43.    // نضع في خلايا المصفوفة أرقام الترتيبية لأدوات Edit
  44.    end;
  45.    ss.Free;
  46.    Result :=True ;
  47.   end
  48.  else
  49.  Begin
  50.    ss.Free;
  51.    Result :=False;
  52.  end;
  53.  
  54.  
  55.   end;
  56.  
  57. function FCountEdit2(varform: TWinControl): Boolean;
  58. var i :Integer ; // i متغير للحلقة
  59.       ss :TStrings; // متغير للوائح النصية لحفظ رقم الأداة
  60.   begin
  61.  
  62.      ss := TStringList.Create ;
  63.   for i := 0 to varform.ControlCount-1 do
  64.    Begin
  65.         // هذه الحلقة تقوم بالبحث عن الأدواة edit
  66.        // وسط أدوات الـفورم
  67.    if varform.Controls[i] is TEdit then
  68.     Begin
  69.     // عند وجود أداة من نوع Edit يضيف رقم الترتيب للأداة في لوحة النصوص
  70.      ss.Add(inttostr(i));
  71.     end
  72.   end;
  73.  
  74.  if ss.Count > 0 then Begin; // إذاكان هناك عددالأسطر أكثر من 0 يعني هناك أداة Edit واحدة على الأقل
  75.  
  76.   // تحديد طول المصفوفة حسب عدد الأدوات Edit
  77.   SetLength(arrNumbercontrol,ss.Count) ;
  78.   for i:= 0 to ss.Count-1 do
  79.   Begin
  80.    arrNumbercontrol[i]:= strtoint(ss.Strings[i]);
  81.    // نضع في خلايا المصفوفة أرقام الترتيبية لأدوات Edit
  82.    end;
  83.    ss.Free;
  84.    Result :=True ;
  85.   end
  86.  else
  87.  Begin
  88.    ss.Free;
  89.    Result :=False;
  90.  end;
  91.  
  92.  
  93.   end;
  94.  
  95. function FCountLabel(varform: TWinControl): Boolean;
  96. var i :Integer ;
  97.     ss :TStrings;
  98. begin
  99.  
  100.    ss := TStringList.Create ;
  101. for i := 0 to varform.ComponentCount-1 do
  102.  Begin
  103.  
  104.  if varform.Components[i] is TLabel then
  105.   Begin
  106.    ss.Add(inttostr(i));
  107.   end
  108. end;
  109.  
  110. if ss.Count > 0 then Begin;
  111.  
  112. SetLength(arrNumbercontrol,ss.Count) ;
  113. for i:= 0 to ss.Count-1 do
  114. Begin
  115.  arrNumbercontrol[i]:= strtoint(ss.Strings[i]);
  116. end;
  117.  ss.Free;
  118.  Result :=True ;
  119. end
  120. else
  121. Begin
  122.  ss.Free;
  123.  Result :=False;
  124. end;
  125.  
  126. end;
  127.  
  128. function FCountCombobx(varform: TWinControl): Boolean;
  129. var i :Integer ;
  130.     ss :TStrings;
  131. begin
  132.  
  133.    ss := TStringList.Create ;
  134. for i := 0 to varform.ComponentCount-1 do
  135.  Begin
  136.  
  137.  if varform.Components[i] is TCombobox then
  138.   Begin
  139.    ss.Add(inttostr(i));
  140.   end
  141. end;
  142.  
  143. if ss.Count > 0 then Begin;
  144.  
  145. SetLength(arrNumbercontrol,ss.Count) ;
  146. for i:= 0 to ss.Count-1 do
  147. Begin
  148.  arrNumbercontrol[i]:= strtoint(ss.Strings[i]);
  149. end;
  150.  ss.Free;
  151.  Result :=True ;
  152. end
  153. else
  154. Begin
  155.  ss.Free;
  156.  Result :=False;
  157. end;
  158.  
  159. end;
  160.  
  161. function FCountCombobx2(varform: TWinControl): Boolean;
  162. var i :Integer ;
  163.     ss :TStrings;
  164. begin
  165.  
  166.    ss := TStringList.Create ;
  167. for i := 0 to varform.ControlCount -1 do
  168.  Begin
  169.  
  170.  if varform.Controls[i] is TCombobox then
  171.   Begin
  172.    ss.Add(inttostr(i));
  173.   end
  174. end;
  175.  
  176. if ss.Count > 0 then Begin;
  177.  
  178. SetLength(arrNumbercontrol,ss.Count) ;
  179. for i:= 0 to ss.Count-1 do
  180. Begin
  181.  arrNumbercontrol[i]:= strtoint(ss.Strings[i]);
  182. end;
  183.  ss.Free;
  184.  Result :=True ;
  185. end
  186. else
  187. Begin
  188.  ss.Free;
  189.  Result :=False;
  190. end;
  191.  
  192. end;
  193.  
  194. function FCountButton(varform: TWinControl): Boolean;
  195. var i :Integer ;
  196.     ss :TStrings;
  197. begin
  198.  
  199.    ss := TStringList.Create ;
  200. for i := 0 to varform.ComponentCount-1 do
  201.  Begin
  202.  
  203.  if varform.Components[i] is TButton then
  204.   Begin
  205.    ss.Add(inttostr(i));
  206.   end
  207. end;
  208.  
  209. if ss.Count > 0 then Begin;
  210.  
  211. SetLength(arrNumbercontrol,ss.Count) ;
  212. for i:= 0 to ss.Count-1 do
  213. Begin
  214.  arrNumbercontrol[i]:= strtoint(ss.Strings[i]);
  215. end;
  216.  ss.Free;
  217.  Result :=True ;
  218. end
  219. else
  220. Begin
  221.  ss.Free;
  222.  Result :=False;
  223. end;
  224.  
  225.  
  226. end;
  227.  
  228.  
  229. end.      
  230.  

هذا كود أزار لمنداة الدوال

Code: Pascal  [Select][+][-]
  1.  
  2. procedure TForm1.Button3Click(Sender: TObject);
  3. var i : integer; // متغير للحلقة
  4. begin
  5.  if FCountEdit(form1) then // إذا أسترجعت الدالة قيمة True يعني وجود أداة  Edit واحدة على الأقل
  6.  Begin
  7.   for i := 0 to high(arrNumbercontrol) do
  8.    // حلقة عدد حلاقتها بعدد edit الموجودة
  9.    Begin
  10.    //   إطهار رقم الترتيبي للاداة في خاصيتها Text
  11.      Showmessage(Tedit(form1.Components[arrNumbercontrol[i]]).Name ) ;
  12.    end
  13.  end;
  14.  
  15. end;
  16.  
  17.  
  18. procedure TForm1.Button4Click(Sender: TObject);
  19. var i : integer;
  20. begin
  21.  if FCountButton(form1) then
  22.  Begin
  23.   for i := 0 to high(arrNumbercontrol) do
  24.    Begin
  25.     Showmessage(Tbutton(form1.Components[arrNumbercontrol[i]]).Caption) ;
  26.    end
  27.  end;
  28. end;
  29.  
  30. procedure TForm1.Button5Click(Sender: TObject);
  31. var i : integer;
  32. begin
  33.  if FCountLabel(form1) then
  34.  Begin
  35.   for i := 0 to high(arrNumbercontrol) do
  36.    Begin
  37.    showmessage(form1.Components[arrNumbercontrol[i]].Name );
  38.    end
  39.  end;
  40. end;
  41.  
  42. procedure TForm1.Button6Click(Sender: TObject);
  43.  
  44.  var i : integer;
  45.  begin
  46.   if FCountCombobx(form1) then
  47.   Begin
  48.    for i := 0 to high(arrNumbercontrol) do
  49.     Begin
  50.     showmessage(form1.Components[arrNumbercontrol[i]].Name );
  51.     end
  52.   end;
  53. end;
  54.  
  55. procedure TForm1.Button8Click(Sender: TObject);
  56.  var i : integer;
  57.  begin
  58.  if FCountEdit2(form1) then
  59.  Begin
  60.   for i := 0 to high(arrNumbercontrol) do
  61.    Begin
  62.  
  63.    Showmessage(Tedit(form1.Controls[arrNumbercontrol[i]]).Name) ;
  64.    end
  65.  end;
  66. end;
  67.  
  68. procedure TForm1.Button9Click(Sender: TObject);
  69.  
  70.  var i : integer;
  71.  begin
  72.   if FCountCombobx2(form1) then
  73.   Begin
  74.    for i := 0 to high(arrNumbercontrol) do
  75.     Begin
  76.     showmessage(form1.Components[arrNumbercontrol[i]].Name );
  77.     end
  78.   end;
  79. end;
  80.                                                
  81.  

nouzi

  • Moderator
  • Sr. Member
  • *****
  • Posts: 306
Re: معرفة أدوات النموذج
« Reply #17 on: August 12, 2021, 04:26:26 pm »


Quote

تقريباً الأخ Al-Eid أدرج ملف الكود في مرفقات البوست (المشاركة)


شكرا لك اعرف ذالك ، لكني الان ادير اغلب اعمالي من المحمول
My English is  bad
Lazarus last version free pascal last version
Lazarus trunk  free pascal trunk 
System : Linux mint  64bit  Windows 7 64bit

nouzi

  • Moderator
  • Sr. Member
  • *****
  • Posts: 306
Re: معرفة أدوات النموذج
« Reply #18 on: August 12, 2021, 04:32:00 pm »
من وجهة نظري هذه الشفرة سيئة ، مزلت قادر على تحسين الكود لا استطيع ان اضيف أكثر لان حاسوبي معطل الان لكن استطيع توجيه بعض النصائح حول اذا ردت ذالك ،وإذا اطلع الاخ زاهر على الكود وقدم النصح ستكون اكبر محضوض في المنتدى اليوم  :D
« Last Edit: August 12, 2021, 04:34:47 pm by nouzi »
My English is  bad
Lazarus last version free pascal last version
Lazarus trunk  free pascal trunk 
System : Linux mint  64bit  Windows 7 64bit

pascal111

  • Moderator
  • Sr. Member
  • *****
  • Posts: 423
  • Un trabajo en equipo para programas serias.
Re: معرفة أدوات النموذج
« Reply #19 on: August 12, 2021, 07:55:03 pm »


Quote

تقريباً الأخ Al-Eid أدرج ملف الكود في مرفقات البوست (المشاركة)


شكرا لك اعرف ذالك ، لكني الان ادير اغلب اعمالي من المحمول

حسناً! لكـ مُطلق الحُريّة
La chose par la chose est rappelé.

Zaher

  • Hero Member
  • *****
  • Posts: 683
    • parmaja.org
Re: معرفة أدوات النموذج
« Reply #20 on: August 13, 2021, 12:09:26 am »
اختصرت لك الكود

Code: Pascal  [Select][+][-]
  1. function FCountEdit(varform: TWinControl): Boolean;
  2.   var i :Integer ; // i متغير للحلقة
  3.   begin
  4.  
  5.   for i := 0 to varform.ControlCount-1 do
  6.    Begin
  7.         // هذه الحلقة تقوم بالبحث عن الأدواة edit
  8.        // وسط أدوات الـفورم
  9.    if varform.Controls[i] is TEdit then
  10.     Begin
  11.     SetLength(arrNumbercontrol,Length(arrNumbercontrol) + 1) ;
  12.     // عند وجود أداة من نوع Edit يضيف رقم الترتيب للأداة في لوحة النصوص
  13.      arrNumbercontrol[High(arrNumbercontrol)] := i;
  14.     end
  15.   end;
  16.    Result :=Length(arrNumbercontrol);
  17.  end;
  18.  

Al-Eid

  • Jr. Member
  • **
  • Posts: 77
Re: معرفة أدوات النموذج
« Reply #21 on: August 13, 2021, 07:41:37 am »
اختصرت لك الكود

Code: Pascal  [Select][+][-]
  1. function FCountEdit(varform: TWinControl): Boolean;
  2.   var i :Integer ; // i متغير للحلقة
  3.   begin
  4.  
  5.   for i := 0 to varform.ControlCount-1 do
  6.    Begin
  7.         // هذه الحلقة تقوم بالبحث عن الأدواة edit
  8.        // وسط أدوات الـفورم
  9.    if varform.Controls[i] is TEdit then
  10.     Begin
  11.     SetLength(arrNumbercontrol,Length(arrNumbercontrol) + 1) ;
  12.     // عند وجود أداة من نوع Edit يضيف رقم الترتيب للأداة في لوحة النصوص
  13.      arrNumbercontrol[High(arrNumbercontrol)] := i;
  14.     end
  15.   end;
  16.    Result :=Length(arrNumbercontrol);
  17.  end;
  18.  

بارك الله فيك أخي Zaher  ::)
بالنسبة لعملية إرجاع Result أنت أسندت length(arrNumbercontrol) وهذا يمثل عدد صحيح مع العلم أن الدالة مصرح بها على أنها منطقية يعني يجب أن يتغير أيضا نوع الدالة من منطقي إلى صحيح وبارك الله فيك مرة ثانية

nouzi

  • Moderator
  • Sr. Member
  • *****
  • Posts: 306
Re: معرفة أدوات النموذج
« Reply #22 on: August 14, 2021, 01:24:48 am »
اختصرت لك الكود

Code: Pascal  [Select][+][-]
  1. function FCountEdit(varform: TWinControl): Boolean;
  2.   var i :Integer ; // i متغير للحلقة
  3.   begin
  4.  
  5.   for i := 0 to varform.ControlCount-1 do
  6.    Begin
  7.         // هذه الحلقة تقوم بالبحث عن الأدواة edit
  8.        // وسط أدوات الـفورم
  9.    if varform.Controls[i] is TEdit then
  10.     Begin
  11.     SetLength(arrNumbercontrol,Length(arrNumbercontrol) + 1) ;
  12.     // عند وجود أداة من نوع Edit يضيف رقم الترتيب للأداة في لوحة النصوص
  13.      arrNumbercontrol[High(arrNumbercontrol)] := i;
  14.     end
  15.   end;
  16.    Result :=Length(arrNumbercontrol);
  17.  end;
  18.  
هذا تصوري الكود تقريبا لكن مزال بعض الملاحظات أخ زاهر مثل :
نوع الوظيفة  عدادي وليس منطقي-
اختصار جميع الدوال في دالة واحدة
« Last Edit: August 14, 2021, 01:30:14 am by nouzi »
My English is  bad
Lazarus last version free pascal last version
Lazarus trunk  free pascal trunk 
System : Linux mint  64bit  Windows 7 64bit

pascal111

  • Moderator
  • Sr. Member
  • *****
  • Posts: 423
  • Un trabajo en equipo para programas serias.
Re: معرفة أدوات النموذج
« Reply #23 on: August 14, 2021, 05:35:05 pm »
أظن الأخ زاهر إختزل الدوال في دالة واحدة وهذا حل بأسلوب رياضي جيّد.
La chose par la chose est rappelé.

Zaher

  • Hero Member
  • *****
  • Posts: 683
    • parmaja.org
Re: معرفة أدوات النموذج
« Reply #24 on: August 14, 2021, 05:53:38 pm »
ليس بعد اذا اردت كل التوابع ممكن هذه الطريقة

Code: Pascal  [Select][+][-]
  1. function FCountClass(varform: TWinControl; AClass: TControlClass): Boolean;
  2. var
  3.   i: Integer; // i متغير للحلقة
  4. begin
  5.   for i := 0 to varform.ControlCount - 1 do
  6.   begin
  7.     // هذه الحلقة تقوم بالبحث عن الأدواة edit
  8.     // وسط أدوات الـفورم
  9.     if varform.Controls[i] is AClass then
  10.     begin
  11.       SetLength(arrNumbercontrol, Length(arrNumbercontrol) + 1);
  12.       // عند وجود أداة من نوع Edit يضيف رقم الترتيب للأداة في لوحة النصوص
  13.       arrNumbercontrol[High(arrNumbercontrol)] := i;
  14.     end;
  15.   end;
  16.   Result := Length(arrNumbercontrol) > 0;
  17. end;
  18.  
  19. FCountClass(self, TEdit);
  20.  

pascal111

  • Moderator
  • Sr. Member
  • *****
  • Posts: 423
  • Un trabajo en equipo para programas serias.
Re: معرفة أدوات النموذج
« Reply #25 on: August 15, 2021, 12:08:18 pm »
جرّبتها ،الدّالة تعمل جيّداً لكنّني لستُ على يقينٍ من طريقتي في إستخدامها بعد.

Code: Pascal  [Select][+][-]
  1. unit Unit1;
  2.  
  3. {$mode objfpc}{$H+}
  4.  
  5. interface
  6.  
  7. uses
  8.   Classes, SysUtils, Forms, Controls, Graphics, Dialogs, StdCtrls;
  9.  
  10. type
  11.  
  12.   { TForm1 }
  13.  
  14.   TForm1 = class(TForm)
  15.     Button1: TButton;
  16.     Edit1: TEdit;
  17.     Edit2: TEdit;
  18.     Edit3: TEdit;
  19.     procedure Button1Click(Sender: TObject);
  20.   private
  21.  
  22.   public
  23.  
  24.   end;
  25.  
  26. var
  27.   Form1: TForm1;
  28.   arrNumbercontrol: array of Integer;
  29.  
  30.   function FCountClass(varform: TWinControl; AClass: TControlClass): Boolean;
  31.  
  32. implementation
  33.  
  34. {$R *.lfm}
  35.  
  36.  
  37. function FCountClass(varform: TWinControl; AClass: TControlClass): Boolean;
  38. var
  39.   i: Integer; // i متغير للحلقة
  40. begin
  41.   for i := 0 to varform.ControlCount - 1 do
  42.   begin
  43.     // هذه الحلقة تقوم بالبحث عن الأدواة edit
  44.     // وسط أدوات الـفورم
  45.     if varform.Controls[i] is AClass then
  46.     begin
  47.       SetLength(arrNumbercontrol, Length(arrNumbercontrol) + 1);
  48.       // عند وجود أداة من نوع Edit يضيف رقم الترتيب للأداة في لوحة النصوص
  49.       arrNumbercontrol[High(arrNumbercontrol)] := i;
  50.     end;
  51.   end;
  52.   Result := Length(arrNumbercontrol) > 0;
  53. end;
  54.  
  55. { TForm1 }
  56.  
  57. procedure TForm1.Button1Click(Sender: TObject);
  58.  
  59.  
  60. begin
  61.  
  62.  
  63.   if  FCountClass(self,tedit) then
  64.   showmessage(inttostr(High(arrNumbercontrol)+1));
  65.  
  66. end;
  67.  
  68. end.
  69.  
  70.  

La chose par la chose est rappelé.

Zaher

  • Hero Member
  • *****
  • Posts: 683
    • parmaja.org
Re: معرفة أدوات النموذج
« Reply #26 on: August 15, 2021, 01:47:25 pm »
للدقة لا يفترض ان تعمل مصفوفة عامة ترجع فيها معلومات مؤقتة
يعني arrNumbercontrol موقعها خطأ
 ان ترجعها من الدالة نفسها وهو الحل الافضل

Al-Eid

  • Jr. Member
  • **
  • Posts: 77
Re: معرفة أدوات النموذج
« Reply #27 on: August 15, 2021, 11:45:58 pm »
هذا تصوري الكود تقريبا لكن مزال بعض الملاحظات أخ زاهر مثل :
نوع الوظيفة  عدادي وليس منطقي-
اختصار جميع الدوال في دالة واحدة

أعتقد لو أختصرنا كل الدوال في دالة واحدة يجب أن يكون هناك إجراء if لمعرفة نوع الأداة وكثير من المصفوفات لتسجل رقم الترتيبي ولذلك من الأفضل أن يبقى كل نوع له دلته الخاص به هذا مجرد رائي يمكن أن تفيدونا أكثر

nouzi

  • Moderator
  • Sr. Member
  • *****
  • Posts: 306
Re: معرفة أدوات النموذج
« Reply #28 on: August 16, 2021, 12:58:09 am »
هذا تصوري الكود تقريبا لكن مزال بعض الملاحظات أخ زاهر مثل :
نوع الوظيفة  عدادي وليس منطقي-
اختصار جميع الدوال في دالة واحدة

أعتقد لو أختصرنا كل الدوال في دالة واحدة يجب أن يكون هناك إجراء if لمعرفة نوع الأداة وكثير من المصفوفات لتسجل رقم الترتيبي ولذلك من الأفضل أن يبقى كل نوع له دلته الخاص به هذا مجرد رائي يمكن أن تفيدونا أكثر
لن تحتاج إلى شرط غير الشرط الوحيد الموجود في الدالة الاصلية
يبقى كل شئ مربوط حسب تصورك للحل و تصميمك لي الشفرة 
« Last Edit: August 16, 2021, 01:02:36 am by nouzi »
My English is  bad
Lazarus last version free pascal last version
Lazarus trunk  free pascal trunk 
System : Linux mint  64bit  Windows 7 64bit

Al-Eid

  • Jr. Member
  • **
  • Posts: 77
Re: معرفة أدوات النموذج
« Reply #29 on: August 16, 2021, 12:49:12 pm »
ليس بعد اذا اردت كل التوابع ممكن هذه الطريقة

Code: Pascal  [Select][+][-]
  1. function FCountClass(varform: TWinControl; AClass: TControlClass): Boolean;
  2. var
  3.   i: Integer; // i متغير للحلقة
  4. begin
  5.   for i := 0 to varform.ControlCount - 1 do
  6.   begin
  7.     // هذه الحلقة تقوم بالبحث عن الأدواة edit
  8.     // وسط أدوات الـفورم
  9.     if varform.Controls[i] is AClass then
  10.     begin
  11.       SetLength(arrNumbercontrol, Length(arrNumbercontrol) + 1);
  12.       // عند وجود أداة من نوع Edit يضيف رقم الترتيب للأداة في لوحة النصوص
  13.       arrNumbercontrol[High(arrNumbercontrol)] := i;
  14.     end;
  15.   end;
  16.   Result := Length(arrNumbercontrol) > 0;
  17. end;
  18.  
  19. FCountClass(self, TEdit);
  20.  

بارك الله فيك أخ zaher

هذا تصوري الكود تقريبا لكن مزال بعض الملاحظات أخ زاهر مثل :
نوع الوظيفة  عدادي وليس منطقي-
اختصار جميع الدوال في دالة واحدة

أعتقد لو أختصرنا كل الدوال في دالة واحدة يجب أن يكون هناك إجراء if لمعرفة نوع الأداة وكثير من المصفوفات لتسجل رقم الترتيبي ولذلك من الأفضل أن يبقى كل نوع له دلته الخاص به هذا مجرد رائي يمكن أن تفيدونا أكثر
لن تحتاج إلى شرط غير الشرط الوحيد الموجود في الدالة الاصلية
يبقى كل شئ مربوط حسب تصورك للحل و تصميمك لي الشفرة 
بارك الله فيك اخي nouzi  على التوضيح

 

TinyPortal © 2005-2018