PDA

View Full Version : minimize



free
شنبه 05 مرداد 1387, 09:52 صبح
سلام.
یک فرم اصلی دارم و چندین فرم دیگر . همه فرمها را بنا به دلایلی showmodal می نمایم. حال می خواهم در هر فرم که دکمه minimize آن فرم را کلیک می کنم کل برنامه minimize بشه و کاربر به desktop دسترسی پیدا کنه.چگونه؟

Valadi
شنبه 05 مرداد 1387, 10:03 صبح
سلام
ای دو راه تست کن

procedure TForm1.Button1Click(Sender: TObject);
var
h: HWnd;
begin
h := Handle;
while h > 0 do
begin
if IsWindowVisible(h) then
PostMessage(h, WM_SYSCOMMAND, SC_MINIMIZE, 0);
h := GetNextWindow(h, GW_HWNDNEXT);
end;
end;

// Or Simulate Win + M:

procedure TForm1.Button1Click(Sender: TObject);
begin
Keybd_event(VK_LWIN, 0, 0, 0);
Keybd_event(Byte('M'), 0, 0, 0);
Keybd_event(Byte('M'), 0, KEYEVENTF_KEYUP, 0);
Keybd_event(VK_LWIN, 0, KEYEVENTF_KEYUP, 0);
end;

mms_4004
شنبه 05 مرداد 1387, 20:15 عصر
با سلام دو راه به ذهنم می رسه که ناقصه اما شاید کمکی به شما کنه

1. اینکه توی یه رخدادی که زمانی که هنگام مینی مایز کردن فرم انجام می شه یه تکه کد بنویسید

IF form1.windowstate=wsminimized then
و بعدش تمام فرمهاتون یا فرم اصلیتون رو مینیمایز کنید.

2. اینکه از actionlist استفاده کنید که من اونها رو بلد نیستم اما یکی از رخدادهای استاندارش همین مینی مایز کردت فرمه زمانی که فرم می نیمایز بشه اون کار انجام می شه.:لبخندساده:

Hsimple11
یک شنبه 06 مرداد 1387, 00:13 صبح
شبیه سازی Win+M کار مناسبی به نظر می رسد.