PDA

View Full Version : چرا نمونه برنامه که یک lable چشمک زن که خودش به راحتی کار می کند در Splash فرم کار نمی کند؟



ali_abbasi22145
دوشنبه 06 خرداد 1387, 13:29 عصر
سلام
چرا نمونه برنامه كه يك lable چشمك زن كه خودش به راحتي كار مي كند در Splash فرم كار نمي كند؟
ضمنا نمونه برنامه در Attachment است و مثلا progressbar مي گذارم كار مي كند!
آيا روشي شما داريد كه بدون نوشتن كد در ONTimer يك Timer بتوان يك lable چشمك زن ايجاد كرد،شايد مشكلم اينجوري حل شود.
ضمنا نفرمائيد كه نمونه هاي برنامه Splash را جستجو كنم كه همه را نگاه كردم و هيكدام يك lable چشمك زن نداشت!
اينهم كدش اگر نمي خواهيدAttachment را باز كنيد:
////////////////////////////////////////
procedure TForm1.Timer1Timer(Sender: TObject);
begin
Timer1.Enabled := False;
Label1.Visible := False;
Timer2.Enabled := True;
end;
//////////////////////////////////////////
procedure TForm1.Timer2Timer(Sender: TObject);
begin
Timer2.Enabled := False;
Label1.Visible := True;
Timer1.Enabled := True;
end;

as13851365
دوشنبه 06 خرداد 1387, 16:45 عصر
اگر می خواهید نوشته ها در splash نشان داده بشه باید به صورت مرتب این Splash را Update کنید یا حداقل بعد از تغییر دادن نوشته فرمی را که به عنوان Splash انتخاب کردید یک بار Update کنید

FirstLine
دوشنبه 06 خرداد 1387, 19:17 عصر
با سلام
من برای اینچنین موردی از راه های زیر استفاده کردم ، شما هم اگه راه بهتر پیدا کردی بگو تا استفاده کنیم:
در تایمر مورد 1 یا 2 را قرار بده:


1- Label1.Refresh;
2- Application.ProcessMessages;

با تشکر

ali_abbasi22145
سه شنبه 07 خرداد 1387, 10:04 صبح
سلام
همه چيزهايي كه فرموديد تست كردم نشد!

ali_abbasi22145
شنبه 15 تیر 1387, 14:04 عصر
سلام
اصلا از شرء چشمك زن گذشتم ، چيزي شبيه به رنگ عوض كردن ليبل يا چيزي ديگر را شما پيشنهاد كنيد كه كاربر را مشغول خود كند تا برنامه كامل لود شود!

Hsimple11
شنبه 15 تیر 1387, 14:48 عصر
چرا از انیمیشنهای کوتاه و کم حجم استفاده نمیکنید؟ یک کنترل ActiveX برای نشان دادن فایلهای ShockWave نصب کنید و یک SWF کوتاه بسازید.

میتوانید مانند فوتوشاپ اسامی یا... را هم مرتب بصورت متنهایی در Splash خود بیاورید.

ali_abbasi22145
سه شنبه 18 تیر 1387, 09:41 صبح
سلام
>>میتوانید مانند فوتوشاپ اسامی یا... را هم مرتب بصورت متنهایی در Splash خود بیاورید.

چجوري اين حالتي كه مي گوييد مرتب بصورت متنهایی در Splash خود بیاوریم؟ ميتونيد بيشتر توضيح دهيد؟
چون روش فتوشاپ روش خوبي است.

Hsimple11
سه شنبه 18 تیر 1387, 12:41 عصر
می توانید نوشته های مورد نظر را در یک StringList ریخته و بعد با یک Timer آنها را با فواصل کوتاه در یک Label در Splash Form خود بریزید.

ali_abbasi22145
سه شنبه 18 تیر 1387, 13:52 عصر
می توانید نوشته های مورد نظر را در یک StringList ریخته و بعد با یک Timer آنها را با فواصل کوتاه در یک Label در Splash Form خود بریزید.

با تايمر مشكلي ندارم ولي شايد اين سوالم ساده باشد من تا حال با StringList كارنكردم ميشه يك مثال از چيزي كه گفتيد بزنيد.

Hsimple11
سه شنبه 18 تیر 1387, 19:24 عصر
کلاس TStrings در واقع Parent مربوط به TStringList است. شما نمیتوانید از کلاس TSrings استفاده کنید چون این کلاس بصورت Abstract تعریف شده است و بجای آن از TStringList استفاده میکنید. میتوانید رشته های مختلف را در یک StringList ذخیره کرده و همانند آرایه ها به هرکدام از رشته ها جداگانه دسترسی پیدا کنید. مثلا :


