Recent

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

Al-Eid

  • New Member
  • *
  • Posts: 30
معرفة أدوات النموذج
« on: July 29, 2021, 01:46:54 pm »
السلام عليكم بهذا الكود بالأسفل يمكن أن أتعرف على الأدوات الموجودة في الفورم

Code: Pascal  [Select][+][-]
  1. [code=pascal]
  2.   for J_FOR := 0 to varform.ComponentCount -1 do
  3.    Begin
  4.     if Copy(varform.Components[j_for].Name,1,4) = varcontrol then
  5.     begin
  6.      if varform.Components[j_For] is TEdit then Tedit(varform.Components[j_For]).Text :=''
  7.      else if varform.Components[j_For] is TComboBox then Begin TComboBox(varform.Components[j_For]).ItemIndex :=-1; TComboBox(varform.Components[j_For]).Text :=''; end
  8.      else if varform.Components[j_For] is TListBox then TListBox(varform.Components[j_For]).ItemIndex :=-1
  9.      else if varform.Components[j_For] is TCheckBox then TCheckBox(varform.Components[j_For]).Checked :=False
  10.      else if varform.Components[j_For] is TRadioButton then TRadioButton(varform.Components[j_For]).Checked :=False
  11.      else if varform.Components[j_For] is TDateTimePicker then TDateTimePicker(varform.Components[j_For]).Date := Date
  12.      else if varform.Components[j_For] is TFloatSpinEdit then TFloatSpinEdit(varform.Components[j_For]).Value := 0
  13.      else if varform.Components[j_For] is TSpinEdit then TSpinEdit(varform.Components[j_For]).Value := 0
  14.      else if varform.Components[j_For] is TMemo then TMemo(varform.Components[j_For]).Clear ;
  15.  
  16.  
  17.     end;
  18.  
  19.    end;
[/code]

سؤالي هو عن كود لأتعرف مثلا على محررات النصوص فقط بدون المرور على كل الأدوات
« Last Edit: July 31, 2021, 10:56:18 pm by pascal111 »

pascal111

  • Moderator
  • Sr. Member
  • *****
  • Posts: 356
  • Un trabajo en equipo para programas serias.
Re: معرفة أدوات المنودج
« Reply #1 on: July 31, 2021, 10:42:54 pm »
لستُ بارعاً جدّاً في الـ Free Pascal لكنّني أظنّ أنّ سؤالكـ مُتعلّق بالكلمة المِفتاحيّة "is" فابحث عنها في وثائق اللغة المتوفّرة online وإن شاء الله يكون الحل من وراءها ،وعُذراً فالإنترنت لديّ رديءٌ هذه الأيام

Zaher

  • Hero Member
  • *****
  • Posts: 640
    • parmaja.org
Re: معرفة أدوات النموذج
« Reply #2 on: August 01, 2021, 10:37:27 pm »
و بعد ان تتعرف عليها ماذا تريد ان تفعل
السطر الاول يعطي المهمة المناسبة لك

Code: Pascal  [Select][+][-]
  1.       for J_FOR := 0 to varform.ComponentCount -1 do
  2.        Begin
  3.            if varform.Components[j_For] is TEdit then
  4.           begin
  5.                 (varform.Components[j_For] as TEdit).Text := '';
  6.           end;
  7.        end;
  8.  
« Last Edit: August 04, 2021, 01:45:52 am by trev »

nouzi

  • Moderator
  • Full Member
  • *****
  • Posts: 229
Re: معرفة أدوات النموذج
« Reply #3 on: August 01, 2021, 10:38:25 pm »
أو اهنيك أخ العيد على اول موضوع لك في القسم العربي
اتمنى ان يكون هناك نشاط أكثر من أجل استمرارية القسم
......................
بخصوص الكود عندي مدة و انا بعيد عن البرمجة الا من خلال الحوارات أو المحادثات في المواقع التواصل ،اخي لكن يبدو الكود معقد ، من وجهة نظري يمكن تحسين الشفرة
my english is  bad
Lazarus 2.0.6 free pascal 3.0.4
Lazarus trunk  free pascal trunk 
System : linux mint 19.3 64bit  windows 7 64bit

nouzi

  • Moderator
  • Full Member
  • *****
  • Posts: 229
