PDA

View Full Version : درباره فرم های mdi



qazwsx
دوشنبه 06 خرداد 1387, 12:33 عصر
سلام من زمانی که از فرمهای معمولی استفاده میکردم به راحتی کد زیر رو استفاده میکردم
form1.edit1.text:=form2.edit1.text

ولی در دوتا فرم mdi این رو اشتباه میگیره باید چکار کنم ممنون

farhad110
دوشنبه 06 خرداد 1387, 12:43 عصر
با سلام. براي استفاده از كنترل ها و متغيرهاي فرم هاي برنامه در فرم جاري، mdi بودن يا نبودن مهم نيست و همين كد، در صورتي كه فرم مورد نظر رو use كرده باشيد بايد جواب بده.
اگر پيغام خطا رو بنويسيد بهتر ميشه راهنمايي كرد

qazwsx
دوشنبه 06 خرداد 1387, 13:30 عصر
access violation at address 0044f092 in module 'roject2.exe'read of address 000002f8

farhad110
سه شنبه 07 خرداد 1387, 15:48 عصر
اين پيغام خطا هزار و يك دليل ميتونه داشته باشه.
-در پاسخ به چه رويدادي هست؟
-در صورت امكان كد قسمتي كه باعث به وجود آمدن خطا ميشه رو هم بنويسيد

dana74
سه شنبه 07 خرداد 1387, 16:01 عصر
سلام من زمانی که از فرمهای معمولی استفاده میکردم به راحتی کد زیر رو استفاده میکردم
form1.edit1.text:=form2.edit1.text

ولی در دوتا فرم mdi این رو اشتباه میگیره باید چکار کنم ممنون

قبل از انجام کار فوق بایستی اون فرمی که در حال حاضر بسته است را باز کنی (فرم 2 را-اگه اشتباه نکنم) و بعد، از اون دستورات استفاده بکنی. در MDI فرمی که بسته یعنی وجود نداره لذا نمیتونی از چیزی که وجود نداره استفاده کنی!
باز هم اگه سوالی داشتی در خدمتیم:لبخندساده:

qazwsx
سه شنبه 07 خرداد 1387, 23:22 عصر
من برای ایجاد از creat استفاده میکنم ولی بلا فاصله فرم رو نمایش میده

B_YAGHOBI
سه شنبه 07 خرداد 1387, 23:26 عصر
اول فرمها را بساز بعد استفاده كن


Var Form1 : TForm1;
form2 : Tform2 ;
Begin
form1 := Tform1.Create( Application ) ;
form2 := Tform2.Create( Application ) ;
form1.edit1.text:=form2.edit1.text

qazwsx
چهارشنبه 08 خرداد 1387, 00:00 صبح
دوست عزیز کدی که گفتین به کار بردم ولی عمل نکرد اول فرم نمایش داده میشه با هر بار کلیک کردن هم یه صفحه جدا باز میشه

cybercoder
چهارشنبه 08 خرداد 1387, 00:18 صبح
procedure TForm1.Button1Click(Sender: TObject);
Begin
Application.CreateForm(TForm2,form2);
Form2.Show ;
Form2.Edit1.Text:=Form1.edit1.text
end;


فرم های فرزند MDI رو از Autocreate در بیار و در رویداد onclose شون بنویس action :=cafree با این کار زمانی که یک فرم Mdichild رو می بندی از حافظه بیرون می ره.

qazwsx
چهارشنبه 08 خرداد 1387, 12:42 عصر
حالا یه مشکل دیگه زمانیکه از کد زیر استفاده میکنم
Application.CreateForm(TForm2,form2); فرم نمایش داده میشه من میخوام تا form2.show اجرا نشده فرم نمایش داده نشه

B_YAGHOBI
چهارشنبه 08 خرداد 1387, 13:16 عصر
يك نمونه مثال برات گذاشتم :

qazwsx
چهارشنبه 08 خرداد 1387, 14:18 عصر
يك نمونه مثال برات گذاشتم :
آقا دستت درد نکنه خیلی عالی بود من الان مشکلم اینکه زمانی که فرو م رو با دستور
Form1 := TForm1.Create( Nil ) ; ایجاد کردیم نمایش داده نشه زمانی نمایش داده بشه که من دستور form1.show رو جرا کنم ممنون

B_YAGHOBI
چهارشنبه 08 خرداد 1387, 14:26 عصر
اولا FormStyle برابر fsNormal باشد و Visible آن برابر False باشد.

مثل مثالي كه زدم.

qazwsx
چهارشنبه 08 خرداد 1387, 14:42 عصر
یعنی در اول برنامه فرمها رو بصورت فرزند تعریف نکنیم

cybercoder
چهارشنبه 08 خرداد 1387, 22:37 عصر
فرم نمایش داده میشه من میخوام تا form2.show اجرا نشده فرم نمایش داده نشه

توضیحاتی که دادم رو نخوندی یا عمل نکردی دیگه