delphi4arab منتديات دلفي للعرب
كيف أختصر هذا الكود؟ - نسخة قابلة للطباعة

+- delphi4arab منتديات دلفي للعرب (https://delphi4arab.net/forum)
+-- قسم : منتديات دلفي للعرب التعليمية (https://delphi4arab.net/forum/forumdisplay.php?fid=3)
+--- قسم : سؤال و جواب حول دلفي (https://delphi4arab.net/forum/forumdisplay.php?fid=15)
+--- الموضوع : كيف أختصر هذا الكود؟ (/showthread.php?tid=11534)

الصفحات: 1 2


كيف أختصر هذا الكود؟ - ALG2009 - 30-09-2021

السلام عليكم

هل يمكن إختصار هذا الكود؟

كود :
procedure TForm2.SpeedButton1Click(Sender: TObject); begin if panel1.tag =0 then   begin    panel1.Height:=345;    panel1.Tag:=1;    panel2.Height:=40;    panel2.Tag:=0;    panel3.Height:=40;    panel3.Tag:=0;    panel4.Height:=40;    panel4.Tag:=0;   end else   begin    panel1.Height:=40;    panel1.Tag:=0;   end; end; procedure TForm2.SpeedButton2Click(Sender: TObject); begin if panel2.tag =0 then   begin    panel1.Height:=40;    panel1.Tag:=0;    panel2.Height:=345;    panel2.Tag:=1;    panel3.Height:=40;    panel3.Tag:=0;    panel4.Height:=40;    panel4.Tag:=0;   end else   begin    panel2.Height:=40;    panel2.Tag:=0;   end; end; procedure TForm2.SpeedButton3Click(Sender: TObject); begin if panel3.tag =0 then   begin    panel1.Height:=40;    panel1.Tag:=0;    panel2.Height:=40;    panel2.Tag:=0;    panel3.Height:=345;    panel3.Tag:=1;    panel4.Height:=40;    panel4.Tag:=0;   end else   begin    panel3.Height:=40;    panel3.Tag:=0;   end; end; procedure TForm2.SpeedButton4Click(Sender: TObject); begin if panel4.tag =0 then   begin    panel1.Height:=40;    panel1.Tag:=0;    panel2.Height:=40;    panel2.Tag:=0;    panel3.Height:=40;    panel3.Tag:=0;    panel4.Height:=345;    panel4.Tag:=1;   end else   begin    panel4.Height:=40;    panel4.Tag:=0;   end; end;



RE: كيف أختصر هذا الكود؟ - لؤي - 30-09-2021

السلام عليكم

لما لا تستعمل :
PHP كود :
Case then 



RE: كيف أختصر هذا الكود؟ - ALG2009 - 30-09-2021

كيف تستخدم Case وكل كود في زر (button)

مع العلم أن هذه الازرار والبانل الخاص بها موجودون داخل بانل Panel مشترك
ممكن يكون الاختصار بشئ مثل If panel is sender أو مثل هذا القبيل لأني حاولت فهم السندر وتطبيقاتها ولم أستطع


RE: كيف أختصر هذا الكود؟ - S.FATEH - 30-09-2021

السلام عليكم

يمكنك استخدام الـ Sender


RE: كيف أختصر هذا الكود؟ - ALG2009 - 30-09-2021

(30-09-2021, 03:03 PM)S.FATEH كتب : السلام عليكم

يمكنك استخدام الـ Sender

مشكلتي مع الـ Sender أني لم أفهمه
من يرسل الأمر هل هو الزر الـ Panel كيف يعمل الساندر هذا ما لم  أفهمه


RE: كيف أختصر هذا الكود؟ - AX302 - 30-09-2021

السلام عليكم 

كود :
procedure ResizePanels(CheckedPanel : TPanel; ChangedPanels : array of TPanel; ChangedPanelsHeights : array of Integer; ChangedPanelsTagss : array of Integer); begin   if CheckedPanel.Tag = 0 then     begin       for var I := Low(ChangedPanels) to High(ChangedPanels) do         begin           ChangedPanels[I].Height := ChangedPanelsHeights[I];           ChangedPanels[I].Tag    := ChangedPanelsTagss[I];         end;     end   else     begin       CheckedPanel.Height := 40;       CheckedPanel.Tag    := 0;     end; end;


طريقة الاستعمال 

كود :
procedure TForm1.Button1Click(Sender: TObject); begin   ResizePanels(panel1, [panel1, panel2, panel3, panel4], [345, 40, 40, 40], [1, 0, 0, 0]); end;


كما يمكنك استعمال Sender


RE: كيف أختصر هذا الكود؟ - ALG2009 - 01-10-2021

جزاك الله خيرا
الطريقة فعالة وتعمل

وأتمنى أن أطلع على كيفية عملها بالـ Sender


RE: كيف أختصر هذا الكود؟ - AX302 - 01-10-2021

(01-10-2021, 01:09 AM)ALG2009 كتب : جزاك الله خيرا
الطريقة فعالة وتعمل

وأتمنى أن أطلع على كيفية عملها بالـ Sender

طريقة عمل Sender جد بسيطة فهو مجرد برامتر من نوع TObject , يمكنك الاستعانة به لاكنك سوف تقع في مشكل التكرار عن طريق ال IF / AS , ادا كنت تريد استعماله فوق قم بعمل Select للازرار التي تريد تغيير حجم Panels بها كما في الصورة ادناه و في حدث OnClick اضغط مرتين لانتاج Method يقوم بمناداتها كل الازرار التي عملت لها Selection بعدها مجرد استعمال لل IF داخل هاته Method.

كود :
if Sender = Button1 then

كود :
if Sender as TButton then


[صورة: CwrLfLS.png]


RE: كيف أختصر هذا الكود؟ - ALG2009 - 01-10-2021

الله يرضى عليك وزادك الله خيرا وزادك من علمه
شكرا جزيلا AX302


RE: كيف أختصر هذا الكود؟ - ferrero - 01-10-2021

[صورة: I6Ob5a1.jpeg]