delphi透明元件(控制項)開發

2021-03-31 08:56:31 字數 1337 閱讀 7585

我的

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的檔案及...