PDA

View Full Version : سوال: ساخت MDIChild فرم



joooje
چهارشنبه 02 آذر 1390, 20:22 عصر
سلام به دوستان
من میخوام بدونم چطوری برای برنامم می تونم پنجره هایی به عنوان پنجره بچه بسازم
من تو برنامم میخوام با زدن هر بار دکمه new یک پنجره داخل برنامم باز بشه
مثل تمام برنامه های دیگه که اینکار رو می کنن
من از این کد استفاده میکنم ولی مشکل داره
مشکلشم اینه که اصلا با کلیک معمولی روی اشیای داخل این فرم ها فوکوس نمیکنه و باید راست کلیک کنم
مثلا برای دوتا فرم به دوتا دکمه این کدها رو دادم




procedure TForm1.Button1Click(Sender: TObject);
begin
form2.show;
form2.Parent:=form1;
end;
procedure TForm1.Button2Click(Sender: TObject);
begin
form3.show;
form3.Parent:=form1;
end;


وقتی تو قسمت New >> Project << MDI Aplication رو انتخاب کردم دیدم که کد زیر را به دکمه new داده:



CreateMDIChild('NONAME' + IntToStr(MDIChildCount + 1));

ولی این کد تو برنامه من کار نمیده! چرا ؟
و چطور میتونم این مشکل رو حل کنم
ممنون
راستی من الان نمیتونم دیگه از MDI Aplication . ممنون میشم راهنمایی کنید که کدم رو چه تغییری توش بدم

Felony
پنج شنبه 03 آذر 1390, 06:17 صبح
تو کدی که نوشتید فرمی رو نساختید بلکه Parent فرم ساخته شده رو مساوی فرم اصلی قرار دادید ، اگر هدف تغییر کد خودتون باشه باید به صورت زیر نوشته بشه :

Self.FormStyle:= fsMDIForm;
Form2.FormStyle:= fsMDIChild;
Form2.Show;

joooje
پنج شنبه 03 آذر 1390, 12:34 عصر
ممنون آقای تاجیک بابت راهنماییتون
من یه سوال دیگه هم دارم
آیا میتونم این کار رو برای یه برنامه دیگه هم بکنم؟
یعنی مثلا فرم یه برنامه دیگه رو که هندلش رو دارم Styleش رو به صورت fsMDIForm تبدیل کنم و بعد بتونم توش یه فرم برنامه خودم رو توش parent کنم و بعد Style فرم خودمو fsMDIChild کنم که مثل فرمهای موجود کار کنه
چون الان حالت فرم اصلی اون برنامه fsMDIForm نیست.
برای این کار باید از توابع API استفاده کنم؟
ممنون میشم اگر ممکنه کدش رو برام بزارید و توضیح بدید که بتونم بفهممش
ممنون از لطفتون

joooje
پنج شنبه 03 آذر 1390, 21:25 عصر
سلام دوباره
من الان کدتون رو که لطف کردید دادید تست کردم
همون چیزی هست که من میخوام
ولی یه مشکل داره
وقتی برنامه رو میبندم ارور میده
البته من پنجره از پیش ساخته شده رو پرنت کردم
آیا میتونه مشکل از این باشه
ممنون میشم راهنمایی کنید
کدی که الان استفاده کردم این هست:



Self.FormStyle:= fsMDIForm;
Form2.FormStyle:= fsMDIChild;
Form3.FormStyle:= fsMDIChild;
Form2.Show;
Form3.Show;
form2.Parent:=form1;
form3.Parent:=form1;

و ممنون میشم راجع به پست قبلم هم راهنمایی کنید
باز هم ممنون

Felony
شنبه 05 آذر 1390, 05:46 صبح
وقتی برنامه رو میبندم ارور میده
البته من پنجره از پیش ساخته شده رو پرنت کردم
آیا میتونه مشکل از این باشه

ارور میده یعنی چی ؟! چه پیغامی میده ؟! بعد از این مدت فعالیت باید بدونید که وقتی مشکلی دارید باید کامل و دقیق مشکل رو مطرح کنید !

joooje
شنبه 05 آذر 1390, 10:28 صبح
سلام
این پیغام رو میده
78401
و بعد از تایید این یکی رو
78402
ممنون میشم راهنمایی کنید و اگه ممکنه در مورد پست3 هم راهنمایی کنید
ممنون

jst
شنبه 05 آذر 1390, 15:38 عصر
بین دوست من
ابتدا فرم اصلی رو همونطور گفته شد fsmdiform تنظیم می کنی
بعد فرمهای بعدی رو fsmdichild می ذاری .
از قسمت project----> option ----> forms همه فرمها رو بجز فرم اصلی رو به قسمت available from انتقال می دهی
برای نمایش فرمها هم از کد زیر استفاده می کنی

form3:=tform3.create(self);

form3.show;

joooje
یک شنبه 06 آذر 1390, 17:26 عصر
ممنون از راهنمایتون
حالا میتونید این رو هم به من بگید که چطور میتونم فرم یه برنامه دیگه رو که هندلش رو دارم Styleش رو به صورت fsMDIForm تبدیل کنم ؟
ممنون از راهنماییتون

jst
یک شنبه 06 آذر 1390, 22:39 عصر
می شه هدفت رو از این کار بگی . شاید بشه راه حل بهتری پیشنهاد کرد

joooje
یک شنبه 06 آذر 1390, 23:16 عصر
سلام و ممنون
یه برنامه ای دارم که میخوام چنتا فرم رو توش parent کنم
ولی فرم اون برنامه حالت fsMDIForm رو نداره
فکر میکنم باید با استفاده از توابع Api باشه
ولی کدش رو بلد نیستم
باور کنید کلی جستجو کردم
ولی چیز زیادی دستگیرم نشد
تنها چیزی که میشد پیدا کرد ارسال متن به یه پنچره یا مینیمایز کردن یا بستنش بود
متاسفانه منم تازه کار هستم و با دیدن و بررسی اون کدهای مربوط به API نمیتونم خودم تغییرات لازم رو ایجاد کنم و کدی که میخوام رو به دست بیارم
این دلیلش هست که مزاحم دوستان شدم

joooje
پنج شنبه 10 آذر 1390, 13:01 عصر
من میخوام فرم یه برنامه دیگه رو که هندلش رو دارم Styleش رو به صورت fsMDIForm تبدیل کنم
کسی میدونه اصلا میشه این کار رو کرد یا نمیشه؟
شایدم اصلا نمیشه!!
دوستان چرا کسی راهنمایی نمیکنه؟