2016-06-12 63 views
2

在tStringGrid OnSelectCell事件的OnDrawCell事件給了我一個「矩形」記錄,讓我知道那裏的真實像素座標爲:從小區座標帆布像素位置在德爾福

OnDrawCell(Sender: TObject; ACol, ARow: Integer; Rect: TRect; State: TGridDrawState); 

另手,OnSelectCell只給我行/列座標。

OnSelectCell(Sender: TObject; ACol, ARow: Integer; var CanSelect: Boolean); 

如何將行/列轉換爲像素座標?

我需要這些,因爲我需要在運行時創建一個ComboBox來覆蓋整個選定的單元格,但只有在選中該單元格時才需要。我知道如何做所有事情,但我不知道如何獲得座標(現在,我只是在父tStringGrid的0,0處創建組合)。

我使用的是Delphi7,但我認爲這是一個普遍問題,與Delphi版本無關。 PS:我知道有很多商業軟件和免費軟件組件在一個單元內部實現了一個組合框,但是我不能和/或不想使用這些組件。

謝謝

回答

4

您可以決定細胞的屏幕座標使用CellRect method

附:你有沒有試過將控件集成到StringGrid中?
當您遇到控件問題(以網格作爲父項)行爲時,請看this topic

+0

完全是我在找的東西。僅供將來參考: myRect:=(發件人爲TStringGrid).cellRect(aCol,aRow); – ZioBit

+0

關於整合...不是真的。我剛剛開始寫我的自定義onDrawCell例如... – ZioBit

+1

好的,我已經添加了一個關於可能的未來問題的鏈接。 – MBo