PDA

View Full Version : تشخیص محل کلیک موس



User-os
یک شنبه 21 بهمن 1386, 11:20 صبح
سلام .
من تعدادی کامپوننت از یک نوع ( مثلا ده تا دکمه ) روی صفحه دارم میخوام بدونم چطور میشه محل کلیک موس رو مشخص کرد .یعنی چطور بدونم روی کدوم کامپوننت کلیک شده.

ممنون. یه چیزی یحتمل تو مایه های sender است که کدی که من میزارم جواب نمیده
یه حقله گذاشتم که sender با هر کامپوننت مساوی شد بعد عمل x انجام بشه .اما جواب نمیده.البته این کد رو توی formCreate نوشتم.

delphi5
یک شنبه 21 بهمن 1386, 12:49 عصر
از tag یکی از کامپوننت هات استفاده کن .
فرض کن 10 تا دکمه داریم
button1 رو در نظر بگیر . در Button در Button1Click مقدار tag رو برابر 1 بذار .
در Button2Click مقدار Button1.tag رو 2 بذار
در Button3Click مقدار Button1.tag رو 3 بذار
در Button4Click مقدار Button1.tag رو 4 بذار
در Button5Click مقدار Button1.tag رو 5 بذار
در Button6Click مقدار Button1.tag رو 6 بذار
در Button7Click مقدار Button1.tag رو 7 بذار
در Button8Click مقدار Button1.tag رو 8 بذار
در Button9Click مقدار Button1.tag رو 9 بذار
حالا هر زمان که مقدار button1.tag رو بخونی میتونی متوجه بشی که کجا کلیک شده

User-os
یک شنبه 21 بهمن 1386, 14:41 عصر
حالا هر زمان که مقدار button1.tag رو بخونی میتونی متوجه بشی که کجا کلیک شدهممنون از جوابتون
اما یکم دقت کنید
این کد رو ببینید


for i:=1 to 10 do
for j:=1 to 6 do
begin
if sender=a[i][j] then
a[i][j].Caption:=inttostr (a[i][j].tag)
end ;
end ;

m-khorsandi
یک شنبه 21 بهمن 1386, 14:49 عصر
با فرض اینکه نام کامپوننت به دردت میخوره :


Caption := TButton(Sender).Name;

rasool_brn
یک شنبه 21 بهمن 1386, 16:29 عصر
البته این کد رو توی formCreate نوشتمشما این کد رو در رویداد OnCreate فرم نوشتین، این به این معنیه که این کد فقط یک بار اجرا می شه و اون هم در هنگام ایجاد فرم است،طبیعی هم هست که شیء From به عنوان پارامتر به این رویداد ارسال می شه و Sender برابر From هست نه دکمه ای که فشرده می شه.

User-os
یک شنبه 21 بهمن 1386, 20:26 عصر
شما این کد رو در رویداد OnCreate فرم نوشتین، این به این معنیه که این کد فقط یک بار اجرا می شه و اون هم در هنگام ایجاد فرم است،طبیعی هم هست که شیء From به عنوان پارامتر به این رویداد ارسال می شه و Sender برابر From هست نه دکمه ای که فشرده می شه.

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

Mahmood_M
یک شنبه 21 بهمن 1386, 23:13 عصر
همه جور امتحان کردم به نظر شما کجا بنویسم
هدفتون از این کار چیه؟ در چه زمانی میخواید بفهمید که کدوم دکمه کلیک شده ؟!
جوری که از کدتون معلومه می خواید Caption مربوط به دکمه Click شده رو عوض کنید ، خوب در همون رویداد OnClick دکمه این کار بکنید و Caption اش رو تغییر بدید ...
نوشتن این کد در رویداد OnCreate چه اطلاعاتی میتونه بهتون بده ؟

وقتی یک دکمه کلیک میشه چه کدی اجرا میشه ؟!

....

User-os
دوشنبه 22 بهمن 1386, 12:38 عصر
هدفتون از این کار چیه؟ در چه زمانی میخواید بفهمید که کدوم دکمه کلیک شده ؟!
جوری که از کدتون معلومه می خواید Caption مربوط به دکمه Click شده رو عوض کنید ، خوب در همون رویداد OnClick دکمه این کار بکنید و Caption اش رو تغییر بدید ...
نوشتن این کد در رویداد OnCreate چه اطلاعاتی میتونه بهتون بده ؟

وقتی یک دکمه کلیک میشه چه کدی اجرا میشه ؟!

....


یه جور پیاده سازی بازی مینی سوئیپر ویندوزه
.شما در نظر بگیرید تعداد متغیری دکمه داریم چهل ، پنجاه ..نمیشه برای هر دکمه جداگانه نوشت
من یک آرایه از دکمه ها تعریف کردم بعد از شروع بازی هر دکمه یه مقداری داره بعضی حاوی عدد شاخص بمب و اونهایی هم که خالی از بمب هستند حاوی عدد مربوط به تعدا دبمبهایی هستند که در حوالی این خونه ها ست.

هر بار که کلیک کنیم باید تگ دکمه رو تشخیص بدیم

میدونم که با حل senderمیشه دو حلقه تو در تو گذاشتم که sender با هر دکمه برابر شد
تگ دکمه رو تو کپشنش بزاره اما کد رو هر جایی میذارم جواب نمیده