PDA

View Full Version : ShowInTaskbar



مهران رسا
جمعه 31 اردیبهشت 1389, 16:56 عصر
آیا فرم ها همچین خصوصیتی دارند ؟
مشکل اینجاست که فقط فرم اصلی (Application.MainFormOnTaskbar := true) در Taskbar نشون داده میشه و فرم ها ثانویه دارای چنین خصوصیتی نیستند .

جواد ملاولی
جمعه 31 اردیبهشت 1389, 17:44 عصر
سلام.
اگه هنگام نشون دادن فرمهای دیگه فرم اصلی رو Hide کنی، این مشکلی که گفتی وجود داره؛ در غیر اینصورت با Minimize کردن هر کدام از فرمها، کل برنامه Minimize میشه.

مهران رسا
جمعه 31 اردیبهشت 1389, 17:54 عصر
سلام.
اگه هنگام نشون دادن فرمهای دیگه فرم اصلی رو Hide کنی، این مشکلی که گفتی وجود داره؛ در غیر اینصورت با Minimize کردن هر کدام از فرمها، کل برنامه Minimize میشه.
خب راه حل چیه ؟ اصلاً با صرف نظر از وضعیت فرم اصلی چطور میشه فرم های ثانویه رو در Taskbar به نمایش در آورد ؟

جواد ملاولی
جمعه 31 اردیبهشت 1389, 20:28 عصر
خب راه حل چیه ؟ اصلاً با صرف نظر از وضعیت فرم اصلی چطور میشه فرم های ثانویه رو در Taskbar به نمایش در آورد ؟
یک مساله، مساله ی نمایش فرمهای ثانویه در Taskar ویندوزه و مساله ی دیگه باز هم نمایش در TaskBar ولی در حالت Minimize هستش.
در مورد مساله ی اول شما باید کد زیر رو در سورس پروژه بنویسی:

Application.MainFormOnTaskbar := False;چون اگه خاصیت بالا True باشه، با Hide کردن فرم اصلی و نشون دادن فرمهای دیگه، در TaskBar چیزی از برنامه شما باقی نمی مونه.
البته در صورت False کردن، در ویندوز ویستا و هفت، Aero رو خوب جواب نمیده که شاید خیلی هم مهم نباشه.

در مورد مساله ی دوم هم در هر کدام از فرمهاتون خواستید برنامه رو minimize کنید دستور زیر رو بنویسید:

Application.Minimize;
که با این دستور، برنامه در TaskBar نشون داده میشه؛ حتی اگه فرم اصلی Hide باشه.
امیدوارم تونسته باشم جوابت رو بدم.

مهران رسا
جمعه 31 اردیبهشت 1389, 22:02 عصر
Application.MainFormOnTaskbar := False;

با اینکار گزینه ای که در Taskbar قرار میگیره مربوط به فرم اصلی هست نه فرم های ثانویه . زمانی که فرم ثانویه Minimize میشه اصلاً در Taskbar قرار نمیگیره . میره گوشه سمت چپ دسکتاپ .

کسی از دوستان راه حلی سراغ نداره ؟

جواد ملاولی
جمعه 31 اردیبهشت 1389, 23:36 عصر
با اینکار گزینه ای که در Taskbar قرار میگیره مربوط به فرم اصلی هست نه فرم های ثانویه . زمانی که فرم ثانویه Minimize میشه اصلاً در Taskbar قرار نمیگیره . میره گوشه سمت چپ دسکتاپ .
نه دوست عزیز؛ با این کار گزینه ای که در TaskBar قرار می گیره مربوط به پروژه است نه فرم اصلی، اگه دقت کنی Title اون هم اسم پروژه است.
ولی اگه بنویسی:

Application.MainFormOnTaskBar := True;
در اینصورت همونجوری که شما گفتی میشه.

برای Minimize کردن هم گفتم که از کد زیر استفاده کن:

Application.Minimize;

مهران رسا
شنبه 01 خرداد 1389, 09:27 صبح
در اینصورت همونجوری که شما گفتی میشه.
راه حل چیست اخوی ؟

جواد ملاولی
شنبه 01 خرداد 1389, 11:52 صبح
راه حل چیست اخوی ؟

Application.MainFormOnTaskbar := False;

مهران رسا
شنبه 01 خرداد 1389, 12:22 عصر
برادر من :لبخند: با اینکار اون گزینه ای که در Taskbar قرار میگیره مربوط به Project هست نه فرم جاری (ثانویه) .

ضمناً با اینکار :


Application.MainFormOnTaskBar := True;و در حالی که فرم اصلی برنامه مخفی هست ، اصلاً آیکن فرم های ثانویه در Taskbar نمایش داده نمیشه .



ShowInTaskbar

آیا فرم ها همچین خصوصیتی دارند ؟اصلاً شما فکر کن 100 تا فرم در یک پروژه داری ؛ اگه بخوای همه این فرم ها در Taskbar نشون داده بشند چه میکنی ؟

vcldeveloper
شنبه 01 خرداد 1389, 13:14 عصر
باید متد CreateParams مربوط به فرم های فرزند را Override کنید، و به Style پنجره مربوطه WS_EX_APPWINDOW را اضافه کنید. علاوه بر این، باید پنجره Parent آن را هم بر روی پنجره دسکتاپ تنظیم کنید:

TForm2 = class(TForm)
private
{ Private declarations }
protected
procedure CreateParams(var Params: TCreateParams); override;
public
{ Public declarations }
end;

var
Form2: TForm2;

implementation

{$R *.dfm}

{ TForm2 }

procedure TForm2.CreateParams(var Params: TCreateParams);
begin
inherited;
Params.ExStyle := Params.ExStyle + WS_EX_APPWINDOW;
Params.WndParent := GetDesktopWindow;
end;