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=198)



كيف أطبق هذا الكود على جميع النوافذ ؟ - delphi4you - 13-05-2008

السلام عليكم ورحمة الله وبركاته

لقد كنت أبحث في دلفي فذهبت الى منتدى الفريق العربي للبرمجه

ووجدت موضوعا عن كيفيه اخراج النافذه بشكل جميل

وهذا هو الكود إذا لم يخب ظني بأن الغالبيه يعرفونه من زوآر الفريق العربي قسم الدلفي
كود :
{ The AnimateWindow function enables you to produce special effects when showing or hiding windows. Mit der AnimateWindow Funktion kann man spezielle Effekte erzeugen beim Zeigen, Unsichtbarmachen (hide) einer Form. } procedure TForm1.Button1Click(Sender: TObject); begin Form2.BringToFront; AnimateWindow(Form2.Handle,Trackbar1.Position, AW_BLEND); Form2.Show; { The 3. parameter can be one or more of the following values: Der 3. parameter kan folgende Werte annehmen: AW_BLEND : Uses a fade effect AW_SLIDE : Uses slide animation. AW_ACTIVATE : Activates the window AW_HIDE : Hides the window. AW_CENTER : Makes the window appear to collapse inward AW_HOR_POSITIVE : Animates the window from left to right. AW_HOR_NEGATIVE : Animates the window from right to left AW_VER_POSITIVE : Animates the window from top to bottom AW_VER_NEGATIVE : Animates the window from bottom to top } end;

حسنا لدي برنآمج يتكون من 13 فورم أرغب بتطبيق الكود AW_BLEND في الأعلى على جميع النوآفذ

دون أن أذهب يدويا وأطبقه على كل نافذه

هل يستوجب أن أضيف شيئا الى القائمه uses وأين أضع الكود بالتحديد ؟

وجزآكم الله خيرا أجمعين


كيف أطبق هذا الكود على جميع النوافذ ؟ - merouane - 13-05-2008


إقتباس :دون أن أذهب يدويا وأطبقه على كل نافذه

وضح أكثر من فضلك



كيف أطبق هذا الكود على جميع النوافذ ؟ - delphi4you - 14-05-2008

أهلا وسهلا بك أخي مروآن

لنفرض أن لدي 13 اطارا او فورما ً

لكي أجعل كل اطار يظهر بشكل جميل لابد أن أضع هذا الكود في [ كل ]اطار من الاطارات الـ 13

هل توجد طريقه لكي أطبق هذا الكود على كل النوافذ الـ 13 من مرة واحد دون أن اذهب لكل فورم او اطار واكتب

داخله الكود اللي يظهره بشكل جميل ؟


كيف أطبق هذا الكود على جميع النوافذ ؟ - snyper - 14-05-2008

ممكن تستخدم الكود
كود :
var i: integer; begin for i:=1 to Application.ComponentCount -1 do begin if (Application.Components[i] is TForm) then begin Tform(Application.Components[i]).BringToFront; AnimateWindow(Tform(Application.Components[i]).Handle,Trackbar1.Position, AW_BLEND); Tform(Application.Components[i]).Show; end; end; end;



كيف أطبق هذا الكود على جميع النوافذ ؟ - delphi4you - 14-05-2008

شكرا لك أخي سنايبر

هل من الممكن أن تعطيني نفس الكود لاكن من دون أن يحتوي على Trackbar1

ولك ألف شكر


كيف أطبق هذا الكود على جميع النوافذ ؟ - snyper - 14-05-2008

يمكنك استبدال الـ(Trackbar1.Position) باي رقم بالميلي ثانية

اي 1000 تجعل ظهور الفورم اللاحقة يستغرق 1 ثانية

تعمل مثل sleep


كيف أطبق هذا الكود على جميع النوافذ ؟ - merouane - 14-05-2008

صراحة لم أفهم بالضبط ما تريد

لكن سأحاول الإجابة

توجد طريقة (الطرق تختلف من مبرمج إلى أخر) هي باستغلال غرضية التوجه في الدلفي و العمل مع OnShow

1. بعد إنشاء التطبيق

2. انشئ فورم جديد و اذهب إلى OnShow و اكتب ما تريد مثلا

كود :
procedure TForm2.FormShow(Sender: TObject); begin (Sender as TForm).BringToFront; AnimateWindow((sender as TForm).Handle,1000, AW_BLEND); end;
هذه الفورم لا تلمسها فقط الكود المضاف

3. أنشئ فورم اخرى ستكون Form3 (لا يهم يمكنك تغييره فقط عليك فهم المبدأ)

4. في السورس نغير ما يلي (لاحظ جيدا اللون الأزرق)

كود :
uses Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms, Dialogs, [color=Blue]unit2[/color]; type TForm3 = class([color=Blue]TForm2[/color])

هناك طريقة اتوماتيكية

[صورة: f9b1997.gif]

أنظر الصورة المرفقة المصغرة في حال عدم ظهور الصورة

العمليتين 3 و 4 تتكرران عند الحاجة لإنشاء فورم جديد

5. الآن في Form1 فقط ننادي الفورم التي نريدها بدون كتابة شفرة الظهور الخاصة
كود :
procedure TForm1.Button1Click(Sender: TObject); begin Form3.Show; end;

بالطبع المكونات تضاف للفورم الخاص به ولا تضاف إلى الفورم Form2

آمل أنه المطلوب

بالتوفيق Smile



كيف أطبق هذا الكود على جميع النوافذ ؟ - snyper - 14-05-2008

طريقة جميلة merouane

وتقوم بالعمل بالشكل المطلوب