PDA

View Full Version : سوال: تشخیص کلیک خارج از ادیت؟



mbshareat
پنج شنبه 06 مهر 1391, 09:54 صبح
سلام
من یه ادیت دارم که مخفیه و با فشار یک کلید(!) ظاهر میشه.
میخوام وقتی کلید ظاهر میشه وقتی روی فرم یا کامپوننت دیگه ای مثل Image یا هر چیز دیگه ای کلیک شده این ادیت دوباره مخفی بشه. چطور میشه فهمید که خارج از ادیت کلیک شده؟
تو نسخه دلفی من رویداد onLostFocus برای ادیت نداریم (اصلا نمی دونم چنین چیزی توی نسخه هابپی بالاتر هست یانه؟؟) اگه داشتیم هم در مورد کلیک روی Image کمک نمی کرد

عقاب سیاه
پنج شنبه 06 مهر 1391, 11:32 صبح
درود
اگه درست متوجه شده باشم باید OnExit کمکتون کنه

mbshareat
پنج شنبه 06 مهر 1391, 22:36 عصر
سلام و درود خدا و رسول بر شما دوست گرامی
امتحان کردم کلیک روی یک دکمه رو متوجه میشه اما اگه توی ادیت باشیم و روی یه ایمیج کلیک کنیم متوجه نمیشه و هنوز میشه توی Edit تایپ کرد و رویداد OnExit هم اتفاق نمی افته.
در مورد کلیک بر روی Image چطور بفهمم؟(اگثر فرمم رو Image گرفته!)

Mahmood_M
جمعه 07 مهر 1391, 02:40 صبح
یک کامپوننت TApplicationEvents روی فرم بزارید ، در رویداد OnMessage چک کنید که Message ارسالی به برنامه چه نوعی هست ، اگر کلیک موس بود و Handle مربوط به Message هم مخالف با Handle مربوط به Edit بود ، یعنی در جایی خارج از Edit کلیک شده
برای مدیریت بهتر ، یک متغیر عمومی تعریف کنید ، وقتی درون Edit کلیک شد ، اون رو True و وقتی بیرونش کلیک شد ، اون رو False کنید ، مثال :

var
Form1: TForm1;
B : Boolean = False;

implementation

{$R *.dfm}

procedure TForm1.ApplicationEvents1Message(var Msg: tagMSG;
var Handled: Boolean);
begin
if Msg.message = WM_LBUTTONDOWN then
begin
if Msg.hwnd = Edit1.Handle then
B := True
else
B := False;
end;
end;


وقتی B برابر True باشه ، یعنی Edit فعاله ، در غیر اینصورت در خارج از Edit کلیک شده

موفق باشید ...

mbshareat
جمعه 07 مهر 1391, 09:19 صبح
سلام به سروران گرامی
روز عید تولد میلاد مولامون حضرت امام رضا (ع) رو تبریک عرض می کنم
از همه دوستان تشکر می کنم
جناب دانشجوی تویسرکانی از شما هم تشکر می کنم.
دلفی یه بخش فعاله که برنامه نویسهای واقعا باسوادی هم توی اون پیدا میشه!
اما راستش روشتون رو نفهمیدم.
من وقتی میخوام مساله ای رو مخصوصا نحوه کارکرد برنامم رو برای دوستام توضیح بدم گیر می کنم و توضیح واضحی نمیدم.
ظاهرا در فهمیدن صحبتهای برنامه نویسها هم مشکل دارم. منو ببخشید.
اما روش آقای محمود مهری به دردم خورد!