PDA

View Full Version : چطوری مشه که یک فرم (یا Application) رو Activate کنیم



Hamid_PaK
جمعه 07 مرداد 1384, 16:16 عصر
دوستان عزیز چطوری مشه که یک فرم (یا Application) رو Activate کنیم یعنی می خواهیم زمانی که برنامه در حالت غیر فعال است با کد مورد نظر بعلاوه بر ظاهر شدن بر روی همه فرمها ، فعال نیز شود ...
(بطور کلی یه جورایی Focus به فرم مورد تغییر کند)

خودم با این کد به نتیجه نرسیدم ...


// if not activate then;;;;;;;
SetWindowPos(Handle,HWND_TOPMOST,0,0,0,0,SWP_NOSIZ E+SWP_NOMOVE+SWP_NOACTIVATE);
SetWindowPos(Handle,HWND_NOTOPMOST,0,0,0,0,SWP_NOS IZE+SWP_NOMOVE);
// Just Bring Form to TOP;;;;

Tarrah
جمعه 07 مرداد 1384, 21:19 عصر
نمی دونم سوالتونو درست متوجه شدم یا نه.
ولی فکر می کنم وقتی فرمی رو همه ی فرمها باشه active هم هست.
می تونید اون رو show و stayontop کنید .

MSK
جمعه 07 مرداد 1384, 21:37 عصر
این رو هم یه امتحانی بکن:



BringWindowToTop(Handle);

Hamid_PaK
یک شنبه 09 مرداد 1384, 05:41 صبح
بیشتر توضیح میدم یک تایمر توی برنامه درست کنید که Clipboard رو چک کنه و Caption رو تغییر بده و برنامه رو بر روی همه فرم ها نشان بده حالا برنامه رو Minimize یا Deactive کنید از Explorer یا هر برنامه دیگه ای می خواهیم به Clipboard کلمه خاص رو ارسال کنیم برنامه در زمان درستی کلمه داخلClipboard فعال نمی شود یعنی فرم نمایش داده نشده و اگر در داخل فرم یک TEdit داشته باشیم کرسر به فرم و این Tedit انتقال پیدا نمی کند ...
امیدوارم که توضیح کاملی داده باشم !!!

MSK
یک شنبه 09 مرداد 1384, 08:07 صبح
پس مشکل شما با کلیپبرده نه فعالسازی فرم؟
در هرصورت برای فعالسازی فرم باید ازهمون دستور بالا استفاده کنید.

Hamid_PaK
یک شنبه 09 مرداد 1384, 20:22 عصر
دوست عزیز مشکل کلیپبرد نیست ، اون یک مثال بود برای اینکه شما تست کنید آیا این کار ممکن هست یا نه و یا مشکل کجاست ...

شما با یک تایمر هم می تونید این برنامه رو بنویسید توی رویداد OnTimer همین کدتون که میگید کار میکنه بذارید و Interval تایمر هم 3 ثانیه باشه ، تایمر رو فعال کنید و فرم رو از حالت فعال خارج کرده ...
بعد از اجرای OnTimer :
آیا فرم بروی همه فرم ها نشان داده می شود ؟؟؟
آیا اگر بعد از بقول خودمون فعال شدن می توانید فرم را با Alt+F4 ببندید (یعنی یه جوری Focus شده باشه )

این مشکل من هست دیگه نمی دونم باید چظوری توضیح بدم که مشکل اصلی رو متوجه شوید !!!!

vcldeveloper
دوشنبه 10 مرداد 1384, 02:13 صبح
procedure TForm1.Timer1Timer(Sender: TObject);
begin
SetForegroundWindow(Self.Handle);
end;

Hamid_PaK
دوشنبه 10 مرداد 1384, 06:19 صبح
با تشکر فراوان از آقای کشاورز مشکل حل شد ...