PDA

View Full Version : بارگذاری و load سریع برنامه



hamid-nic
شنبه 02 آبان 1388, 21:46 عصر
سلام دوستان وقتتان بخیر
در حال طراحی یک برنامه هستم که با دلفی 7 و sql server 2000 کار کردم . نسبتاً برنامه ی سنگینی است .
مشکل اینجاست که موقع اجرای اولیه (از روی دسکتاپ) چند ثانیه ای طول می کشه تا اولین Form برای کابر نمایش داده بشه . می خواهم به محض اجرا بتونم صفحه ای به کابر نشون بدم که برنامه اجرا شده و سپس برنامه مراحل بارگذاری را انجام دهد نه اینکه کل برنامه load بشه بعد اولین Form را نشان بدهد بعد از چند ثانیه تاخیر ؟
دوستان راهنمایی کنید .
از جست و جو هم چیزی حاصل نشد .
ممنون

Felony
شنبه 02 آبان 1388, 21:56 عصر
در مورد SplashScreen تحقیق کنید .

hamid-nic
شنبه 02 آبان 1388, 22:07 عصر
در مورد SplashScreen تحقیق کنید .
دوست عزیز در سایت جست و جو کردم چیزی در این مورد در محیط دلفی پیدا نکردم شاید کلمات کلیدی مناسب استفاده نکردم .
میشه کمک کنید

mossaferin
شنبه 02 آبان 1388, 22:13 عصر
program Project1;
uses
Forms,
Windows,
Unit1 in 'Unit1.pas' {Form1},
Unit2 in 'Unit2.pas' {SplashScreen};
{$R *.RES}
begin
SplashScreen := TSplashScreen.Create(Application);
try
SplashScreen.Show;
Application.Initialize;
SplashScreen.Update;
Sleep(1000); // Or a delay command.
Application.CreateForm(TForm1, Form1);
SplashScreen.Hide;
finally
SplashScreen.Free;
end;
Application.Run;
end.

Felony
شنبه 02 آبان 1388, 22:26 عصر
program Project1;
uses
Forms,
Windows,
Unit1 in 'Unit1.pas' {Form1},
Unit2 in 'Unit2.pas' {SplashScreen};
{$R *.RES}
begin
SplashScreen := TSplashScreen.Create(Application);
try
SplashScreen.Show;
Application.Initialize;
SplashScreen.Update;
Sleep(1000); // Or a delay command.
Application.CreateForm(TForm1, Form1);
SplashScreen.Hide;
finally
SplashScreen.Free;
end;
Application.Run;
end.


کد شما مشکل داره ، تا جایی که یادمه کلاسی به نام TSplashScreen وجود نداره ، شاید شما هم کد رو به عنوان نمونه گزاشتید و منظورتون از TSplashScreen نام فرم مورد نظر به عنوان SplashScreen بوده ، در هر صورت این کد کامل با کمی تغییر برای عملکرد واقعی تر :


program Project1;

uses
Forms,
Windows,
Unit1 in 'Unit1.pas' {Form1};

{$R *.res}
var
SplashScreen:TForm;
begin
SplashScreen := TForm.Create(Application);
try
SplashScreen.Show;
Application.Initialize;
SplashScreen.Update;
SplashScreen.Position:=poScreenCenter;
SplashScreen.BorderStyle:=bsNone;

Sleep(1000); // Or a delay command.

Application.CreateForm(TForm1, Form1);
//Application.CreateForm(TForm2, Form2);
SplashScreen.Hide;
finally
SplashScreen.Free;
end;
Application.Run;
end.

mossaferin
شنبه 02 آبان 1388, 23:47 عصر
کد شما مشکل داره ، تا جایی که یادمه کلاسی به نام TSplashScreen وجود نداره ، شاید شما هم کد رو به عنوان نمونه گزاشتید و منظورتون از TSplashScreen نام فرم مورد نظر به عنوان SplashScreen بوده ، در هر صورت این کد کامل با کمی تغییر برای عملکرد واقعی تر :



کد تست شده ، مشکلی نداره
TSplashScreen نام فرم دوم خواهد بود ، و نیاز به کار خاصی نداره ، برای اینکه مطمئن بشید ، یک پروژه با دوتا فرم باز کنید و نام فرم دوم را SplashScreen قرار دهید و عین کد رو درون پروژه کپی کرده و اجرا کنید.

البته اون طوری که شما هم فرمودید امکان پذیره

موفق باشی

hamid-nic
یک شنبه 03 آبان 1388, 01:08 صبح
ببخشید من الان این کد را کجا باید استفاده کنم
منظورم کدوم فرمه ؟
آیا باید فرمی ایجاد کنم یا ... . ؟

Felony
یک شنبه 03 آبان 1388, 05:07 صبح
کد تست شده ، مشکلی نداره
TSplashScreen نام فرم دوم خواهد بود ، و نیاز به کار خاصی نداره ، برای اینکه مطمئن بشید ، یک پروژه با دوتا فرم باز کنید و نام فرم دوم را SplashScreen قرار دهید و عین کد رو درون پروژه کپی کرده و اجرا کنید.

البته اون طوری که شما هم فرمودید امکان پذیره

موفق باشی
پس شما SplashScreen رو یه فرم تو برنامه در نظر گرفتین ، کد من فرم اضافی نمیخواد و همون موقع یه فرم به عنوان SplashScreen میسازه و نمایش میده ، در هر صورت هر دو کد کارتون رو راه میندازه ، البته این رو هم بگم که کد من چون فرم رو به صورت Runtime ایجاد میکنه اگر بخواین عکس یا ... بهش اضافه کنید باید اون ها رو هم به صورت Runtime ایجاد کنید و کدنویسیتون بیشتر میشه .


ببخشید من الان این کد را کجا باید استفاده کنم
منظورم کدوم فرمه ؟
آیا باید فرمی ایجاد کنم یا ... . ؟
این کد رو باید تو فایل dpr پروژتون اضافه کنید ، البته دقت کنید که باید تمام فرم هایی که داره موقع اجرای برنامه به طور اتوماتیک ساخته میشه رو داخل کد بیارید .