كيف أصنع شاشه ترحيبيه لبرآمجي ؟
#11
أضف windows بعد Forms
كود :
uses Forms, [color=Red]windows[/color],

هذا السطر مكرر احذف أحدهما
كود :
Application.CreateForm(TForm1, Form1);
لست بحاجة إلى هذا السطر
كود :
Application.CreateForm(TSplashscreen, Splashscreen);
الرد
#12
professor DeXTeR كتب :جرب وضع هذه التعلميه

ما هذا !!! هده برمجة وليس حقل تجارب

bilgads كتب :يا أخي يجب عليك ان لا تدع فراغ بين sleep والقوس
يا اخي يمكن وصع فراغ او عشرة دلفي يهمل الفراغات والمسافات

يا جماعة من لا يعرف لا يجيب ويترك السؤال لغيره
صاحب السؤال يريد التعلم فلا تزيدوه اخطاء وتدخلوه في متاهات

delphi4arab كتب :[صورة: 18N22836.png]

Sleep معرفة في Windows
والخطأ بالصورة لانك نست كتابة Windows في Uses مباشرة تحت Forms

1000 تعني ثانية
لكي يظهر SlpashScreen ثلاث ثوان مثلا غيرها ب3000

الرد
#13
نعم يجب إضافة windows إلى uses لكي تعمل الوظيفة sleep.
من تشبه بقوم فهو منهم
الرد
#14
تعليمة sleep موجودة في المكتبتين SysUtils و Windows
لكن هل من فرق بينهما الاثنين من kernel32
الرد
#15
السلام عليكم

snyper كتب :تعليمة sleep موجودة في المكتبتين SysUtils و Windows
لكن هل من فرق بينهما

طبعا يوجد فرق (لا شيء مكرر) .. واشكرك على دقة ملاحظتك
سأشرح بطريقتين : الاولى بديهية ، والثانية تجربة توضيحية

بيديهيا:
نفتح الوحدتين SysUtils و Windows (وذلك بـ CTRL + الضغط بالزر الأيسر للفأرة على كلمة SysUtils - نفس الشيء لـ Windows ) ثم نقرأ ما كتب من طرف الشركة على رأس الملفين.
كود :
SysUtils : [align=center][COLOR=Blue]Delphi / Kylix Cross-Platform Runtime Library System Utilities Unit [/COLOR] Copyright (c) 1995-2002 Borland Softwrare Corporation [/align]

كود :
Windows : [align=center][COLOR=Blue]Borland Delphi Run-time Library Win32 API Interface Unit[/COLOR] Copyright (c) 1985-1999, Microsoft Corporation Translator: Borland Software Corporation[/align]

لاحظ اللون الأزرق، والمعنى
الأولى تتضمن إرجراءات خاصة بدلفي (هنا نستطيع الاستقلال عن ويندوز)، والثانية تتضمن إجراءات النظام أي API

لنلقي نظرة على المضمون
كود :
SysUtils : [color=SeaGreen]{$IFDEF MSWINDOWS}[/color] [color=Blue]في حال كان البرنامج يعمل تحت نظام ويندوز[/color] procedure Sleep; external kernel32 name 'Sleep'; stdcall; [color=Blue]هنا نستدعي إجراء النظام العادي[/color] [color=SeaGreen]{$ENDIF} [COLOR=Blue]أو[/color] {$IFDEF LINUX}[/COLOR] [color=Blue]في حال كان البرنامج يعمل تحت نظام لينكس[/color] procedure Sleep(milliseconds: Cardinal); begin usleep(milliseconds * 1000); [color=Blue]// usleep is in microseconds[/color] [color=Blue]اما هنا خاص بالنظام لينكس[/color] end; [color=SeaGreen]{$ENDIF}[/color]

كود :
Windows : procedure Sleep; external kernel32 name 'Sleep'; [color=Blue]استدعاء إجراء النظام ويندوز فقط[/color]

هذا بالطريقة البديهية عن طريق استكشاف VCL

