PDA

نسخه کامل مشاهده نسخه کامل : ایجاد دو فرم در دلفی



meghdad23
23-07-2006, 10:43
با سلام
من می خواهم در برنامه ام دو فرم داشته باشم ولی وقتی فرم 2 را ایجاد می کنم و در فرم یک می خواهم بنویسم که فرم 2 ظاهر شود پیغام خطا می دهد لطفا انجام این کار را برایم توضیح دهید

NoneForce
23-07-2006, 10:57
سلام
ميشه پيغام خطا را ذكر كنيد

مرد مباح
23-07-2006, 12:02
ميشه لطفا فرماني رو كه استفاده كردين هم بنويسيد؟

soldier
23-07-2006, 21:01
سلام
احتمالآ اسم فرم رو درست نمي نويسي

meghdad23
24-07-2006, 17:07
با عرض سلام خدمت همه دوستان
ببینید من می خواستم اگر برای شما زحمتی نیست طریقه ایجاد دو فرم و استفاده از آن را برایم بنویسید
مثلا در ویزوال بیسیک برای ظاهر شدن فرم دو می نوشتیم form2.show و فرم دو ظاهر می شد
حالا طریقه اینکار در دلفی را برایم بنویسید
ببخشید اگه من تازه کار هستم
meghdad23

MasterData
24-07-2006, 18:46
فرم دوم رو توي فرم اول use كنيد و با متد formname.show يا formname.showmodal اون رو نمايش بدين

مرد مباح
24-07-2006, 18:51
معمولا از ShowModalاستفاده ميشه.
فرمان Show باعث ميشه كه فقط نشون داده بشه و يا كار نميكنه و يا فرم اوليه نيز فعال باقي ميمونه.

soldier
25-07-2006, 12:21
سلام
این دو فرمان فرق دارند
اگر خطا میده که اسم فرم رو اشتباه نوشتی
اما اگر درست نوشتی یه بار خطا میده بعد اگر ok
رو زدی درست میشه.اون خطا نیست بلکه می پرسه
می خواهی این فرم رو به این فرم معرفی کنم؟
خوب فرمان show فقط اون فرم رو نمایش میده
اما showmedal اینه که تا وقتی که فرمی رد نشده
به فرم های دیگه نمی تونی بری! معمولآ برای پسور یا
گذاشتن رمز و قفل استفاده میشه.

hp1361
26-07-2006, 20:00
سلام

سولجر عزيز يه سوالي دارم كه به موضوع اين تاپيك مربوط ميشه

من براي اينكه از چند فرم استفاده كنم اين روش رو استفاده مي كنم لطفا كاركرد هاي اين دستورات رو در صورت امكان توضيح بدين و بگين كه ايا درست هست كه از اين روش استفاده بشه يا نه؟

بعد از اينكه چند فرم رو ايجاد كردم به منوي پروژه رفته و گزينه اپشن رو انتخاب مي كنم
در پنجره ظاهر شده فرم اصلي ام رو از كومبو باكس انتخاب مي كنم و در قسمت زير همون هم بقيه فر م ها رو به سمت راست منتقل مي كنم ( با اين عمل فرم هاي مذكور فكر كنم در زمان اجراي برنامه ساخته نخواهند شد )

حالا هر جا كه به فرم مورد نظرم احتياج داشته باشم دستور ساخت اونو ميدم و همزمان فرم اصلي رو غير فعال مي كنم
بعد از استفاده از فرم با دستور ديستروي هندل ويندو فرم رو از بين برده و فرم اصلي رو دوباره فعال ميكنم

حالا توضيح بدين اين دستور ساخت و ديستروي چه كار ها مي كنه و ايا اين روش درست هست يا نه ؟

ممنون

soldier
26-07-2006, 20:46
سلام
اين روش رو خودت استفاده مي كني؟
يعني به ذهنت رسيده يا اينكه كسي بهت گفته؟
اين روش استاندارد نيست.
براي چي اينكارو كني.وقتي همه فرم ها رو ساختي
با اين دستور show نمايش بده. از visible هم مي توني
استفاده كني.كه اول فقط يه فرم مشخص باشه بعد
با دستور show نمايش و با hide غير قابل نمايش كن.
اگر هم با همين روشي كه گفتم مشكلي پيش اومد
بگو.كه من در خدمتم.