Re: معرفة أدوات النموذج
« Reply #4 on: August 01, 2021, 10:39:05 pm »
اه سبقني الاخ زاهر ههههه
my english is  bad
Lazarus 2.0.6 free pascal 3.0.4
Lazarus trunk  free pascal trunk 
System : linux mint 19.3 64bit  windows 7 64bit

Al-Eid

  • New Member
  • *
  • Posts: 30
Re: معرفة أدوات النموذج
« Reply #5 on: August 03, 2021, 12:28:23 pm »
السلام عليكم
أسف على التأخر
و شكرا على المرور والإهتمام
الكود السابق مأخود من دلة تقوم بتفريغ الأدوات الموجودة في الفورم فإذكانت الأداة Edit يقوم بمسح محتواها وإذا كانت  comboboxيقوم يتغيير ItemIndex  إلى  -1  وهكذا

وبإختصار المفيد هذا الكود
Code: Pascal  [Select][+][-]
  1. form1.ComponentCount

يعطي لنا عدد الأدوات الموجودة في الفورم
والكود التالي يمكن أن نتعرف على نوع الأدوات
Code: Pascal  [Select][+][-]
  1. if form1.Components[0] is TEdit then  

ما اريده هو كود يمكن أن أتعرف على عدد لنوع واحد من الأدوات مع إمكانيتي التعامل معه
أي لا أحتاج أن أجلب عدد كل الأدوات الموجودة في الفورم وأبحث عن نوع كل أداة لأتعرف كيف أتعامل معها وشكرا
 
« Last Edit: August 03, 2021, 01:01:27 pm by Al-Eid »

nouzi

  • Moderator
  • Full Member
  • *****
  • Posts: 229
Re: معرفة أدوات النموذج
« Reply #6 on: August 03, 2021, 04:12:52 pm »
بعد تعديل كود أخ سامر لي يتوافق مع ما تريد