الأن عن طريق التجريب ، وفي الحقيقة قد تنفع كدرس في استعمال الوحدات، لكن اكتفي بوضعها هنا كرد.
لا توجد مشكلة مع Sleep لأنها في الوحدتين تستعملا نفس الإجراء .. لكن هناك مثال سيرينا الفرق.
لنعمل مع الإجراء Beep ، وللعلم هناك إجرائين Beep و ( Beep (dwFreq, dwDuration
وفي الأغلب نحن نستعمل الأولى.. لماذا ؟؟ لأنه
كود :
uses Windows, [color=Blue]سبقت[/color] SysUtils, [color=Blue]تلغي الأولى[/color]

الأن جرب و أكتب (مع العلم أن Windows API يذكر لنا أن Beep تأخذ متغيرين كما - ( Beep (dwFreq, dwDuration -)
كود :
uses Windows, SysUtils,

وضع الإجراء التالي عند الضغط على زر
كود :
procedure TForm1.Button1Click(Sender: TObject); begin Beep(400,100); end;

ستفاجأ بخطا في التجميع Compilation وذلك بسبب أن الوحدة المذكورة أولا ستطغى عليها (أو تلغيها) الوحدة التالية ، الأن جرب
كود :
uses SysUtils,Windows, . . . . . . . . . . . . . . procedure TForm1.Button1Click(Sender: TObject); begin Beep(400,100); end;

الآن كل شيء يعمل . هنا أشعر انه قد يختلط الامر على البعض سأوضح

( Beep (400, 100 تابعة للوحدة windows وهذه الوحدة مذكورة بعد SysUtils أي تلغيها
ومنه دلفي سيستعمل الإجراء الخاص بالوندوز ولن يأخذ بعين الاعتبار نظام التشغيل.
هذا مثال فقط ، و لكن لو كان لدينا إجراءات متداخلة بحيث لا نضمن انها لن تلغى من وحدة ما

اي بعبارة اخرى نحن نوجه دلفي أين نريد
كود :
uses Windows, SysUtils, . . . . .. . . . . . . . . . . . . . . . . . . . . procedure TForm1.Button1Click(Sender: TObject); begin Windows.Beep(400,100); end; procedure TForm1.Button2Click(Sender: TObject); begin SysUtils.Beep; end;

بهذه الطريقة لن تحدث أي مشاكل
عذرا للإطالة لانني فقط أحب عندما يتوفر لي الوقت ان أتقن و .. اعلًّم الاصطياد بدل تقديم السمكة.
تحياتي Smile
[-] كل من 1 user says قال شكرا ل merouane على المشاركة المفيدة
  • ELARAPY
الرد
#16
شكرا على الايضاح وكن عند ضغط CTRL + الضغط بالزر الأيمن للفأرة على كلمة sleep or Beep نجد انه ينقلنا الى مكتبة SysUtils الخاصة بدلي ولا ينقلنا الى مكتبة windows اي يولي الاهمية الى مكتبة ديلفي
فلماذا عند اجراء المثال الاول يعطي خطاء في التجميع بمعنى اوضح لماذا يقوم ديلفي بربطها بالمكتبة الثانية
الرد
#17
snyper كتب :وكن عند ضغط CTRL + الضغط بالزر الأيمن للفأرة على كلمة sleep or Beep نجد انه ينقلنا الى مكتبة SysUtils الخاصة بدلي ولا ينقلنا الى مكتبة windows اي يولي الاهمية الى مكتبة ديلفي

جرب ضع SysUtils قبل windows ثم اضغط على sleep or Beep سيأخذك إلى windows.

إقتباس :فلماذا عند اجراء المثال الاول يعطي خطاء في التجميع

بمعنى اوضح لماذا يقوم ديلفي بربطها بالمكتبة الثانية

لم أفهم السؤال ؟؟

Ala2 VB كتب :http://devala2.wordpress.com/2008/04...splash_screen/

ما قمت به صحيح .. لكن Form1 ستاخذ دائما حيزا في الذاكرة - تخيل شاشة ترحيبية تحتوي صورة ذات دقة عالية أو فيديو أو فلاش.. ألن تريد التخلص من الحجز غير النافع للذاكرة

وأيضا قد تواجه بعض المشاكل -حسب البرمجة- لأن رأس البرنامج سيكون Form1 المخفية ، ونعلم في أغلب البرمجات البسيطة إذا تعطل الرأس ذهب البدن

والسلام
الرد


التنقل السريع :


يقوم بقرائة الموضوع: بالاضافة الى ( 1 ) ضيف كريم