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

在action xxxChange(Sender:TObject)中,如何取回Sender的父物件

答題得分者是:jow
jrhuqytjrhu
一般會員


發表:3
回覆:4
積分:1
註冊:2009-09-23

發送簡訊給我
#1 引用回覆 回覆 發表時間:2009-10-17 05:01:25 IP:113.52.xxx.xxx 訂閱
小弟有個問題想求教各位高手們:

TObject ControlComboBox, 而小弟為多個ControlComboBoxChange, 而這些ItemsList內, 請問如何用action ControlComboBoxChange 中的type
id:String;
...
ItemsList.Add(Item);
...


2. 為ItemsList每一個Item動態生成一個action (ControlComboBoxChange)
TItem(ItemsList [0]).ControlComboBox.OnClick := ControlComboBoxChange;
TItem(ItemsList [1]).ControlComboBox.OnClick := ControlComboBoxChange;
TItem(ItemsList [2]).ControlComboBox.OnClick := ControlComboBoxChange;


3. ControlComboBoxChange
PS:我使用"程式碼區塊"時出現問題,所以沒有用,請勿見怪!

謝謝各位高手!!

編輯記錄
jrhuqytjrhu 重新編輯於 2009-10-17 05:02:49, 註解 無‧
jrhuqytjrhu 重新編輯於 2009-10-17 05:03:44, 註解 無‧
jrhuqytjrhu 重新編輯於 2009-10-17 05:07:47, 註解 無‧
jrhuqytjrhu 重新編輯於 2009-10-17 05:09:25, 註解 無‧
jrhuqytjrhu 重新編輯於 2009-10-17 05:09:48, 註解 無‧
TWY
高階會員


發表:2
回覆:133
積分:152
註冊:2009-09-02

發送簡訊給我
#2 引用回覆 回覆 發表時間:2009-10-17 09:25:44 IP:220.132.xxx.xxx 訂閱
試試看   strID := (Sender as TItem).Id;
對了 你用哪版 Delphi 呢?
jrhuqytjrhu
一般會員


發表:3
回覆:4
積分:1
註冊:2009-09-23

發送簡訊給我
#3 引用回覆 回覆 發表時間:2009-10-19 23:19:23 IP:113.52.xxx.xxx 訂閱
謝謝您的回覆

因為ControlComboBox是TItem 的元素,而sender 應該是等於ControlComboBox, 所以Sender as TItem不行....
請問怎樣以object的元素取得object 本身呢?

我是用DELPHI 2007的,

謝謝
TWY
高階會員


發表:2
回覆:133
積分:152
註冊:2009-09-02

發送簡訊給我
#4 引用回覆 回覆 發表時間:2009-10-20 10:05:41 IP:211.21.xxx.xxx 訂閱
難怪,你的 Code 有些東西我沒看過。
抱歉我只有 Delphi 6,7,無法驗證我所能提供的回覆,所以請其他高手出手協助吧~

===================引 用 jrhuqytjrhu 文 章===================
我是用DELPHI 2007的,

jow
尊榮會員


發表:66
回覆:751
積分:1253
註冊:2002-03-13

發送簡訊給我
#5 引用回覆 回覆 發表時間:2009-10-20 12:08:03 IP:203.70.xxx.xxx 未訂閱
[code delphi]

procedure TfrmMain.ControlComboBoxChange(Sender: TObject);

function FindItem(L: TList; Key: TComboBox;
var Index: Integer; var Item: TItem): Boolean;
begin
Item := nil;
Index := -1;
for I := 0 to L.Count-1 do
begin
if Key = TItem(L[I]).ControlComboBox then
begin
Index := I;
Item := TItem(L[I]);
Break;
end;
end;
Result := Item <> nil;
end;

var
Item: TItem;
Index: Integer;
begin
if (Sender is TComboBox) and
FindItem(ItemList,TComboBox(Sender),Index,Item) then
begin
ShowMessage(Format('%d-%s',[Index,Item.Id]);
end;
end;

[/code]

隨手寫的程式碼,沒有測試過
僅提方法供你參考...

編輯記錄
jow 重新編輯於 2009-10-20 12:09:27, 註解 無‧
jrhuqytjrhu
一般會員


發表:3
回覆:4
積分:1
註冊:2009-09-23

發送簡訊給我
#6 引用回覆 回覆 發表時間:2009-10-21 00:42:26 IP:113.52.xxx.xxx 訂閱
謝謝您, 這個方法可行哦! 
也謝謝大家替小弟想辦法! ^_^
系統時間:2024-04-19 8:26:08
聯絡我們 | Delphi K.Top討論版
本站聲明
1. 本論壇為無營利行為之開放平台,所有文章都是由網友自行張貼,如牽涉到法律糾紛一切與本站無關。
2. 假如網友發表之內容涉及侵權,而損及您的利益,請立即通知版主刪除。
3. 請勿批評中華民國元首及政府或批評各政黨,是藍是綠本站無權干涉,但這裡不是政治性論壇!