-
ارسال پارامتر اختیاری
سلام
چطور می توان به یک تابع پارامتر اختیاری ارسال کرد . مثلا اگر ورودی تابع dbgrid و stringgrid باشد و تنها بخواهیم یکی از انها را ارسال کنیم باید چکار کرد . من فعلا با دادن مقدار اولیه nil به ورودی تابع پارامترها را ارسال می کنم مانند زیر
Procedure Draw_Chart(Grid:TDBGrid=nil;TMSGrid:TDBadvGrid=nil );
که در این حالت در صورتی که ورودی ، Grid باشد مشکلی نیست اما اگر TMSGrid باشد در زمان
فراخوانی باید دو پارامتر nil و grid مورد نظر ارسال شود .
حالت اول
Draw_Chart(Grid_Mode);
حالت دوم
Draw_Chart(nil,Grid_Mode);
ایا راه دیگری هم هست ؟
-
سلام دوست عزیز و خوش آمدید.
من درست منظور و کاری که میخواهید انجام بدهید رو متوجه نشدم.
ولی تا جایی که فهمیدم شما میتوانید از عملگرهای IS و AS استفاده کنید.
مثال :
کد:
if sender is DBGrid then
with sender as dbgrid do begin
.
.
end
else begin
.
.
end;
-
من می خواهم ورودی تابع من تنها یکی باشد که یا dbgrid و یاdbadvgrid . امکان ارسال هر کدام به تنهایی را دارا باشد . و در تعریف تابع هر دو را بشناسد . مثل این که دو تابع هم نام نوشته شده باشد و هر دو یک عمل را انجام می دهند ولی تنها در ورودی با هم متفاوت هستند . من این کار رو تنها برای dbgrid نمی خواهم من تعداد توابع زیادی رو می خواهم از این طریق تغییر دهم و دنبال یک را حل بهینه هستم . ممنون می شم راهنمایی کنید
-
خصوصیات ورودیها باید دقیقا مشابه باشه و چون شما دارین از دو کامپوننت مختلف استفاده میکنین. فکرکنم والد اونها بتونه کمکتون کنه.
ولی همون طور که در ÷ست قبلی هم اشاره کردم میتونین از Is , As , Sender استفاده کنید. میتونین به راهنمای دلفی درباره این فرامین مراجعه کنید.
-
باید دو تا تابع بنویسید ولی بصورت overload:
کد:
procedure ShowMsg(Str:string);overload;
begin
ShowMessage(Str);
end;
procedure ShowMsg(Num:Integer);overload;
begin
ShowMessage(IntToStr(Num));
end;
procedure TForm1.Button1Click(Sender: TObject);
begin
ShowMsg('test');
ShowMsg(1);
end;