PDA

View Full Version : نمايش پنجره Hint گوشه پايين سمت راست روي Takbar



mahdy.asia
چهارشنبه 15 تیر 1390, 16:45 عصر
سلام من نرم افزار سازمان الكترونيك پياده سازي كردم مي خواهم امكاني در سيستم اضافه نمايم تا هنگامي كه براي كسي پيام ارسال مي گردد علاوه بر اينكه فرد پيام را در باكس خود مي تواند ببيند اگر سازمان الكترونيك Minimize بود گوشه سمت راست پيام ظاهر گردد كه فرد به باكس خود مراجعه نمايد

Mask
چهارشنبه 15 تیر 1390, 19:43 عصر
اگه از دلفی 2009 به بعد استفاده میکنید ، میتونید از کامپوننت Tray خود دلفی استفاده کنید.
اگه از ورژن های پایین تر استفاده میکنید. میتونید از کامپوننت Cool Tray استفاده کنید.

AliReza Vafakhah
چهارشنبه 15 تیر 1390, 23:59 عصر
فکر کنم منظورم دوستمون اینه که کادر Tip در بالای Taskbar ظاهر بشه ، مثل خیلی از نرم افزارها از جمله Ashampoo.

دو روش وجود داره یکی خودتون یک Tip سفارشی درست کنید و یا از کامپوننت استفاده کنید (مثل TMS و Berg Soft)

اگر خودتون کادر Tip را طراحی کردید جهت نمایش در بالای Taskbar پایین صفحه از کد زیر استفاده کنید.

ابتدا با کد زیر ارتفاع Taskbar را به دست آورید.


function GetTaskbarHeight: integer;
var
hTB: HWND; // taskbar handle
TBRect: TRect; // taskbar rectangle
begin
hTB:= FindWindow('Shell_TrayWnd', '');
if hTB = 0 then
Result := 0
else
begin
GetWindowRect(hTB, TBRect);
Result := TBRect.Bottom - TBRect.Top;
end;
end;

و سپس در رویداد FormShow از کد زیر استفاده کنید.

//set form postion in bottom right
Self.Left:= (Screen.Width - Self.Width) - 1;
Self.Top:= (Screen.Height - GetTaskbarHeight) - Self.Height;

Felony
پنج شنبه 16 تیر 1390, 06:17 صبح
اگر خودتون کادر Tip را طراحی کردید جهت نمایش در بالای Taskbar پایین صفحه از کد زیر استفاده کنید.

ابتدا با کد زیر ارتفاع Taskbar را به دست آورید.
اگر من بودم به جای اون کد تو رویداد OnShow به صورت زیر عمل میکردم :

var
WorkArea: TRect;
begin
SystemParametersInfo(SPI_GETWORKAREA, 0, &workarea, 0);
Self.Top:= WorkArea.Bottom - Self.Height;
Self.Left:= WorkArea.Right - Self.Width;
end;

mahdy.asia
پنج شنبه 16 تیر 1390, 15:19 عصر
من از راهنمايي شما استفاده كرده و كادر Tip را طراحي كردم و برنامه بدون مشكل اجرا گرديد اما زير پنجره فعال قرار مي گيرد چطور مي توانم روي همه پنجره ها آن را اجرا نمايم

Felony
پنج شنبه 16 تیر 1390, 22:33 عصر
متد BringToFront فرم رو صدا بزنید یا FormStyle رو با fsStayOnTop مقداردهی کنید .

ehp_kz6597
جمعه 17 تیر 1390, 06:18 صبح
سلام
جناب تاجیک میشه بفرمایید چرا


اگر من بودم به جای اون کد تو رویداد OnShow به صورت زیر عمل میکردم :

var
WorkArea: TRect;
begin
SystemParametersInfo(SPI_GETWORKAREA, 0, &workarea, 0);
Self.Top:= WorkArea.Bottom - Self.Height;
Self.Left:= WorkArea.Right - Self.Width;
end;

Felony
جمعه 17 تیر 1390, 11:43 صبح
سلام
جناب تاجیک میشه بفرمایید چرا
چون روش استاندارد گرفتن محدوده میز کار هست و از کد قبلی بهینه تر هست ؛ در ضمن ممکنه اون کلاس Shell_TrayWnd در نسخه های بعدی ویندوز تغییر نام بده و ...