Code: Pascal  [Select][+][-]
  1. Tag := 0 ;
  2. for J_FOR := 0 to varform.ComponentCount -1 do
  3.        Begin
  4.            if varform.Components[j_For] is TEdit then
  5.           begin
  6.             Tag := tag +1   ;
  7.           end;
  8.        end;
  9.  
  10. showmessage (inttostr(tag);
  11.  
تستطيع التعديل على الكود حسب الحاجة واستعمل متغيير بدل
Tag
هذا لاني من الجوال
my english is  bad
Lazarus 2.0.6 free pascal 3.0.4
Lazarus trunk  free pascal trunk 
System : linux mint 19.3 64bit  windows 7 64bit

Al-Eid

  • New Member
  • *
  • Posts: 30
Re: معرفة أدوات النموذج
« Reply #7 on: August 04, 2021, 08:25:07 am »
بعد تعديل كود أخ سامر لي يتوافق مع ما تريد

Code: Pascal  [Select][+][-]
  1. Tag := 0 ;
  2. for J_FOR := 0 to varform.ComponentCount -1 do
  3.        Begin
  4.            if varform.Components[j_For] is TEdit then
  5.           begin
  6.             Tag := tag +1   ;
  7.           end;
  8.        end;
  9.  
  10. showmessage (inttostr(tag);
  11.  
تستطيع التعديل على الكود حسب الحاجة واستعمل متغيير بدل
Tag
هذا لاني من الجوال

بارك الله فيك أخي nouzi على المجهود يبدوا حسب إجابتك أنه لا يوجد ما أبحث عنه لأن هذا الكود يعطيني بالفعل عدد الأدوات للنوع الذي أبحث عنه ولكن ما كنت أقصده أن يكون عبارة عن سطر واحد فأستخرج عدد Edit أو عدد combobox أو عدد bitbtn بدون إستعمال For  و if
شكرا مرة ثانية وبارك الله فيك

nouzi

  • Moderator
  • Full Member
  • *****
  • Posts: 229
Re: معرفة أدوات النموذج
« Reply #8 on: August 04, 2021, 11:16:44 am »
أخ
@Al-Eid
ما فيه مشكلة، لا أعرف أن كان هناك مكتبة أو رمز آخر يؤدي الغرض المطلوب ، لكن من خلال الكود السابق تستطيع كتابة دالة "وظيفة " تقوم بالمطلوب وحسب ما تريد قليل من الجهد سوف تحصل على مرادك الأمر ليس صعب خصوص أن أغلب ما تريده موجود في الرمز السابق 
my english is  bad
Lazarus 2.0.6 free pascal 3.0.4
Lazarus trunk  free pascal trunk 
System : linux mint 19.3 64bit  windows 7 64bit

Al-Eid

  • New Member
  • *
  • Posts: 30
Re: معرفة أدوات النموذج
« Reply #9 on: August 04, 2021, 12:16:20 pm »
أخ
@Al-Eid
ما فيه مشكلة، لا أعرف أن كان هناك مكتبة أو رمز آخر يؤدي الغرض المطلوب ، لكن من خلال الكود السابق تستطيع كتابة دالة "وظيفة " تقوم بالمطلوب وحسب ما تريد قليل من الجهد سوف تحصل على مرادك الأمر ليس صعب خصوص أن أغلب ما تريده موجود في الرمز السابق

 
دالة  :-\   ::) نعم فكرة رائعة رغم أني أستخدم الدوال كثير إلا أني لم أفكر يذلك  :D :D  شكرا على التنبية
 

nouzi

  • Moderator
  • Full Member
  • *****
  • Posts: 229
Re: معرفة أدوات النموذج
« Reply #10 on: August 04, 2021, 03:38:35 pm »
لا تنسى مشاركتنا كود الدالة
my english is  bad
Lazarus 2.0.6 free pascal 3.0.4
Lazarus trunk  free pascal trunk 
System : linux mint 19.3 64bit  windows 7 64bit

Zaher

  • Hero Member
  • *****
  • Posts: 640
    • parmaja.org
Re: معرفة أدوات النموذج
« Reply #11 on: August 07, 2021, 12:13:00 pm »
تقدر تستعمل 
varform.ControlCount
varform.Controls

فهي اخف عدد و فقط للعناصر المرئية

Al-Eid

  • New Member
  • *
  • Posts: 30
Re: معرفة أدوات النموذج
« Reply #12 on: August 07, 2021, 12:44:49 pm »
تقدر تستعمل 
varform.ControlCount
varform.Controls

فهي اخف عدد و فقط للعناصر المرئية

بارك الله فيك على المعلومة  سوف أجربها لأرى هل أستطيع أن أستعملها في الدوال التي أفكر أن أنشئها

Al-Eid

  • New Member
  • *
  • Posts: 30
Re: معرفة أدوات النموذج
« Reply #13 on: August 11, 2021, 10:20:30 am »
السلام عليكم
قمت بإنشاء دوال كل دالة خاصة بأدة معينة أسمائها كالتالي
function FCountEdit(varform: TWinControl): Boolean ;
function FCountEdit2(varform: TWinControl): Boolean ;
function FCountLabel(varform: TWinControl): Boolean ;
function FCountCombobx(varform: TWinControl): Boolean ;
function FCountCombobx2(varform: TWinControl): Boolean ;
function FCountButton(varform: TWinControl): Boolean ;

الفرق بين FCountEdit و FCountEdit2 الأولى جربت معهاComponents والثانية جربت معها ControlCount وكذلك بالنسبة لـ FCountCombobx و FCountCombobx2
يمكن تنزيل ملف المرفق للتجريب  شرح الدالة موجود في FCountEdit وFCountEdit 2 هو نفسه ينطبق على على كل الدوال
ما لاحظته الفرق بين Components و ControlCount  أن الأولى تحضر كل الأدوات الموجودة في الفورم أما الثانية فإنها لا تحتسب الأدوات الموجودة في GroupBox أو Panel أو ....
هذاالتعليق موجه  للخبراء أولا لتصليح أخطائي فلست خبير في البرمجة وشكرا للجميع
« Last Edit: August 11, 2021, 10:26:47 am by Al-Eid »

nouzi

  • Moderator
  • Full Member
  • *****
  • Posts: 229
Re: معرفة أدوات النموذج
« Reply #14 on: August 11, 2021, 04:17:28 pm »
قبل تقديم اي ملاحظة ، الاول انشر الكود في أحد المواقع المخصصة إذا كان هذا ممكن لي يتسنى لي مراجعته مراجعته
my english is  bad
Lazarus 2.0.6 free pascal 3.0.4
Lazarus trunk  free pascal trunk 
System : linux mint 19.3 64bit  windows 7 64bit

 

TinyPortal © 2005-2018