PDA

View Full Version : سوال در مورد procedure



matinebi
پنج شنبه 28 آذر 1387, 10:26 صبح
چرا برای نوشتن یک procedure در یک فرم باید برای مقدار دهی به عناصر ی که در آن فرم قرار دارند نام فرم را نیز نوشت مثلا

procedure Ti_moshtari.comboload(Sender: TObject);
begin
i_moshtari.ComboBox1.Items.Clear;
DataModule5.ADOQuery2.First;
while not DataModule5.ADOQuery2.Eof do
begin
i_moshtari.ComboBox1.Items.Add(DataModule5.ADOQuer y2['lname']);
DataModule5.ADOQuery2.Next;
end;
end;

نمیشه توری نوشت که مجبور نباشیم نام فرم (i_moshtari) رو بنویسیم

mafazel
پنج شنبه 28 آذر 1387, 13:04 عصر
چرا برای نوشتن یک procedure در یک فرم باید برای مقدار دهی به عناصر ی که در آن فرم قرار دارند نام فرم را نیز نوشت


procedure Ti_moshtari.comboload(Sender: TObject);
begin
i_moshtari.ComboBox1.Items.Clear;
نخیر
شما که توی همون فرم نیستید. وقتی توی فرم Ti_moshtari هستید بدون ذکر نام فرم به عناصر فرم i_moshtari دسترسی ندارید.
اگر تعداد اشایی که از فرم دیگه استفاده می کنید زیاده از دستور with استفاده کنید. که البته توی مثال شما کاربرد نداره.


procedure Ti_moshtari.comboload(Sender: TObject);
begin
with i_moshtari do
begin
ComboBox1.Items.Clear;
ComboBox1.Items.Add('Test1');
end;

البته این یکم عجیبه که توی یک فرم، یک ComboBox فرم دیگه ای رو مقدار بدید. (تاکید میکنم "یکم")

matinebi
پنج شنبه 28 آذر 1387, 13:22 عصر
درسته داخل خود فرم نیازی به نوشتن نام فرم نیست

sobhangh
پنج شنبه 28 آذر 1387, 20:15 عصر
دلیل این موضوع که حتما باید نام فرم ذکر بشه اینکه در برنامه های بزرگ یا کمی بزرگ مجبورید از چندین فرم استفاده کنیم و تنها راه دلفی برای شناخت و از هم تشخیص دادن همین راهنمایی شماست.

vcldeveloper
جمعه 29 آذر 1387, 00:30 صبح
دلیل این موضوع که حتما باید نام فرم ذکر بشه اینکه در برنامه های بزرگ یا کمی بزرگ مجبورید از چندین فرم استفاده کنیم و تنها راه دلفی برای شناخت و از هم تشخیص دادن همین راهنمایی شماست.
دلفی بر اساس حوزه ایی که کد درش قرار داره، متوجه میشه که نامی که استفاده می کنید، مربوط به کدوم شی یا یونیت هست. وقتی در یک کلاس به متدها و خصوصیت های خودش دسترسی پیدا می کنید، نیازی به نوشتن نام نمونه ساخته شده از آن کلاس نیست. ولی وقتی در یک کلاس به اجزاء یک شی دیگه دسترسی پیدا می کنید، باید نام شی را هم قبل از اون جزء ذکر کنید.