var
s : TStringList;
i : integer;
begin
s := TStringList.Create;
try
s.Add('Animals');
s.Add('Flowers');
s.Add('Cars');
Memo1.Lines.AddStrings(s);
finally
s.Free;
end;

mjdeveloper
شنبه 22 تیر 1387, 01:47 صبح
به طور مثال:

var
splash: Tfm_Splash;
begin
splash:= TFm_splash.Create(Application);
with splash do
try
screen.Cursor := crsqlwait;
Show;
Application.Initialize;
Update;
Label1.Caption:='Application Starting...';
application.ProcessMessages;
Label1.Caption:='Initialize...';
Application.ProcessMessages;

Label1.Caption:='MainForm...';
Application.ProcessMessages;
Application.Title := 'سيستم فلان';
Application.CreateForm(TFm_Login, Fm_Login);
Application.CreateForm(TDm, Dm);
Application.CreateForm(TDm2, Dm2);
Application.CreateForm(TFm_main, Fm_main);
Label1.Caption:='Managing Data...';
Application.ProcessMessages;
// Sleep(400);
Label1.Caption:='Tools...';
Application.ProcessMessages;
// sleep(400);
Application.CreateForm(TFm_Tools, Fm_Tools);
Label1.Caption:='needful Forms...';
Application.ProcessMessages;
// sleep(400);
Application.CreateForm(TFm_RegGuestIO, Fm_RegGuestIO);
Application.CreateForm(TFm_RegPerIO, Fm_RegPerIO);
Application.CreateForm(TFm_PerCarIO, Fm_PerCarIO);
// Sleep(400);
finally
splash.Free;
screen.Cursor := crDefault;
end;
Application.Run;
end.

ali_abbasi22145
یک شنبه 23 تیر 1387, 12:46 عصر
سلام و تشكر
sringlist اقاي Hsimple11 را چك كردم و وقتي spalsh فعال مي شد sringlist هم غيرفعال مي شد و همان در يك مثال معمولي گذاشتم كار مي كرد , update,refresh را هم چك كردم.
و از آقاي Hsimple11 متشكرم چون sringlist خوب ياد گرفتم.

روش آقاي mjdeveloper هم را ميرم كه تست كنم.

ali_abbasi22145
یک شنبه 23 تیر 1387, 13:47 عصر
سلام
آقاي mjdeveloper اين كد را در project\View source برنامه بنويسم يا oncreat فرم اصلي(به نظر مي آيد كه project\View source برنامه است)؟

مي توانيد لطف نموده يك با مثال دلفي اينجا نشان دهيد؟
چون يكسري خطا مي داد وقتي در project\View source گذاشتم فكر كنم به يكسري uses احتياج دارد.
خطا در خطهاي زير مي داد:
var
splash: Tfm_Splash;

screen.Cursor := crsqlwait;

Hsimple11
یک شنبه 23 تیر 1387, 16:27 عصر
وقتي spalsh فعال مي شد sringlist هم غيرفعال مي شد و همان در يك مثال معمولي گذاشتم كار مي كرد , update,refresh را هم چك كردم.

یعنی چی وقتی Splash فعال میشد StringList هم غیرفعال میشد؟ لطفا کدی را که نوشتید کاملتر توضیح بدید. از تایمر استفاده کنید.


فكر كنم به يكسري uses احتياج دارد.
خطا در خطهاي زير مي داد:
var
splash: Tfm_Splash;

کلاسی به این نام در دلفی وجود ندارد! این کلاس باید قبلا تعریف شود. احتمالا کد آن قسمت فراموش شده است که گذاشته شود. ولی میتوانید برای فرم Splash خود یک کلاس تعریف کنید. میتوانید همان TForm را بجایش استفاده کنید.


screen.Cursor := crsqlwait;

نوع Cursor شما است که در زمان نشان داده شدن فرم Splash به چه شکلی باشد که اهمیتی ندارد. این متد جزو کلاس Controls یا QControls است. آنها را به لیست یونیتهای خود اضافه کنید.

موفق باشید...

mjdeveloper
سه شنبه 25 تیر 1387, 18:33 عصر
با سلام
شما باید یک فرم به نام Fm_Splash یا هر چیز دیگری به پروژه خود اضافه نموده و آن فرم رو از Project>option> Form به قسمت Available Forms ببرید بعد از ساخت اون فرم که Splash شما خواهد بود دیگه Error نمیده.
این کدی رو هم که من گذاشتم اینجا باید توی Project Source بنویسید.

معذرت می خوام که کمی مبهم بود ببخشید.:چشمک:

mjdeveloper
سه شنبه 25 تیر 1387, 18:44 عصر
این هم یه نمونه Splsh برای شما