如何讓 ListView 將想要顯示的列自動捲至可視範圍 |
尚未結案
|
yserics
一般會員 發表:10 回覆:9 積分:3 註冊:2003-08-12 發送簡訊給我 |
請問各位大大: ListView 有個 method 為 GetSearchString,它可像一般電子字典搜尋功能,在此 ListView 取得 focus 的同時,一面輸入英文單字,就可自動捲至最相近的英文字上。 如果我要另外使用 Edit + Button 的方式,當使用者在 Edit 中輸入單字,就可動態將 ListView 的 focus 移至最相近的單字上的話,或者是輸入完畢、再按 button 後,一次將 focus 移至此最相近的單字,該如何做呢? 我使用以下兩行 code:
ListView1->Selected = ListView1->Items->Item[i]; ListView1->ItemFocused = ListView1->Items->Item[i];但試起來只能讓此 item 反白,卻無法將此 item 移至可視區… 謝謝… |
RaynorPao
版主 發表:139 回覆:3622 積分:7025 註冊:2002-08-12 發送簡訊給我 |
引言: 請問各位大大: ListView 有個 method 為 GetSearchString,它可像一般電子字典搜尋功能,在此 ListView 取得 focus 的同時,一面輸入英文單字,就可自動捲至最相近的英文字上。 如果我要另外使用 Edit Button 的方式,當使用者在 Edit 中輸入單字,就可動態將 ListView 的 focus 移至最相近的單字上的話,或者是輸入完畢、再按 button 後,一次將 focus 移至此最相近的單字,該如何做呢? 我使用以下兩行 code:yserics 你好: 請參考以下的做法 < class="code"> (1)試試看用 ListView1->FindCaption(...); (2)試試看用 ListView1->Items->Item[i]->MakeVisible(true); ListView1->Items->Item[i]->Selected=true; ListView1->Items->Item[i]->Focused=true; ListView1->Items->Item[i]->MakeVisible(true); -- Enjoy Researching & Developing -- 發表人 - RaynorPao 於 2003/11/19 09:51:45ListView1->Selected = ListView1->Items->Item[i]; ListView1->ItemFocused = ListView1->Items->Item[i];但試起來只能讓此 item 反白,卻無法將此 item 移至可視區… 謝謝…
------
-- 若您已經得到滿意的答覆,請適時結案!! -- -- 欲知前世因,今生受者是;欲知來世果,今生做者是 -- -- 一切有為法,如夢幻泡影,如露亦如電,應作如是觀 -- |
yserics
一般會員 發表:10 回覆:9 積分:3 註冊:2003-08-12 發送簡訊給我 |
謝謝RaynorPao
我試了
ListView1->Items->Item[i]->Selected=true; ListView1->Items->Item[i]->Focused=true; ListView1->Items->Item[i]->MakeVisible(true);可以達到我的功能,真是謝謝! 但以此種方式的話,會新產生一個問題:當我將 ListView1 的內容清除時 ListView1->Items->Clear();它的清除速度會非常的慢(如果ListView中有2000行資料的話,約20秒)…我會知道是由於加了上述三行程式才造成這個結果的原因,是因為我暫時將含有 "MakeVisible" 這行mark起來的話,則刪除速度就非常快(瞬間,不到一秒)… 能再幫我看看嗎?謝囉… |
RaynorPao
版主 發表:139 回覆:3622 積分:7025 註冊:2002-08-12 發送簡訊給我 |
引言: 謝謝RaynorPao 我試了yserics 你好: 小弟我想~~應該是你程式流程的問題,如果你要一次清除很多 Item 的話,那就 應該先把你要清除的 Item 一次清完,最後~~才設那三個屬性在新的 Item 上面 ,這樣應該就不會有你所說的問題了 --ListView1->Items->Item[i]->Selected=true; ListView1->Items->Item[i]->Focused=true; ListView1->Items->Item[i]->MakeVisible(true);可以達到我的功能,真是謝謝! 但以此種方式的話,會新產生一個問題:當我將 ListView1 的內容清除時ListView1->Items->Clear();它的清除速度會非常的慢(如果ListView中有2000行資料的話,約20秒)…我會知道是由於加了上述三行程式才造成這個結果的原因,是因為我暫時將含有 "MakeVisible" 這行mark起來的話,則刪除速度就非常快(瞬間,不到一秒)… 能再幫我看看嗎?謝囉…
------
-- 若您已經得到滿意的答覆,請適時結案!! -- -- 欲知前世因,今生受者是;欲知來世果,今生做者是 -- -- 一切有為法,如夢幻泡影,如露亦如電,應作如是觀 -- |
yserics
一般會員 發表:10 回覆:9 積分:3 註冊:2003-08-12 發送簡訊給我 |
引言: yserics 你好: 小弟我想~~應該是你程式流程的問題,如果你要一次清除很多 Item 的話,那就 應該先把你要清除的 Item 一次清完,最後~~才設那三個屬性在新的 Item 上面 ,這樣應該就不會有你所說的問題了 -- >>< face="Verdana, Arial, Helvetica"> RaynorPao兄: 謝謝你的建議。 這樣子說好了,我現在有幾個版本的字典,當使用者選擇某一版本時,會將此版本的所有英文字列在 ListView 中並加以排序。此時使用者可以在 Edit 中輸入想要查詢的英文字,而 ListView 會即時顯示最接近此單字的英文字…這時候使用 MakeVisible 來讓 ListView 將此最接近的單字置於可視區… 接著,如果使用者選擇另一版本的字典時,我先將 ListView 的內容清除,再引入另一版本的所有英文字…就是此時的 "清除" 動作會變得很緩慢…所以也就無法避免您所謂的 "流程" 的問題了… 或是您在流程上有其它的建議? 謝謝…… |
yserics
一般會員 發表:10 回覆:9 積分:3 註冊:2003-08-12 發送簡訊給我 |
引言: RaynorPao兄: 謝謝你的建議。 這樣子說好了,我現在有幾個版本的字典,當使用者選擇某一版本時,會將此版本的所有英文字列在 ListView 中並加以排序。此時使用者可以在 Edit 中輸入想要查詢的英文字,而 ListView 會即時顯示最接近此單字的英文字…這時候使用 MakeVisible 來讓 ListView 將此最接近的單字置於可視區… 接著,如果使用者選擇另一版本的字典時,我先將 ListView 的內容清除,再引入另一版本的所有英文字…就是此時的 "清除" 動作會變得很緩慢…所以也就無法避免您所謂的 "流程" 的問題了… 或是您在流程上有其它的建議? 謝謝……"清除" 動作會變得緩慢的原因,是因為它每刪除一個item的時候,就會將有設定 MakeVisible 的那一個item讓它出現在可視區… 所以我用了一個取巧非正規的方法,就是先將第一個 item 設成 MakeVisible ,接著將其餘的 item 刪掉,最後再將第一個刪掉… |
本站聲明 |
1. 本論壇為無營利行為之開放平台,所有文章都是由網友自行張貼,如牽涉到法律糾紛一切與本站無關。 2. 假如網友發表之內容涉及侵權,而損及您的利益,請立即通知版主刪除。 3. 請勿批評中華民國元首及政府或批評各政黨,是藍是綠本站無權干涉,但這裡不是政治性論壇! |