PDA

View Full Version : کاهش عملیات تکراری در کد نویسی



moslehif
پنج شنبه 21 اسفند 1393, 08:32 صبح
با سلام و عرض ادب

دوستان راهی هست برای نوشتن کد نویسی که کار برنامه نویس رو راحت تر کنه برای کدهای تکراری.

مثلا یک کد برای رویداد on change یک edit نوشتیم برای بقیه میخوایم تکرار بشه لازم نباشه برای همه اسم شماره edit رو عوض کنیم.

if comboBox1.Text<>''then
begin

data1.ADOQuery2.SQL.Clear;
data1.ADOQuery2.SQL.Add('select info5 from info5 where info5='+'"'+comboBox1.Text+'"');
data1.ADOQuery2.Open;

if data1.ADOQuery2.IsEmpty then
begin

data1.ADOQuery2.SQL.Clear;
data1.ADOQuery2.SQL.Add('insert into info5(info5)');
data1.ADOQuery2.SQL.Add('values('+'"'+comboBox1.Text+'"'+')');
data1.ADOQuery2.ExecSQL;

end;

end;



فکر کنید این کد select , insert برای 10 تا combo تکراریه فقط تو هر combo باید شماره combo عوض بشه. راهی هست که من تو رویداد combo که کپیش کنم خودش بفهمه کدوم combo هست. با تشکر

developing
پنج شنبه 21 اسفند 1393, 08:46 صبح
با سلام

قبلا یک روشی ابداع شده که بهش روش ساخت یافته میگن.:لبخند:(این روش از دهه های 70 میلادی به این ور به خوبی شناخته و به کارگیری شد )

شما در این روش هر کار تکراری را درون یک تابع می نویسید و قسمت متغیر (در اینجا کمبوباکس) رو به عنوان پارامتر به تابع ارسال می کنید.

حالا کد شما به شکل زیر تغییر می کند.

procedure InsertNewValues(AComboBox: TComboBox);
begin
if comboBox1.Text<>''then
begin
data1.ADOQuery2.SQL.Clear;
data1.ADOQuery2.SQL.Add('select info5 from info5 where info5='+'"'+AComboBox.Text+'"');
data1.ADOQuery2.Open;
if data1.ADOQuery2.IsEmpty then
begin
data1.ADOQuery2.SQL.Clear;
data1.ADOQuery2.SQL.Add('insert into info5(info5)');
data1.ADOQuery2.SQL.Add('values('+'"'+AComboBox.Text+'"'+')');
data1.ADOQuery2.ExecSQL;
end;
end;
end;


و در هر کدام از EditChange ها به صورت زیر فراخوانی می کنید.


InsertNewValues(ComboBox1);


و در جای دیگر کمبوباکس2، کمبوباکس3 و ...

benyaminrahimi
پنج شنبه 21 اسفند 1393, 09:11 صبح
با سلام ...شما که این قضیه دغدغه تون شده جالبه که چرا از کنترل های بانک اطلاعاتی نظیر dbcombobox استفاده نکردید ... همیشه برام جای سواله دوستان از گرید استفاده میکنند ولی برای ویرایشو ذخیره و درج کد نویسی میکنند

golbafan
پنج شنبه 21 اسفند 1393, 09:25 صبح
با سلام و عرض ادب
دوستان راهی هست برای نوشتن کد نویسی که کار برنامه نویس رو راحت تر کنه برای کدهای تکراری.
مثلا یک کد برای رویداد on change یک edit نوشتیم برای بقیه میخوایم تکرار بشه لازم نباشه برای همه اسم شماره edit رو عوض کنیم

سلام در توابع مورد نیاز شما یک پارامتر sender هست که مربوط میشه به اون کنترلی که داره این رو ارسال میکنه
خب شما باید از همین استفاده کنید

مثال: میخواهیم باتغییر دادن edit1 کاپشن فرم تغییر کنه و مثل edit1.text بشه. بعد میخوایم این رو به تمام edit ها هم اعمال کنیم


procedure form1.edit1onchange(sender: tobject);
begin
form1.caption := tedit(sender).text;
end;


// یا اینجوری:


procedure form1.edit1onchange(sender: tobject);
begin
with sender as tedit do
form1.caption := text;
end;


بعد کافیه هرچی ادیت روی اون فرم داری ، ایونت onchange اش رو بدی به ایونت edit1onchange