這是很多人經常需要實現的功能,但是TDbgrid類並沒有提供類似col和row的屬性,所以不能直接獲得這些信息。所以有很多朋友就開始從DataSource來開始想辦法。但是我們靜下心來考慮,雖然TDbgrid沒有提供col和row屬性,但是他的基類TCustomGrid卻是實現了row和col屬性。因此我們可以重新派生一個叫做的TMgrid的類來輸出row和col屬性,並將dbgrid的實例強制轉換成TMgrid ,既可准確快速的獲取這兩個屬性了,代碼如下:
Type
TMgrid = class (TDbgrid);
…
Begin
…
ShowMessage(IntToStr(TMgird(DbGrid1).row));
ShowMessage(IntToStr(TMgird(DbGrid1).rol));
…
End;
從這個例子中我們不難得到這樣的啟示,當我們無法從當前使用的類直接獲取我們需要的信息時,不要急於求成而繞彎路,我們可以去考察一下它的基類(基類的基類…,一直找上去),是否為我們提供了我們需要的信息。如果有,我們可以簡單的從當前類來繼承一個新的類(當然你也可以從它的基類直接繼承,例如上面的例子,TMgrids甚至可以從TCustomGrid類來繼承。但是為了安全起見,我建議直接從當前類來繼承),然後強制轉換當前對象為新的類型,這時我們就可以非常容易獲得我們需要的信息。