全國最多中醫師線上諮詢網站-台灣中醫網
發文 回覆 瀏覽次數:2744
推到 Plurk!
推到 Facebook!

ListView元件的checkbox屬性問題

答題得分者是:wameng
linxi
一般會員


發表:17
回覆:15
積分:6
註冊:2004-08-29

發送簡訊給我
#1 引用回覆 回覆 發表時間:2004-10-12 15:23:06 IP:218.9.xxx.xxx 未訂閱
請問各位先進,有沒有辦法讓ListView列表中的checkbox在勾選狀態和取消勾選狀態分別執行兩個不同的函數呢?
GGL
資深會員


發表:104
回覆:600
積分:335
註冊:2006-11-05

發送簡訊給我
#2 引用回覆 回覆 發表時間:2004-10-12 17:12:37 IP:211.76.xxx.xxx 未訂閱
我沒有實際試過,但是我想可以在選取的時候就判斷check的狀態是true或是false,然後分別跑兩個function,你試試看吧
linxi
一般會員


發表:17
回覆:15
積分:6
註冊:2004-08-29

發送簡訊給我
#3 引用回覆 回覆 發表時間:2004-10-12 17:38:19 IP:218.9.xxx.xxx 未訂閱
引言: 我沒有實際試過,但是我想可以在選取的時候就判斷check的狀態是true或是false,然後分別跑兩個function,你試試看吧 < face="Verdana, Arial, Helvetica"> 我先是設一個全局變數,然後在ListView的onMOuseDown事件裡保存當前checkbox狀態到全局變數,然後在ListView的onClick事件裡對當前狀態和onMouseDown事件代碼中保存的狀態進行對比,如果發生變化就執行預定代碼。可是我發現這種方法行不通,當onMouseDown事件發生時checkbox的狀態已經被更變了,應該是在checkbox的狀態將要改變之前就進行保存狀態的操作,請問我該怎麼辦? 發表人 - linxi 於 2004/10/12 17:39:38
chinghwan
一般會員


發表:1
回覆:4
積分:1
註冊:2003-07-04

發送簡訊給我
#4 引用回覆 回覆 發表時間:2004-10-12 23:36:47 IP:61.228.xxx.xxx 未訂閱
妳是否只要做到checkbox了值改後所對應了動作 假如是了話就就寫在onclick裡就可以了,應該不用去記一開始了狀態才對。 if Sender is TCheckBox then begin if TCheckBox(Sender).Checked then begin ShowMessage('AA');//動作a end else begin ShowMessage('BB');//動作b end; end;
linxi
一般會員


發表:17
回覆:15
積分:6
註冊:2004-08-29

發送簡訊給我
#5 引用回覆 回覆 發表時間:2004-10-13 15:39:16 IP:221.208.xxx.xxx 未訂閱
引言: 妳是否只要做到checkbox了值改後所對應了動作 假如是了話就就寫在onclick裡就可以了,應該不用去記一開始了狀態才對。 if Sender is TCheckBox then begin if TCheckBox(Sender).Checked then begin ShowMessage('AA');//動作a end else begin ShowMessage('BB');//動作b end; end;
chinghwan你好,看了你的代码,我觉得不失为一个好办法,通过判断ClickEvent事件发生时Serder参数代表的物件类型来判断滑鼠是否点在了ListView物件的CheckBox上了,可是试验后,我发现并没出现预期的结果,if TCheckBox(Sender).Checked then 这一句执行完后就跳转到最后一行了,似乎Sender参数并不是CheckBox类型的,可是我明明已经点在了ListView列表中的一个CheckBox 物件上了,是哪里不对呢?
wameng
版主


發表:31
回覆:1336
積分:1188
註冊:2004-09-16

發送簡訊給我
#6 引用回覆 回覆 發表時間:2004-10-13 18:12:14 IP:61.222.xxx.xxx 未訂閱
procedure TForm1.ListView1MouseDown(Sender: TObject; Button: TMouseButton; Shift: TShiftState; X, Y: Integer); var Item: TListItem; begin Item := ListView1.GetItemAt(X, Y); if (Button <> mbLeft) or (Item = nil) then Exit; if htOnStateIcon in ListView1.GetHitTestInfoAt(X, Y) then begin if Item.Checked then .... else..... end; end;
linxi
一般會員


發表:17
回覆:15
積分:6
註冊:2004-08-29

發送簡訊給我
#7 引用回覆 回覆 發表時間:2004-10-13 20:14:56 IP:221.208.xxx.xxx 未訂閱
真是萬分感謝wameng 大大,在您的熱心幫助下,我的問題終於解決了,再一次表示衷心的感謝!!!
系統時間:2024-05-17 13:05:07
聯絡我們 | Delphi K.Top討論版
本站聲明
1. 本論壇為無營利行為之開放平台,所有文章都是由網友自行張貼,如牽涉到法律糾紛一切與本站無關。
2. 假如網友發表之內容涉及侵權,而損及您的利益,請立即通知版主刪除。
3. 請勿批評中華民國元首及政府或批評各政黨,是藍是綠本站無權干涉,但這裡不是政治性論壇!