View Full Version : کنترل رویداد OnExit برای EditBox
shayan_delphi
شنبه 12 آذر 1384, 14:44 عصر
من 41 edit Box دارم که در یکی مقدار ثابتی قرار می گیردبا وارد کردن عدد وخروج از 20 تا به ترتیب بعدی ، درصد مقدار ثابت را در خود می گیرد.همه را با یک رویداد مدیریت می کنم.حالا می خواهم اگر کاربر مقدار ثابت را تغییر دهد رویداد برای همه اتفاق بیافتد و مقادیر آنها درست شود.نمی خواهم برای تک تک آنها بنویسم.
m-khorsandi
شنبه 12 آذر 1384, 16:11 عصر
من که متوجه نشدم!!!؟؟
اَرژنگ
شنبه 12 آذر 1384, 16:55 عصر
من که متوجه نشدم!!!؟؟
استاد،
ایشان 41 edit Box دارند که در یکی مقدار ثابتی قرار می گیردبا وارد کردن عدد وخروج از 20 تا به ترتیب بعدی ، درصد مقدار ثابت را در خود می گیرد.همه را با یک رویداد مدیریت می کنند.حالا می خواهند اگر کاربر مقدار ثابت را تغییر دهد رویداد برای همه اتفاق بیافتد و مقادیر آنها درست شود.نمی خواهند برای تک تک آنها بنویسند.
این کد تمام edit Box ها را تکستشان را ۶ میکند. اگر سوالتان را جواب نمیده دوباره واضحتر توضیح بدند:
procedure TForm1.Edit1Change(Sender: TObject);
var
i : integer;
begin
for i:=0 to Components.ComponentCount do
begin
if Components.ComponentCount is TEdit
then begin
(Components[i] as TEdit).Text := 6;
end;
end;
end;
oghab
شنبه 12 آذر 1384, 18:41 عصر
سلام
به نظر منم سوال واضح نیست!
ایشان 41 edit Box دارند که در یکی مقدار ثابتی قرار می گیردبا وارد کردن عدد وخروج از 20 تا به ترتیب بعدی ، درصد مقدار ثابت را در خود می گیرد.
[/CODE]
یعنی با خروج از هر کدوم یه کد مورد نظر ایشان اجرا میشه؟
خروج از 20 تا به ترتیب بعدی یعنی چه؟
.همه را با یک رویداد مدیریت می کنند.
یا یعنی در رویداد خروج اولی بقیه درصدی از مقدار ثابت را می گیرند؟ و همه کد مورد نظر ایشان در رویداد خروج اولین edit است؟
به هر حال من که نفهمیدم فعلا کد را کجا نوشتند!
ولی فکر می کنم برای اینکه با تغییر مقدار edit اول بقیه هم تغییر کنند.
اگر edit ها را به ترتیب گذاشته باشند میشه کدی شبیه زیر نوشت، البته چطور درصدی می خواهند داشته باشه را خودشون میدونند و این یه مثاله!
procedure TForm1.Edit1Change(Sender: TObject);
var
i,j,k,n:integer;
begin
if edit1.Text <>'' then
begin
n:=strtoint(edit1.Text );
i:=edit2.ComponentIndex ;
j:=edit41.ComponentIndex ;
for k:=i to j do
begin
(Components[k] as TEdit).Text:=FloatToStr(n*k/100);
end;
end;
end;
همگی موفق باشید!
shayan_delphi
شنبه 12 آذر 1384, 23:14 عصر
بنام خدا
سلام به همه دوستان گرامی
بله بدلیل کمی وقت سوال را سریع نوشتم و از دوستان عزیز عذر خواهی کرده و از لطف شما ممنونم.
برای روشن شدن مطلب عکس را اینجا می گذارم و توضیح بیشتر می دهم.
روی فرم من 41 Edit دارم داخل یکی عدد ثابت قرار می گیرد.بقیه دوتا دوتا جدا می شوند.در هر جفت اگر داخل یکی من عدد بنویسم مثلا 2 ،آنوقت 2درصد عدد ثابت در Edit دوم هر جفت قرار می گیرد.این مشکلی نداشت و در رویداد خروج یکی از 40 تا نوشتم و بقیه را به آن مربوط کردم.(پس فقط یکبار نوشتم)حالا اگر کاربر بعد از خروج از Edit چهلم عدد ثابت را عوض کرد حتما باید از 40 تا (در اصل 20تا) عبور کند تا مقادیر Edit دوم هر جفت درست شود؟
من می خواهم با تغییر عدد ثابت این رویداد خروج برای همه 20 تا اولی اتفاق بیفتد تا 20 دومی درست شوند.
oghab
یک شنبه 13 آذر 1384, 09:33 صبح
در رویداد onchange از edit1 بونیسید
edit2exit(sender);
shayan_delphi
سه شنبه 15 آذر 1384, 20:25 عصر
سلام
از محبت شما سپاسگزارم.
جوابهای که نوشته شده مشکل را حل نکرد ولی دوستی جواب را به من گفتند خیلی ساده بود.می نویسم و برای اطلاع شما اینجا می گذارم.
shayan_delphi
چهارشنبه 23 آذر 1384, 14:25 عصر
آخ جواب دوستم هم باز یک ایراد داشت ولی خودم یه دستوره باحال پیدا کردم:
در EditSabet.OnChange نوشتم
For i:=0 to Self.ComponentCount -1 do
begin
if Self.Components[i].tag=2 then
TEdit(Self.Components[i]).OnExit(TEdit(Components[i]));
end;
خیلی دستور باحالی بود!
vBulletin® v4.2.5, Copyright ©2000-1404, Jelsoft Enterprises Ltd.