PDA

View Full Version : سوال: کمرنگ کردن اشیا



Mask
شنبه 07 خرداد 1390, 11:47 صبح
با سلام
چطوری میتونم اشیایی مثل باتن یا ادیت رو کمرنگ کنم.
مثل فرم که آلفاش رو کم میکنیم.
ممنون.

یوسف زالی
دوشنبه 09 خرداد 1390, 08:16 صبح
سلام.
ظاهرا ویندوز فقط این کارو برای فرم ها می تونه انجام بده.


procedure TCustomForm.SetLayeredAttribs;
const
cUseAlpha: array [Boolean] of Integer = (0, LWA_ALPHA);
cUseColorKey: array [Boolean] of Integer = (0, LWA_COLORKEY);
var
AStyle: Integer;
begin
if not (csDesigning in ComponentState) and
(Assigned(SetLayeredWindowAttributes)) and HandleAllocated then
begin
AStyle := GetWindowLong(Handle, GWL_EXSTYLE);
if FAlphaBlend or FTransparentColor then
begin
if (AStyle and WS_EX_LAYERED) = 0 then
SetWindowLong(Handle, GWL_EXSTYLE, AStyle or WS_EX_LAYERED);
SetLayeredWindowAttributes(Handle, FTransparentColorValue, FAlphaBlendValue,
cUseAlpha[FAlphaBlend] or cUseColorKey[FTransparentColor]);
end
else
begin
SetWindowLong(Handle, GWL_EXSTYLE, AStyle and not WS_EX_LAYERED);
RedrawWindow(Handle, nil, 0, RDW_ERASE or RDW_INVALIDATE or RDW_FRAME or RDW_ALLCHILDREN);
end;
end;
end;



کد بالا رو برای Button و Memo تست کردم. حتی برای یه فرم MDI هم این اتفاق نمی افته.
ارور هم نمی ده ولی TransParent یا AlphaBlend هم نمی شه.

Mask
دوشنبه 09 خرداد 1390, 18:35 عصر
ممنون
زحمت كشيديد .
ميدونستم برا فرم ميشه.
گفتم شايد روشي برا بقيه كامپوننتها باشه. كه فرموديد نميشه.
به هر حال ممنون.

M_Maskout
چهارشنبه 11 خرداد 1390, 09:33 صبح
سلام
احتمالاً، تنها راه، استفاده از تصاویر PNG یا BMP 32 هست. (و البته ساختن کامپوننت جدید و ...)