PDA

View Full Version : مشکل با self



zman123456
یک شنبه 08 شهریور 1388, 17:24 عصر
با سلام
من یک unit عمومی دارم که تمام procedure و function های عمومی برنامم رو توی اون طراحی می کنم و این unit رو بعدا در تمام فرم هام use می کنم و از هر کدوم از توابع که خواستم استفاده می کنم و دیگه نیازی نیست که این توابع رو در موارد مورد نیاز کپی کنم.
حالا دارم یک function می نویسم که نیاز دارم داخل اون یک adoquery رو create کنم(البته realtime).
حالا که تو دستور ساخت یک adoquery عبارت self رو مینویسم error میزنه :
کد نوشته شده:

var
ADOQ_FieldType: TADOQuery;
...
ADOQ_FieldType:=TADOQuery.Create(self);
ADOQ_FieldType.Connection:=DM_Con.ADOCon;
ADOQ_FieldType.Close;
ADOQ_FieldType.SQL.Clear;
ADOQ_FieldType.SQL.Add('query');
...
ADOQ_FieldType.Open;
...
ADOQ_FieldType.Close;
ADOQ_FieldType.Free;



error:

Undeclared identifier. 'self'

چکار کنم تا بشه در این unit هم component رو create کرد؟
sender هم زدم همینطوری بود.
DB, ADODB هم use کردم.

vcldeveloper
یک شنبه 08 شهریور 1388, 17:37 عصر
حالا که تو دستور ساخت یک adoquery عبارت self رو مینویسم error میزنه
بخاطر این هست که مفهوم Self را درست متوجه نشدید. درباره مفهومش قبلا در همین سایت و سایت های دیگه تفصیلا توضیح داده شده، من اینجا تکرار نمی کنم.


چکار کنم تا بشه در این unit هم component رو create کرد؟
بجای Self در اون کد از nil استفاده کنید. البته همیشه اینجور کدها را داخل try-finally بنویسید.


sender هم زدم همینطوری بود.
پس با مفهوم پارامتر Sender در Event های دلفی هم مشکل دارید.

zman123456
دوشنبه 09 شهریور 1388, 08:23 صبح
بخاطر این هست که مفهوم Self را درست متوجه نشدید. درباره مفهومش قبلا در همین سایت و سایت های دیگه تفصیلا توضیح داده شده، من اینجا تکرار نمی کنم.

پس با مفهوم پارامتر Sender در Event های دلفی هم مشکل دارید.
مرسی از پاسخ.دقیقا.تو help دلفی گشتم البته وقت زیاد نداشتم و چیزی پیدا نکردم.از چندتا از دوستان هم پرسیدم ولی کسی پاسخی نداد.
اگه میشه لطف کنید لینک مطالب رو درج نمایید ممنون میشم.
با تشکر

majid_ramak
دوشنبه 09 شهریور 1388, 08:49 صبح
http://www.barnamenevis.org/forum/showthread.php?t=61226