PDA

View Full Version : نوشتن و صدا زدن procedure



moohssenn
پنج شنبه 12 بهمن 1385, 20:11 عصر
با سلام
در فرمی از برنامه یک عملی را باید در زمانهای خاصی اجرا کنم , برای ایمکه برنامه خلوت تر بشه میخوام این کارهای تکراری رو در یک procedure بنویسم .
برای همین این کار را انجام دادم اما با این error رو به رو شدم :


Undeclared identifier : Memo1

دو خطی که میخوام تو Procedure قرار بدم به صورت زیر است :


memo1.Text:=table1.FieldByName('farsi').AsString;
label1.Caption:=table1.FieldByName('English').AsSt ring;

میشه یه راهنمائی کنید که این Procedure را چه طوری بنویسم؟
لطفا در مورد صدا زدن اون نیز راهنمائی نمائید ؟

Mahyaa
پنج شنبه 12 بهمن 1385, 20:27 عصر
مطمئن هستید که نوع Memo1 رو تعریف کردید ؟ یا یک شی Memo رو فرمتون هست ؟

باید داخل کدتون خطی باشه به صورت
Memo1 : TMemo;

برای صداکردن procedure منظورتون رو نفهمیدم .


.

moohssenn
پنج شنبه 12 بهمن 1385, 20:35 عصر
بله در قسمت type این خط وجود داره
در مورد صدا زدن منظورم فراخوانی تابع بود

greenway
پنج شنبه 12 بهمن 1385, 22:02 عصر
با سلام
در فرمی از برنامه یک عملی را باید در زمانهای خاصی اجرا کنم , برای ایمکه برنامه خلوت تر بشه میخوام این کارهای تکراری رو در یک procedure بنویسم .
برای همین این کار را انجام دادم اما با این error رو به رو شدم :


Undeclared identifier : Memo1

میشه یه راهنمائی کنید که این Procedure را چه طوری بنویسم؟
لطفا در مورد صدا زدن اون نیز راهنمائی نمائید ؟

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


Form1.memo1.Text := Form1.table1.FieldByName('farsi').AsString;
Form1.lable1.Caption:= Form1.table1.FieldByName('English').AsString;

راه دوم این است که تابع را در داخل کلاس TForm1 تعریف کنید که با توجه به عدم آشنایی من به Syntax این کار در دلفی ، خواهشمندم یکی از دوستان مثالی برای آن بنویسد.

dkhatibi
جمعه 13 بهمن 1385, 02:07 صبح
می توان تعریف شی مورد نطر را در قسمت Public یا Private فرم هم بیان کرد تا این مشکل حل شود.

Mahmood_M
جمعه 13 بهمن 1385, 15:43 عصر
سلام
همونطور که دوستان گفتند :

می توان تعریف شی مورد نطر را در قسمت Public یا Private فرم هم بیان کرد تا این مشکل حل شود.
و ...
می تونید به صورت زیر عمل کنید ( در تکمیل توضیحات دوستان )
مثلا اگه نام Procedure شما InsertToMemo هست !!
می تونید اون رو توی قسمت Private یا Public فرم قرار بدید ( اگه می خواید از طریق فرمهای دیگه هم از این Procedure استفاده کنید اون رو توی Public فرم و اگه می خواید فقط از طریق همون فرم فعلی ازش استفاده کنید اون رو در قسمت Private فرم قرار بدید )
این طوری :

Procedure InsertToMemo;
بعد موقعی که می خوای ازش استفاده کنید این طوری بنویس :

Procedure TForm1.InsertToMemo;
begin
...
end;

فکر کنم دیگه مشکلت حل بشه ...
موفق باشی ...