我的
blog開通了:)。今天就談談我最近寫透明元件(透明控制項)的dd吧。
網友提供的方法:
/透明的控制項, 一般繼承自tgraphiccontrol的
(就是那些沒有handle屬性, 不能有focus的控制項, 如image)
都有transparent屬性. 對twincontrol類的控制項, 要實現透明只要完成以下
四步基本上就成了.
1.在create中設定controlstyle :=
controlstyle - [csopaque];)
2. override 它的createparams方法, exstyle 裡加上ws_ex_transparent.
3. 修改它的parent的window style, 去掉ws_clipchildren.
inherited createparams(params);
with params do
begin
style := style and not ws_clipchildren;
style := style and not ws_clipsiblings;
exstyle := exstyle or ws_ex_transparent;
end;
4. 截獲wm_erasebkgnd, 什麼都不做直接返回1.(不搽除背景)
一般有上面3步能成. 有些控制項比如tpanel, 在它的paint中用了fillrect,
所以要實現透明的話還要override 它的paint方法, 自己畫.
按鈕透明需要進一步處理.
createparams裡加上style := style or bs_ownerdraw;
然後在wm_drawitem中自己畫吧
//我的研究發現
style := style and not ws_clipchildren;
style := style and not ws_clipsiblings;
沒有作用。
如果你要改變控制項位置和顏色,請攔截wm_move,和**_ctlcoloredit訊息,在裡面呼叫invalidate方法,重繪元件。
閱讀inside vcl 和 飛思的元件開發書籍。了解如何選擇適當的基類去繼承然後擴充套件成自己的類。建議寫控制項的朋友應先了解這方面的知識,不要從tobject開始寫起。controlstyle :=controlstyle - [csopaque];)很關鍵,看源**發現它影響了整個控制項的畫方法。現在已經實現了透明元件,可是用滑鼠移動該元件就出現重新整理不夠,背景混亂的問題。現在正在閱讀timage源**,看它是如何實現。想討論這方面技術的朋友請email:wenjunwu430@163.***
用Delphi開發DirectX控制項
2000 09 02 00 22 2058人閱讀收藏 舉報 microsoft推出的directx使我們在windows9x下開發遊戲軟體便利了許多。一般在介紹directx 的資料裡都講的是如何用vc 來開發,其實inprise公司的語言也可以用來開發基於directx的遊戲軟體。我們這裡用的是d...
delphi 安裝其他開發元件
一 安裝activex元件 1.選擇component 元件 import activex control 匯入控制項 開啟 import activex control 視窗 2。選擇需要安裝的控制項,單擊install 安裝 按鈕 二.安裝第三方控制項 1.pas檔案型別 1 選擇compone...
用delphi開發activex列印控制項
做web最不好弄的就是列印了,用ie自帶的列印功能不太完美,功能也不強,所以我就將fastreport 4.3報表整合到web中,實現的方法 delphi7的activex fastreport,下面就是實現的操作步驟 第 一 建立active form 第一步完成後,會產生form和tlb的檔案及...