Mahmood_N
26-07-2006, 20:46
سلام ...
با اجازه از Soldier عزیز ...
دوست من این روشی که شما استفاده می کنید بیشتر برای فرمهای MDI استفاده می شه ، یعنی فرمهای فرزند و والد ...
مثلا برنامه فوتوشاپ نمونه اي از فرمهاي MDI هستش ( اگه توجه كرده باشيد تمام پنجره هاي آن براي ويرايش عكس در درون پنجره اصلي نمايش داده مي شوند )
ولي براي برنامه هاي معمولي بايد از همون دستورات Show يا Show Modal استفاده بشه و براي بستن فرم هم از دستور Close یا Hide ( که فرم رو پنهان می کنه ) ...
موفق باشید ...

soldier
26-07-2006, 21:02
سلام
من هم يه پستي دادم.گفتم توي ديد باشه.
10 حتمآ بخونيدش.از آقا محمود هم تشكر مي كنيم
كه توي بحث ها شركت مي كنه

meghdad23
26-07-2006, 23:53
با سلام
با تشكر از همه دوستان مشكل من تا اطلاع ثانوي حل شد
متشكرم
meghdad23

hp1361
27-07-2006, 22:03
سلام

اره اين روش به ذهنم خطور كرد چون تنها به اين روش مشكلم حل شد

من وقتي از چند فرم استفاده مي كنم وقتي كه فرم دوم رو نمايش ميدم اگه مكان فرم رو با موس جابجا كنم دفعه ديگه كه دستور نمايش صادر بشه فرم در همون جاي قبلي كه با موس جابجا شده قرار ميگيره كه من اينو نميخاهم

من مي خواهم كه فرم در وسط مانيتور ظاهر بشه يا كلا همون مكان اوليه

يا حق

Mahmood_N
28-07-2006, 01:03
سلام

اره اين روش به ذهنم خطور كرد چون تنها به اين روش مشكلم حل شد

من وقتي از چند فرم استفاده مي كنم وقتي كه فرم دوم رو نمايش ميدم اگه مكان فرم رو با موس جابجا كنم دفعه ديگه كه دستور نمايش صادر بشه فرم در همون جاي قبلي كه با موس جابجا شده قرار ميگيره كه من اينو نميخاهم

من مي خواهم كه فرم در وسط مانيتور ظاهر بشه يا كلا همون مكان اوليه

يا حق
سلام ...
دوست من برای اینکه فرم خدتون رو نمایش وسط مانیتور نمایش بدید باید قبل از کد مربوط به نمایش فرم یه کد دیگه بنویسید :

برای مشاهده محتوا ، لطفا وارد شوید یا ثبت نام کنید
این طوری خاصیت مکان فرمتون قبل از نمایش به وسط صفخه تغییر پیدا می کنه ...
و اگه می خواید که فرمتون وسط فرم اصلی نشون داده بشه کد بالا رو به صورت زیر تغییر می دید :

برای مشاهده محتوا ، لطفا وارد شوید یا ثبت نام کنید
اگه در قسمت خصوصیات فرمتون جلوی گزینه Position رو ببینید ، می تونید بقیه دستوراتش رو هم مشاهده کنید ...
اگه بازم مشکلی بود بگید ...
موفق باشید ...

soldier
28-07-2006, 12:43
سلام
يه پروپرتي هم هست به همين اسم.
فكر كنم اگر اون رو قبل از اجرا تنظيم كني
ديگه احتياجي نباشه كه اين كارا رو هم بكني.

Mahmood_N
28-07-2006, 20:33
سلام ...
درسته ... ، چنين پروپرتي اي هست ...
كد بالا هم در واقع همون پروپرتي رو تنظيم مي كنه ...
ولي اگه فقط اون رو تنظيم كني براي يك بار همون جوري نشون داده مي شه و براي اين كه هميشه وسط دسكتاپ نشون داده بشه بايد در زمان نمايش فرم اون پروپرتي رو تنظيم كني ...
موفق باشيد ...

مرد مباح
28-07-2006, 22:15
دوستان.
من وقتي يك بار فرم اصلي برنامه رو مخفي و ظاهر ميكنم , ديگه ديده نميشه.
يعني در حالتي كه مثلا 2 تا ويندوي ديگه كه يكي مثلا Mycomputer و ديگري Calculator است اين كار رو انجام ميدم , برنامه روي اونا نمياد و زيرشون قرار ميگيره.

چرا؟ و چيكار بايد بكنم؟

