PDA

View Full Version : سوال: مینیمایز غیر عادی



Mask
یک شنبه 14 آذر 1389, 21:14 عصر
با سلام
سوالم اینه که نمیدونم چه قابلیتی از فرمم رو فعال کردم که وقتی کاربر میخواهد برنامه رو مینیمایز کنه و روی دکمه مینیمایز کلیک میکنه ،به جای اینکه برنامه بپره و بره به taskbar میره و رویه سره دکمه استارت میشینه.
چیکار کنم که مینیمایز فرمم عادی بشه؟
ممنون.

AliReza Vafakhah
یک شنبه 14 آذر 1389, 23:50 عصر
به احتمال زیاد فرمی که Minimize میشه فرم اصلی نیست و یا شاید مشکل از BorderStyle است. باز این دو را چک کنید

Mask
پنج شنبه 18 آذر 1389, 14:47 عصر
ممنون.
یعنی کسی واقعا جوابشو نمیدونه؟

Felony
پنج شنبه 18 آذر 1389, 15:21 عصر
با سلام
سوالم اینه که نمیدونم چه قابلیتی از فرمم رو فعال کردم که وقتی کاربر میخواهد برنامه رو مینیمایز کنه و روی دکمه مینیمایز کلیک میکنه ،به جای اینکه برنامه بپره و بره به taskbar میره و رویه سره دکمه استارت میشینه.
چیکار کنم که مینیمایز فرمم عادی بشه؟
ممنون.

فرمی که این اتفاق براش میافته فرم اصلی برنامتون هستی یا یکی از فرم های جانبی ؟

Mask
پنج شنبه 18 آذر 1389, 17:00 عصر
یکی از فرمهای جانبیه
فرم شماره 3 هست
اما به این مربوط نیست.
چون برا تست یه برنامه دیگه با چنتا فرم ساختم که مینیمایزش عادیه.

Felony
پنج شنبه 18 آذر 1389, 17:23 عصر
یکی از فرمهای جانبیه
فرم شماره 3 هست
اما به این مربوط نیست.
چون برا تست یه برنامه دیگه با چنتا فرم ساختم که مینیمایزش عادیه.

Minimize ش عادیه یعنی چی ؟!

موقع اجرای برنامه Application تو Taskbar یک آیکن برای برنامه میسازه که مربوط میشه به Main Form ، یعنی با Minimize کردن فرم اصلی برنامه همه فرم ها Minimize میشن ، ولی وقتی فرم 2 یا n رو Minimize میکنید که تو Taskbar آیکنی نداره توقع دارید چه عملیاتی اجرا بشه که عادی طلقی شه ؟!

Mask
پنج شنبه 18 آذر 1389, 17:30 عصر
حق با شماست.
حالا چطوری به Application بفهمونیم که اون مینیمایز بشه.؟

vcldeveloper
پنج شنبه 18 آذر 1389, 17:44 عصر
حالا چطوری به Application بفهمونیم که اون مینیمایز بشه.؟
Application.Minimize

Felony
پنج شنبه 18 آذر 1389, 17:44 عصر
باید یک Message Handler برای پیغام WM_SysCommand فرم مورد نظر بنویسید و وقتی پیغام SC_Minimize رو دریافت کردید یعنی کاربر بر روی دکمه Minimize فرم کلیک کرده و اون موقع متد Minimize مربوط به Application رو فراخوانی میکنید تا برنامه کلا Minimize بشه ، برای این کار روال MyMinimize رو در قسمت Private کلاس فرم مورد نظر به صورت زیر اعلان کنید :

procedure MyMinimize (var Msg: TWMSysCommand) ; message WM_SYSCOMMAND;

و به صورت زیر کدش رو بنویسید :

procedure TForm2.MyMinimize(var Msg: TWMSysCommand);
begin
if MSG.CmdType= SC_MINIMIZE then
Application.Minimize;
DefaultHandler(Msg);
end;

Mask
پنج شنبه 18 آذر 1389, 17:53 عصر
آخرشی به خدا:خجالت::لبخند:
اگه بخام برنامم هم مینیمایز بشه هم یه کار دیگه انجام بده در همین روال بنویسمش حله؟

Felony
پنج شنبه 18 آذر 1389, 17:59 عصر
اگه بخام برنامم هم مینیمایز بشه هم یه کار دیگه انجام بده در همین روال بنویسمش حله؟
بله ، فقط اون DefaultHandler فراموش نشه ، با نوشتن اون DefaultHandler شما به برنامه اعلان میکنید که علاوه بر کد شما کدهای پیش فرض برای این پیغام رو هم اجرا کنه ، اگر اون DefaultHandler رو ننویسید یعنی کنترل همه پیغام های وابسته به WM_SYSCOMMAND رو خودتون تو روال نوشته شده بر عهده گرفتید و اگر کد مناسب برای دکمه های Close یا Minimize یا ... رو ننوشته باشید اون دکمه ها از کار میافتن .

khoshblagh
چهارشنبه 26 آذر 1399, 08:28 صبح
با سلام خدمت دوستان
با کد جناب تاجیک فرم فرعی برنامه مینمایز میشه و تا اینجا مشکلی نیست . ولی بعدا فرم را restor میکنیم فرم اصلی برنامه هم restor نمیشود. در حقیقت فقط فرم مورد فرعی نمایش داده میشود. لطفا اساتید راهنمایی بفرمایند. توضیح بیشتر اینکه میخواهم علاوه بر فرم فرعی مورد نظر فرم اصلی برنامه هم همزمان برگشت داده شود. متشکرم.

یوسف زالی
چهارشنبه 26 آذر 1399, 08:56 صبح
سلام. دقیقا همون کد رو برای Restore اصلاح کنید.


procedure TForm1.MyMinimize(var Msg: TWMSysCommand);
begin
if MSG.CmdType= SC_MINIMIZE then
Application.Minimize
else if MSG.CmdType= SC_RESTORE then
Application.Restore;


DefaultHandler(Msg);
end;

khoshblagh
چهارشنبه 26 آذر 1399, 18:05 عصر
با سلام خدمت جناب زالی و سایر دوستان
من همین کار را انجام داده بودم ولی عملا فقط فرم فرعی باز میشود؟!

ariobarzan
دوشنبه 04 اسفند 1399, 21:46 عصر
چطوری این پروسیجر را صدا بزنیم ؟