PDA

View Full Version : نمايش چندين عكس در اجرای splash form



Tarrah
جمعه 13 خرداد 1384, 16:13 عصر
سلام
برا برنامم یه splash form طراحی کردم . یه عکس به عنوان پس زمینه به اندازه فرم هم گذاشتم روش.
و با یک تایمر یه تیکه code نوشتم که جای چند تا عکس دیگه رو این فرم عوض کنه.
ولی موقع اجرا فقط عکس پس زمینه میادو دستوره تایمر اجرا نمیشه.
لازم به ذکره که از درستی برنامه تایمر مطمئنم.پس مشکل کار از کجاست؟
دستوراتی هم که تو source برا اجرای splash form نوشتم اینجوریه:

uses
Forms,
sysutils,
main in 'main.pas' {mainf},
splash in 'splash.pas' {splashf};

{$R *.res}

begin
splashf:=tsplashf.Create(application);
splashf.Show;
splashf.Update;
sleep(1000);
Application.Initialize;
Application.CreateForm(Tmainf, mainf);
Application.CreateForm(Tsplashf, splashf);
splashf.Hide;
splashf.Free;
Application.Run;
end.[/code]

Delphi Skyline
جمعه 13 خرداد 1384, 18:22 عصر
چرا اینقدر سخت میری

اول تو form2 هر چی می خوای به عنوان splash طراحی کن . (طراحی ساده فرم . مثل همیشه)

بعد برای پروژه ات اینو بنویس :


program Project1;

uses
Forms,SysUtils,
Unit1 in 'Unit1.pas' {Form1},
Unit2 in 'Unit2.pas' {Form2};

{$R *.res}

begin
Application.Initialize;
Application.CreateForm(TForm1, Form1);
Application.CreateForm(TForm2, Form2);
form2.Show;
form2.Update;
sleep(3000);
form2.Close;
form2.Free;
Application.Run;
end.


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

Tarrah
جمعه 13 خرداد 1384, 19:51 عصر
آقای فرح بخش عزیز
code دوتامونم تقریبا یکیه. form1=mainf و form2=splashf
با این همه من code شما رو هم امتحان کردم.بازهم timer رو فرم splash کار نمی کنه. :(

Delphi Skyline
جمعه 13 خرداد 1384, 22:26 عصر
آقای فرح بخش عزیز
code دوتامونم تقریبا یکیه. form1=mainf و form2=splashf
با این همه من code شما رو هم امتحان کردم.بازهم timer رو فرم splash کار نمی کنه.

اگر برنامه component writer1.0 من رو دیده باشی میبینی که می خیلی راحت از تایمر در splash استفاده کردم .
موفق باشی . مهرداد فرخ منش :wink:

Tarrah
جمعه 13 خرداد 1384, 22:54 عصر
timer برا بستن فرم عمل می کنه ولی با برنامه ای که من نوشتم کار نمی کنه :گیج:

vcldeveloper
شنبه 14 خرداد 1384, 02:28 صبح
وقتی از کد زیز استفاده کردید:


splashf:=tsplashf.Create(application);
splashf.Show;

دیگه نیازی به این نیست:


Application.CreateForm(Tsplashf, splashf);

اگه از هر دو تا کد بالا استفاده کنید، یکی از فرمها free نمیشه و یک نشت حافظه بوجود میاد.

Tarrah
شنبه 14 خرداد 1384, 22:51 عصر
آقای کشاورز سلام
کاری رو که گفتین انجام دادم ولی بازم مشکل حل نشد.
کدی که برا تایمری که رو splash فرم هست نوشتم اینه :

if i=1 then
begin
image2.Picture.LoadFromFile('pics/2.jpg');
image3.Picture.LoadFromFile('pics/1.jpg');
i:=2;
end
else
if i=2 then
begin
image2.Picture.LoadFromFile('pics/3.jpg');
image4.Picture.LoadFromFile('pics/2.jpg');
i:=3;
end
else
if i=3 then
begin
image2.Picture.LoadFromFile('pics/4.jpg');
image5.Picture.LoadFromFile('pics/3.jpg');
i:=4;
end
else
if i=4 then
begin
image2.Picture.LoadFromFile('pics/5.jpg');
image6.Picture.LoadFromFile('pics/4.jpg');
end

vcldeveloper
دوشنبه 16 خرداد 1384, 01:57 صبح
کاری رو که گفتین انجام دادم ولی بازم مشکل حل نشد.
کاری که من در بالا گفتم برای جلوگیری از نشت حافظه در کد شما بود و ربطی به سوال شما نداشت.


کدی که برا تایمری که رو splash فرم هست نوشتم اینه
کد بالا مشکلی نداره، ولی امیدوارم که 1- خاصیت Active تایمر رو True کرده باشید و 2- مقدار Interval خیلی پایین نباشه (برای آزمایش می تونید اونو روی 3000 تنظیم کنید).

Inprise
دوشنبه 16 خرداد 1384, 02:41 صبح
مادامیکه Timer ات از Thread اصلی فرم ات استفاده میکنه ( که بصورت پیش فرض کلاس Timer همینطوره ) احتمالا" همین مشکل رو خواهی داشت . راه حل ؟ باید دقیقا" بنویسی تایمر قراره چه کمکی بهت بکنه تا یه جواب خوب بگیری .

Tarrah
دوشنبه 16 خرداد 1384, 09:36 صبح
سلام

باید دقیقا" بنویسی تایمر قراره چه کمکی بهت بکنه
ببینین تایمر image هایی رو به صفحه اضافه می کنه . کار خاصی نمی کنه . یه حالت گرافیکی . :)


کد بالا مشکلی نداره، ولی امیدوارم که 1- خاصیت Active تایمر رو True کرده باشید و 2- مقدار Interval خیلی پایین نباشه (برای آزمایش می تونید اونو روی 3000 تنظیم کنید).
کل فرم با برنامش هیچ مشکلی نداره چون وقتی فرم رو به عنوان یه فرم معمولی و نه splash تو برنامه اجرا می کنم نتیجه درسته . :confy2:

kamyar_kimiyabeigi
سه شنبه 17 خرداد 1384, 15:25 عصر
نمی دونم ولی فکر کنم اگر بجای refresh از Application.ProcessMessages استفاده کنین درست بشه

Tarrah
سه شنبه 17 خرداد 1384, 15:38 عصر
نمی دونم ولی فکر کنم اگر بجای refresh از Application.ProcessMessages استفاده کنین درست بشه
refresh?

kamyar_kimiyabeigi
سه شنبه 17 خرداد 1384, 15:51 عصر
منظورم بجای splashf.Update بود