Mahmood_N
28-07-2006, 22:25
سلام ...
فرمتون رو از طريق Show نشون می دید یا Show Modal ؟
اگه از طریق Show Modal نشون بدید و بعد اون رو مخفی کنید نمی تونید به اون فرم اول دسترسی داشته باشید ...
برای این که فرم اولتون نشون داده بشه باید فرم دوم رو ببندید ...
اگه منظورتون چیز دیگه ای بود بگید شاید بتونم کمکتون کنم ...
موفق باشید ...

hp1361
28-07-2006, 22:36
سلام

دوستان منظور من چيز ديگه اي است

يه بار امتحان كنيد مي بينيد

دو تا فرم بسازيد . با كليك كردن روي دكمه يك كه بر روي فرم يك قرار داره فرم دوم ظاهر ميشه و فم اول هم ديسيبل ميشه . حالا

بر روي فرم دوم كليك كرده و مكان اون رو تغيير دهيد ( پنجره رو جابجا كنيد )

حالا فرم دوم رو ببنديد . فرم اول فعال ميشه . دوباره روي دكمه كليك كنيد تا فرم دوم باز ظاهر بشه . ميبينيد كه فرم در وسط

مانيتور نيست بلكه در همون مكانيه كه شما دفعه پيش تغيير مكانش داديد .

تمام اينا با دستور showmodel انجام دادم ببينيد براي شما هم اينطوريه يا نه

در ضمن من پروپرتي پوزيشن اونو هم تغيير دادم

مي بينيد كه اون كاري رو كه من كردم بهتر از اين دستوراتيه كه شما گفتيد

يا حق

Mahmood_N
28-07-2006, 22:55
بازم سلام ...
دوست من شما اون كاري رو كه من گفتم نكرديد ... !!!
شما بايد در موقع نمايش فرم اون پروپرتي رو تنظيم كنيد ...
همون طوري كه بالا براتون توضيح دادم ...
من مطمئنم كه درسته ( قبل از اينكه اون پست رو بدم خودم امتحانش كردم تا مطمئن بشم )
شما اون روشي رو كه من كفتم رو انجام بديد ، حتما مي شه ...
در ضمن :
اون روشي كه شما استفاتده مي كنيد منطقي نيست و نبايد از اون روش استفاده كنيد ...
دستور Destroy ساختار فرم رو بهم می زنه ( معنیش هم می دونید چی می شه ).
یک بار دیگه امتحان کنید ...
منتظر جوابتون هستم ...
موفق باشید ...

مرد مباح
29-07-2006, 10:58
من فرم اصلي برنامه رو مخفي مي كنم.
نه يك فرم زير شاخه.
يعني يك برنامه ديگه رو از توي برنامم اجرا ميكنم و تا زماني كه اون برنامه در حال اجراس, فرم برنامم مخفيه.
بعدش كه نشونش ميدم زير همه پنجره ها مياد.
در اين شرايط فقط بايد از Show استفاده كرد

مرد مباح
29-07-2006, 11:01
من فرم اصلي برناممو مخفي ميكنم. نه يك فرم كمكي و اضافه.
يك برنامه ديگه رو توي برنامم ران ميكنم و تا وقتي اون اجراس, من فرم برناممو مخفي ميكنم.
وقتي نشونش ميده , پشت همه فرمهاست.

soldier
29-07-2006, 11:57
سلام
مرد مباح وقتي كه مي خواهي فرم رو نشون بدي بايد
بعد از نمايش فر سطح فرم رو بالا بياري. من يه مثال مي زنم!
Form2.BringToFront;
بعد از نمايش. اسم فرم رو هم خودت تغيير بده.
راستي فقط در مورد درستور Show كار مي كنه.
امتحانش كردم.100% جواب ميده. موفق باشي

soldier
29-07-2006, 11:59
سلام
من امتحان كردم.
اگر قبل از نمايش فرم فرم را به جاي اول تغيير دهيد
مشكل حل ميشه. اگر دوست نداريد كه وسط صفحه باشه
و حتمآ جاي اولش باشه.يه جاي اينكه پزيشن رو تغيير بدي
Left,Top رو تغيير بده و به عددي كه دوست داري تغيير بده!
توضيح بيشتر :
قبل از اجرا وقتي فرم رو تنظيم كردي Left,Top رو بنويس و بگذارش قبل
از اينكه فرم رو نمايش بدي. اميد وارم كه خوب متوجه شده باشي

soldier
29-07-2006, 18:37
سلام
به نظر شما اين ظلم نيست.
بابا يه پست بديد ببينيم چي شده؟
درست شد؟خراب شد؟