PDA

View Full Version : سوال: پیاده سازی Toolbar Mode موجود در jetaudio



mosafer_deltang
دوشنبه 03 مرداد 1390, 23:12 عصر
با سلام
در jetaudio قسمت بالای برنامه کنار دکمه های close و minimize یک دکمه دیگه به نام Toolbar Mode ON/OFF هست وقتی اونو میزنی jetaudio یه حالت مثل taskbar خود ویندوز میشه و بالای taskbar قرار میگیره حالا وقتی پنجره های ویندوز رو maximize می کنیم دیگه jetaudio زیر پنجره ها قرار نمی گیره و همیشه دیده میشه دقیقا مثل خود taskbar
آیا میشه فرم رو طوری درست کرد اینجوری بشه؟

یوسف زالی
دوشنبه 03 مرداد 1390, 23:33 عصر
سلام.
صرف نظر از اینکه شکل فرم چه جوریه، خاصیت FormStyle فرم خودتون رو روی fsStayOnTop تنظیم کنید تا بالای تمام برنامه های عادی نمایش داده بشه.

Felony
دوشنبه 03 مرداد 1390, 23:55 عصر
با استفاده از تابع SystemParametersInfo و ارسال SPI_GETWORKAREA به عنوان پارامتر اول میتونید محدوده فعلی WorkArea رو بگیرید و با ارسال SPI_SETWORKAREA به عنوان پارامتر اول میتونید محدوده WorkArea رو مشخص کنید ، براتون یه نمونه نوشتم :

var
WorkArea: TRect;
begin
// Get workarea
SystemParametersInfo(SPI_GETWORKAREA, 0, &WorkArea, 0);

// Set form height to 30 & change it,s position
Self.BorderStyle := bsNone;
Self.Width := WorkArea.Right;
Self.Height := 30;
Self.Top := WorkArea.Bottom - Self.Height;
Self.Left := 0;

// Change workarea
WorkArea.Bottom := WorkArea.Bottom - Self.Height;

// Set workarea
SystemParametersInfo(SPI_SETWORKAREA, 0, &WorkArea, SPIF_SENDCHANGE);
end;

mosafer_deltang
دوشنبه 03 مرداد 1390, 23:59 عصر
سلام.
صرف نظر از اینکه شکل فرم چه جوریه، خاصیت FormStyle فرم خودتون رو روی fsStayOnTop تنظیم کنید تا بالای تمام برنامه های عادی نمایش داده بشه.

اما مشکل این کار اینه که وقتی پنجره ها رو maximize کنید دیگه قسمت پایین اونا دیده نمیشه. تازه جت آیدیو stayontop نکرده

یوسف زالی
سه شنبه 04 مرداد 1390, 00:19 صبح
شما اگر از کد دوستمون استفاده کنی این مشکل رو دیگه نداری.
راستی مگه jetaudio روی فرم های ماکزیمایز رو نمی پوشونه؟
در ضمن از کجا میدونی از stayontop استفاده نکرده؟

mosafer_deltang
سه شنبه 04 مرداد 1390, 00:28 صبح
شما اگر از کد دوستمون استفاده کنی این مشکل رو دیگه نداری.
راستی مگه jetaudio روی فرم های ماکزیمایز رو نمی پوشونه؟
در ضمن از کجا میدونی از stayontop استفاده نکرده؟

نه وقتی toolbar mode مثل حالتی باشه که تو عکس گذاشتم دیگه وقتی پنجره هارو ماکزیمم می کنید روشونو نمیپوشونه
از stay on top استفاده نکرده چون پنجره ها رو که روش بذاری روی اونا وای نمیسته و میره زیرشون

vcldeveloper
سه شنبه 04 مرداد 1390, 13:50 عصر
در jetaudio قسمت بالای برنامه کنار دکمه های close و minimize یک دکمه دیگه به نام Toolbar Mode ON/OFF هست وقتی اونو میزنی jetaudio یه حالت مثل taskbar خود ویندوز میشه و بالای taskbar قرار میگیره حالا وقتی پنجره های ویندوز رو maximize می کنیم دیگه jetaudio زیر پنجره ها قرار نمی گیره و همیشه دیده میشه دقیقا مثل خود taskbar
آیا میشه فرم رو طوری درست کرد اینجوری بشه؟
به این میگن AppBar. می تونید در ویندوز یک AppBar ایجاد کنید که مثل Taskbar ویندوز باشه:

Using Application Desktop Toolbars (http://msdn.microsoft.com/en-us/library/aa969323.aspx)

این رو هم خودتون می تونید پیاده سازی کنید، و هم کامپوننت هایی وجود دارند که این را پیاده سازی کردند.

BORHAN TEC
سه شنبه 04 مرداد 1390, 13:58 عصر
در ضمن توجه داشته باشید که در فصل 16 کتاب Delphi 6 Developers Guide به صورت کامل در مورد ساخت AppBar بحث شده است.