PDA

View Full Version : ایجاد فرم و مقدار دهی متغیرها



DataMaster
دوشنبه 10 دی 1386, 19:52 عصر
سلام
من یک فرم رو در زمان اجرا به این شیوه میشازم


with TFrmReport.Create(nil) Do
begin
Show;
end;

و در هنگام بستن


procedure TFrmReport.FormClose(Sender: TObject;
var Action: TCloseAction);
begin
Action := caFree;
end;

در اولین اجرا مشکلی وجود نداره ، اما اگه فرم مجددا ساخته بشه متغیر های محلی و حتی بعضی از اشیاء دارای مقدار هستن
البته متغیرها مقدار دهی اولیه نمیشن
حالا سوال من اینه مگه بعد از آزاد کردن فرم حافظه به سیستم برگردونده بشه و در ساحتن مجدد اشیاء مجدد ساخته بشن؟؟

SYNDROME
دوشنبه 10 دی 1386, 21:43 عصر
به جای دستور Show از دستور ShowModal استفاده کنید و بعد هم دستور Free را فراخوانی کنید.
موفق باشید

DataMaster
سه شنبه 11 دی 1386, 09:31 صبح
به جای دستور Show از دستور ShowModal استفاده کنید و بعد هم دستور Free را فراخوانی کنید.
موفق باشید

دوست عزیز اگه فرم از نوع Midi Child باشه چی؟ این روش براش صحیح نیست
من در کل با نحوه مقدار دهی اولیه مشکل دارم ؛ یعنی بهتر بگم تفات بین قسمتهای مختلف یک یونیت رو درک نمی کنم یعنی ارایه ای که در قسمت Implmentation تعریف میشه با تعاریف دیگه چه فرقی داره؟
اگه میشه توضیح مختصری در مورد ساختار یک یونیت ارائه بدید ممنون میشم

rasool_brn
سه شنبه 11 دی 1386, 09:58 صبح
متغیرهایی که در بخش interface یک unit تعریف می شن برای تمام unitهای دیگه قابل دسترسی ولی متغیرهایی که در بخش implementation یک unit تعریف می شن فقط برای توابع و کلاسهای همون unit قابل دسترسی هستن .

SYNDROME
سه شنبه 11 دی 1386, 15:30 عصر
دوست عزیز اگه فرم از نوع Midi Child باشه چی؟
به روش زیر می توانی فرم Child را ایجاد کنی.


Form1 := T1.Create(Owner);
Form1.FormStyle := fsMDIChild;
Form1.Show;

موفق باشید

MNosouhi
سه شنبه 11 دی 1386, 23:19 عصر
حالا سوال من اینه مگه بعد از آزاد کردن فرم حافظه به سیستم برگردونده بشه و در ساحتن مجدد اشیاء مجدد ساخته بشن؟؟
قبلا این مشکل برای من هم پیش اومده ، فکر کنم اگر در همون رویداد onclose دستور زیر رو اضافه کنی مشکل حل بشه :

Form1:=nil;