PDA

View Full Version : سوال: چطور می تونم کامپوننت از نوع TCustomControl رو Tansparent کنم؟



mbshareat
شنبه 06 خرداد 1391, 19:22 عصر
سلام
من چند تا کامپوننت دارم که از نوع CustomControl هستند تازگی متوجه شدم که لبه کامپوننتم رنک خاکستری داره نه رنگ فرم زیر کامپوننت!
تو اینترنت جستجو کردم این کد رو از اینجا (http://www.delphidabbler.com/tips/74) پیدا کردم:


protected {in control declaration}

procedure CreateParams(var params: TCreateParams); override;

procedure TTransparentGroupbox.CreateParams(var params: TCreateParams);
begin
inherited CreateParams(params);
params.ExStyle := params.ExStyle or WS_EX_TRANSPARENT;
end;

{Add a handler for the WM_ERASEBKGND message}
procedure WMEraseBkGnd(var msg: TWMEraseBkGnd); message WM_ERASEBKGND;

procedure TTransparentGroupbox.WMEraseBkGnd(var msg: TWMEraseBkGnd);
begin
SetBkMode (msg.DC, TRANSPARENT);
msg.result := 1;
end;
ولی وقتی استفاده می کنم باعث میشه زمان طراحی وقتی کامپوننت رو جابجا می کنم ظاهر کامپوننت خراب بشه!
کسی راهی داره که چیزی مثل لیبل داشته باشم که فضای خالی کامپوننت به رنگ زیرش بشه!
البته لازمه بگم که مجبورم از CustomControl استفاده کنم چون فوکوس رو نیاز دارم و نمی تونم ازTLabel یا TGraphicControl استفاده کنم.