2010-09-01 41 views
1

當然你知道在設計時使用ImageList和ImageIndex屬性在對象檢查器中進行簡單的操作。分配圖像列表後,您可以單擊ImageIndex屬性,並顯示圖像的好列表。 我想讓我自己的控件,它有imagelist和imageindex屬性。但我想知道,我如何讓對象檢查器「知道」(或讓它知道),我的定義imageindex屬性應該從組合框中拾取。 (這是建立在對象檢查器本身) 有誰知道這個訣竅?如何在設計時將Imagelist屬性與Objectinspector中的ImageIndex屬性相關聯?

感謝名單非常

+0

您對「對象檢查器」一詞的使用表明您使用的是Delphi。您也將此問題標記爲C#;爲什麼?爲這兩種語言開發組件是不一樣的。 – 2010-09-02 02:41:46

+0

是的,我試圖在C#開始時使用這個組件,但我有更多使用Delphi的技巧,而且我也在Delphi中遇到過這個問題。 我發佈了很多關於Delphi問題的問題,這裏在stackoverflow和幾個小時(幾分鐘)我得到了答案。所以我試圖把它標記爲C#。有20多倍的C#標籤,所以我期望迅速回答。 ;-)。根據(沒有c#)反應到目前爲止,我瞭解到,「德爾福有強大的社區」的意思是什麼意思.... :-) – lyborko 2010-09-02 06:11:31

回答

3

我從來沒有試過這樣做,但我懷疑,這將工作:

在您的組件,申報ImageIndex財產不是integer,但作爲TImageIndex

即,寫(例如)

private 
    FImageIndex: TImageIndex; 
published 
    property ImageIndex: TImageIndex read FImageIndex write SetImageIndex default -1; 

代替

private 
    FImageIndex: integer; 
published 
    property ImageIndex: integer read FImageIndex write SetImageIndex default -1; 

TImageIndex被定義爲

type 
    TImageIndex = type Integer; 

所以它是真正的整數,但不同類型的。

(作爲一個註腳,如果定義已經

type 
    TImageIndex = Integer; 

然後TImageIndex本來的Integer只是一個名字,所以沒有人(甚至沒有IDE)就已經能夠從Integer區分TImageIndex 。現在它們是兩種不同的類型,但當然是分配兼容的。)

+0

不,這是行不通的...問題是(我所看到的),那你必須在某處聲明,這個ImageIndex屬於那個Imagelist。想象一下你有3個ImageLists和3個imageindexes。對象檢查員如何「知道」哪些屬於什麼? – lyborko 2010-09-01 20:41:22

+0

@Iyborko:這可能是*太*,是的。 – 2010-09-01 20:43:30

+0

我現在嘗試了...實際上有一件事情發生了變化:不是編輯框,通過它你可以編輯整數值,當我嘗試編輯imageindex值時出現組合框箭頭。我非常感謝你的回答,我說對不起,如果我的No聽起來有點傲慢...... – lyborko 2010-09-01 20:51:28

0

這比Andreas建議的有點複雜。你可以研究Jedi VCL處理這個問題的方式。在Design文件夾中搜索TJvDefaultImageIndexProperty作爲開始。

0

要讓Object Inspector知道,您必須在設計包中註冊一個Property Editor。

如果您使用的是jvcl,請查看jvcl \ design \ JvDsgnEditors中定義的TJvDefaultImageIndexProperty類。

後你在註冊過程調用RegisterPropertyEditor這樣擁有它,到:

​​

對於澄清,看看在JVCL \設計\ JvStdCtrlsReg.pas或谷歌德爾福OTA的例子。

相關問題