PDA

View Full Version : فعال و غیر فعال شدن دکمه در صورت تغییر مقادیر هریک از فیلدها



TAVANA002
دوشنبه 07 تیر 1389, 08:13 صبح
چه جوری میشه رویداد onchange مربوط له tedit را به فرم متصل کرد.یعنی هر موقع مقادیر داخل edit ها تغییر کرد متوجه شد.edit های روی فرم زیاده و نمیخوام برای رویداد onchange هرکدوم جداگونه برنامه نوشت.

Pr0grammer
دوشنبه 07 تیر 1389, 08:38 صبح
می تونید یه روال مثل این تعریف کنید :


procedure TForm1.Changing(cnst : String; Value : String );
begin
if cnst <> Value then
BitBtn1.Enabled := True
else
BitBtn1.Enabled := False
end;بعد، در رویداد OnChange مربوط به هر Edit با استفاده از دستور زیر اون روال رو فراخوانی کنید :

Changing(مقدار جدید ,مقدار اصلی);در این روش، اگر مقدار Edit، هر چیزی غیر از مقدار قبلی ِ فیلد بود، Enabled مربوط به BitBtn برابر با True میشه و حتی اگه کاربر دوباره مقدار Edit رو تصحیح کنه و برابر با مقدار موجود در فیلد قرار بده، Enabled مربوط به BitBtn مقدار False میگیره...

موفق باشید/

Felony
دوشنبه 07 تیر 1389, 08:49 صبح
میتونید با یک حلقه رویداد مورد نظر خودتون رو به Editها اختصاص بدید ، مثلا :
در قسمت Private فرم برنامتون رویه زیر رو تعریف کنید :
private
{ Private declarations }
procedure MyChange(Sender: TObject);

حالا روال رو به صورت زیر پیاده کنید ( کد مورد نظر خودتون رو اینجا بنویسید ) :

procedure TForm1.MyChange(Sender: TObject);
begin
if Sender is TEdit then
ShowMessage((Sender as TEdit).Name);
end;


در آخر هم برای اختصاص رویداد در رویداد ساخته شدن فرمتون ( onCreate ) به صورت زیر عمل کنید :

var
i: Byte;
begin
for i:= 0 to ComponentCount - 1 do
if Components[i].ClassName= 'TEdit' then
TEdit(Components[i]).OnChange:= MyChange;