線上訂房服務-台灣趴趴狗聯合訂房中心
發文 回覆 瀏覽次數:1182
推到 Plurk!
推到 Facebook!

如何在bcb上面get到作用中的物件

 
popy
一般會員


發表:1
回覆:1
積分:0
註冊:2006-09-13

發送簡訊給我
#1 引用回覆 回覆 發表時間:2006-09-13 15:47:40 IP:59.124.xxx.xxx 未訂閱

我在project中寫了個在panel動態產生image,但是要讓image能隨著mousemove也一起移動,不過,我要判斷的是就算image移動也不能超出panel的邊界,所以我必須要get到作用中的物作才能去抓到該物件相關的資料,不知道要如何作,我把其中一些code貼上來,希望各位高手幫我看一下void __fastcall TPicEditPrint::MyMouseMove(TObject *Sender,
TShiftState Shift, int X, int Y)
{
int offx = X-xx;
int offy = Y-yy;

PicEditPrint->Repaint();
if( Shift.Contains(ssLeft) ){
TControl *ctrl = dynamic_cast(Sender);

ctrl->Top = offy;
ctrl->Left = offx;

AnsiString xxx = ((TImage *)Sender)->Name;

//使label說明跟著一起移動
for(int i=0;i< PicsIndex;i )
{
if(PicEditPrint_image2[i]->Top == ((TImage *)Sender)->Top)
{
PicDesp[i]->Top = PicEditPrint_image2[i]->Top PicEditPrint_image2[i]->Height;
PicDesp[i]->Left = PicEditPrint_image2[i]->Left;
}
}
}
}就是這段使label跟著一能動的這段,這個方法真的有點笨,因為還要去一個個判斷,要能抓到作用中的物件,我別外的功能才能夠繼續寫,所以才會上來問,因為找不到相關的文章可以參考,我有找到TControl * pObj = dynamic_cast(Sender);這樣的控制碼,可是好像在bcb中不能用,會出現expect的錯誤訊息,真不知道為什麼~~~

pwipwi
版主


發表:68
回覆:629
積分:349
註冊:2004-04-08

發送簡訊給我
#2 引用回覆 回覆 發表時間:2006-09-14 00:24:55 IP:61.62.xxx.xxx 未訂閱

請問你是要問怎麼轉Object的type嗎?

dynamic_cast的用法是

value1 = dynamic_cast(value2);

popy
一般會員


發表:1
回覆:1
積分:0
註冊:2006-09-13

發送簡訊給我
#3 引用回覆 回覆 發表時間:2006-09-15 15:23:36 IP:59.124.xxx.xxx 未訂閱
我不是要轉type,而是,在get的時候,希望能抓得到該傳進來的物件,我後來試完之後(用dynamic_cast方式),的確是試出來可以抓到該物件,但是由於在傳進來時不知道傳進來的是什麼,所以我也試了很久,舉個例來說,我在image上面訂了個popupmenu,在使用popup時我希望能抓到該image(動態產生的,名稱是陣列),這樣我就能夠使用image,但是後來測試後,發現傳進來的是popupmenu,不是我要的結果,後來只能設個index變數,利用click事件抓到該index(利用hint存該image的index),暫時是解決一小部份問但,但是這樣一來如果不透過click,是抓不到index,在運用上不方便,再加上,事件的順序為mousemove->click,我在mousemove裡就沒辦法用了,我的問題是在這邊。
===================引 用 文 章===================

請問你是要問怎麼轉Object的type嗎?

dynamic_cast的用法是

value1 = dynamic_cast(value2);

系統時間:2024-04-27 17:29:01
聯絡我們 | Delphi K.Top討論版
本站聲明
1. 本論壇為無營利行為之開放平台,所有文章都是由網友自行張貼,如牽涉到法律糾紛一切與本站無關。
2. 假如網友發表之內容涉及侵權,而損及您的利益,請立即通知版主刪除。
3. 請勿批評中華民國元首及政府或批評各政黨,是藍是綠本站無權干涉,但這裡不是政治性論壇!