PDA

View Full Version : ممکنه کمکم کنید ؟ میخوام فرم هام را خودم Create کنم .



NIUSHA_KH
سه شنبه 19 شهریور 1387, 09:54 صبح
با سلام خدمت دلفی نویسان عزیز
من چند روز پیش یک سوالی کردم در مورد اینکه در پروژه ام چند تا فرم خاص گاهی show میشدند ولی در بعضی از اجراها خطای Access Violatoin میداد ، دوست عزیزی راهنمایی کرد که اول ببین Auto Create میشه یا نه و با دستور (نام فرم) Assigned این کار را انجام بده ، وقتی کد زیر را در کلیک Buttonی که باید فرم را باز کنه نوشتم :

if Assigned(Form7) then
Form7.ShowModal
else begin
ShowMessage('not Registerd');
end;

متوجه شدم در برخی از اجرا ها پیغام 'not Registerd' را میده و در برخی از اجرا ها این پیغام را نمیده و فرم باز میشه . ضمنا در فایل Progect این فرم مانند بقیه فرمها(که مشکل مذکور را ندارند) Auto Create میشه .
ممکنه کمکم کنید ؟ میخوام فرم هام را خودم Create کنم شاید مشکلم حل بشه .
آیا میتونم به جای کد ShowMessage('not Registerd' دستور Form Create را بنویسم ؟

s.mostafa.rahmani
سه شنبه 19 شهریور 1387, 10:19 صبح
بله می‏تونید.

Form7 := TForm7.Create(Application);
Form7.Show; // or Form7.ShowModal;
این کد رو می‏تونید دقیقاً به جای ShowMessage بذارید.

as13851365
سه شنبه 19 شهریور 1387, 10:20 صبح
مشکل شما بیشتر به کدی که نوشتید برمی گرده
من هم قبلا با این مشکل مواجه بودم یعنی زمانی که می خواستم بعد از انجام یک کاری برنامه رو ببندم برنامه پیغام access .... می داد وقتی که دنبالش کشتم دیدم در یکی از فرم ها یک پردازشی هست که هنوز تمام نشده و من قبل از تمام شدنش فرم رو پاک free می کردم.

حالا شما هم یک جایی از کد رو اشتباهی نوشتید !
ساده ترین راهی که می تونم به شما بگم این است که شما بزارید برنامه به صورت اتوماتیک فرم ها رو بسازه و شما وقتی که فرمی رو باز و بسته می کنید از دستور hide استفاده کنید تا هیچ فرمی حذف نشود.

درباره این که شما خودتان فرمتان را بسازید باید از کد زیر استفاده کنید:


form2:=tform2.create(self);
form2.show;

mortezakiaee
سه شنبه 19 شهریور 1387, 10:28 صبح
شما باید سعی کنید همونطوری که دوستان در پست قبل راهنمایی کردن مشکل رو پیدا کنید ولی اگه میخواین مشکل رو فعلا حل کنید از کد زیر برای نمایش فرم هاتون استفاده کنید.


with MyForm do
try
show;
except
TMyform.create(self);
show;
end;

Hsimple11
سه شنبه 19 شهریور 1387, 17:15 عصر
کلماتی مانند
Create
ساخت فرم

را در سایت جستجو کنید. تاپیکهای زیادی وجود دارد.

SYNDROME
سه شنبه 19 شهریور 1387, 20:17 عصر
From1 := TForm1.Create(Owner);
Form1.ShowModal;
Form1.Free;

موفق باشید

vcldeveloper
چهارشنبه 20 شهریور 1387, 00:50 صبح
From1 := TForm1.Create(Owner);
Form1.ShowModal;
Form1.Free;

سعی کنید همیشه به استفاده از try...finally عادت کنید که بعدها دچار مشکل نشید، مشکلاتی مثل همین مشکلی که کاربر ایجاد کننده تاپیک در تاپیک دیگه ایی بهش اشاره کرد (Access Violation هنگام نمایش فرم)، معمولا بخاطر همین بی دقتی ها بوجود می آیند!

SYNDROME
چهارشنبه 20 شهریور 1387, 06:22 صبح
سعی کنید همیشه به استفاده از try...finally عادت کنید که بعدها دچار مشکل نشید، مشکلاتی مثل همین مشکلی که کاربر ایجاد کننده تاپیک در تاپیک دیگه ایی بهش اشاره کرد (Access Violation هنگام نمایش فرم)، معمولا بخاطر همین بی دقتی ها بوجود می آیند!
علی آقا کدی که من نوشتم امکان بروز AV را ندارد چون فرمها در زمان نیاز ساخته شده و بعد از اتمام کار Free می شوند.
متوجه منظورتان نشدم که کجای کارم اشکال دارد.
ممنون می شوم توضیح دهید.
موفق باشید