ورود

View Full Version : سوال: کوچک شدن برنامه در نوار وظیفه به جای جمع شدن در گوشه سمت چپ هنگام مینیمایز؟



mbshareat
سه شنبه 02 بهمن 1403, 12:39 عصر
سلام علیکم
من در برنامه دو نوع کوچک شدن برنامه می بینم در یک پنجره، مثل استاندارد پنجره های غیر دلفی، با زدن دکمه مینیمایز، پنجره دیگه دیده نمیشه و فقط دکمه پنجره در تسکبار رو دارم و یک پنجره دارم که با مینیمایز، پنجره در گوشه پایین سمت چپ صفحه جمع میشه که ناخوشاینده. راهی هست که با کد، اون جمع شدن غیر استاندارد رو هم درست کنم. (البته نمیخوام دسکتاپ نمایش داده بشه و فقط میخوام پنجره برنامه مینیمایز شه و کاری به برنامه های دیگه ندارم)
یه سوال فرعی دیگه هم داشتم. یه تابعی شبیه isIconic داشتیم ولی درستش رو بلد نیستم.اگر کسی میدونه بهم بگه. برای اینکه بفهمم پنجره روی نوار وظیفه هست یا نه.
برای فهمیدن مینیمایز شدن میشه این کد رو استفاده کرد:
procedure WMSize(var Message: TWMSize); message WM_SIZE;
..
procedure TFileBrowserForm.WMSize(var Message: TWMSize);
begin
if Message.SizeType = SIZE_MINIMIZED then
..
End;

mbshareat
پنج شنبه 18 بهمن 1403, 09:47 صبح
procedure CreateParams(var Params: TCreateParams); override;
procedure TFileBrowserForm.CreateParams(var Params: TCreateParams);
begin
inherited CreateParams(Params);
with Params do
begin
ExStyle := ExStyle or WS_EX_APPWINDOW;
WndParent := GetDesktopWindow;
end;
end;




سلام. من این کد رو دارم اما وقتی پنجره اصلی برنامه رو مخفی می کنیم و پنجره دوم رو بالا میارم، در تسک بار دو آیکن برای برنامه وجود خواهد داشت که یکیشون با کلیک تعامل نمی کنه. این کد رو برای حذف آیکن زائد در نوار وظیفه گذاشته ام و وقتی میخوام پنجره دوم رو ببندم و پنجره اول نمایش داده بشه، خنثاش می کنم:
ShowWindow(Application.Handle, SW_HIDE);
اما یک برنامه دارم که در اون از کد خاصی برای تبدیل لیست باکس به ویرایشگر استفاده کرده ام و والد لیست باکس پنجره دوم رو پنجره اول قرار داده ام. در اون برنامه نمی تونم از کد دوم درست استفاده کنم، چون بعد از مینیمایز با کلیک آیکن در تسک بارخوب Restore نمیشه
یک مشکل مهم که داره اینه که وقتی پنجره رو با کلیک بزرگ می کنم، یک لحظه، نوار عنوان دو پنجره در سمت چپ دیده میشه.نمی دونم چطور از شر نوار عنوان پنجره دوم خلاص بشم. یه نفر فکر کرده بود یک برنامه دیگه در حافظه باز شده.یک نوار عنوان عجیب بدون دکمه بسته هم هست. چون پنجره دومم لبه نداره.( البته امتحام کردم لبه sizable هم داشته باشه، باز هم مشکل دیگه ای هست)
کسی می دونه چطور از نوار عنوان پنجره دوم خلاص بشم؟(مخفی کردن مفید نیست!)

دلفــي
یک شنبه 21 بهمن 1403, 08:09 صبح
برای مینیمایز کردن فرم های (فرعی) در تسکبار از کد زیر برای فرم مورد نظر استفاده کنید:


procedure TForm2.FormCreate(Sender: TObject);
begin
SetWindowLong(Handle, GWL_HWNDPARENT, 0);
end;


با اینکار فرم به جای جمع شدن در گوشه ی دسکتاپ بر روی تسکبار و در کنار فرم اصلی جمع می شود.

mbshareat
سه شنبه 23 بهمن 1403, 10:16 صبح
به نظر شما دو آیکن داشتن برنامه در تسک بار ایجاد سوال نمی کنه؟ مخصوصا که یک آیکنش کاملا بی استفاده باشه
توضیح:فرم اصلی با وجود فرم فرعی استفاده ای نداره.چون فرم اصلی لیست است و فرم فرعی محل مورد در فایل و هر دو تمام صفحه)