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

在ListView中如何确定所选的Items呢?

答題得分者是:tech_state
bigdogchina
版主


發表:238
回覆:523
積分:312
註冊:2003-04-28

發送簡訊給我
#1 引用回覆 回覆 發表時間:2003-07-01 18:39:10 IP:211.162.xxx.xxx 未訂閱
大大们好!我这个傻瓜又在提问了,希望大大们不要闲我麻烦和罗嗦 我在窗体上放置了一个 class="code"> //--------------------------------------------------------------------------- #include #pragma hdrstop #include "Unit1.h" #include "full_unit.h" //--------------------------------------------------------------------------- #pragma package(smart_init) #pragma resource "*.dfm" TForm1 *Form1; //--------------------------------------------------------------------------- __fastcall TForm1::TForm1(TComponent* Owner) : TForm(Owner) { } //--------------------------------------------------------------------------- void __fastcall TForm1::ListView1MouseDown(TObject *Sender, TMouseButton Button, TShiftState Shift, int X, int Y) { AnsiString str1 = ListView1->Selected->Caption; AnsiString str2 = "测试1"; int i = CompareStr(str1,str2); if(i == 0) { ShowMessage("我选择的测试1哦!"); } } //--------------------------------------------------------------------------- 当鼠标点击到3个Items时正常,但是当点击到ListView1的空白区域的时候,就马上会发生运行时错误: Error Project Project1.exe raised exception class EAccessViolation with messge 'Access violation at address 0040232 in module'Porject1.exe'.Read of address 00000024',Project stopped.Use Step or Run to continue 然后把错误指向
        AnsiString str1 = ListView1->Selected->Caption;
我知道现在没有点选Item,而又逼着ListView去读出Item的Caption,那能不出问题呢?但我是不知道这样去把它完善,去除这种不确定的因数呢? 我找过以为的贴子,好象没有我才重新提问的,希望大大们不要责怪我浪费网路资源 人生在勤,不索何获?
------
人生在勤,不索何获?
tech_state
版主


發表:44
回覆:638
積分:641
註冊:2003-02-10

發送簡訊給我
#2 引用回覆 回覆 發表時間:2003-07-01 19:11:49 IP:61.221.xxx.xxx 未訂閱
bigdogchina, 您好 增加紅色的部分,供您參考!  
void __fastcall TForm1::ListView1MouseDown(TObject *Sender,
      TMouseButton Button, TShiftState Shift, int X, int Y)
{
   if(!ListView1->Selected)
      ShowMessage("Error");            AnsiString str1 = ListView1->Selected->Caption;
        AnsiString str2 = "测试1";            int i = CompareStr(str1,str2);            if(i == 0)
        {
             ShowMessage("我选择的测试1哦!");
        }
}
 
================================= 涵養怒中氣。謹防順口言。留心忙裡錯。珍惜有時錢。 是非終日有,不聽自然無 天下本無事,庸人自擾之
bigdogchina
版主


發表:238
回覆:523
積分:312
註冊:2003-04-28

發送簡訊給我
#3 引用回覆 回覆 發表時間:2003-07-01 21:08:45 IP:211.162.xxx.xxx 未訂閱
首先感谢tech_state大大 我试了您的方法,不要生气,好象还是不行,因为它执行完 class="code"> void __fastcall TForm1::ListView1MouseDown(TObject *Sender, TMouseButton Button, TShiftState Shift, int X, int Y) { if(!ListView1->Selected) { return; } AnsiString str1 = ListView1->Selected->Caption; AnsiString str2 = "测试1"; int i = CompareStr(str1,str2); if(i == 0) { ShowMessage("我选择的测试1哦!"); } } 我还有一点不明白的,请您解答一下好吗? TCustomListView::Selected在这里是TListItem类型的,您的这句代码该怎样理解呢:if(!ListView1->Selected),可以这样吗:if(ListView1->Selected != NULL),但我还是搞不清楚(这个问题是有点弱智,不要笑哦) 人生在勤,不索何获?
------
人生在勤,不索何获?
tech_state
版主


發表:44
回覆:638
積分:641
註冊:2003-02-10

發送簡訊給我
#4 引用回覆 回覆 發表時間:2003-07-01 22:25:33 IP:203.204.xxx.xxx 未訂閱
bigdogchina, 您好 sorry, 回答您問題時,因為人還在公司,急著下班,所以沒注意到code少複製了一行,我原本的code在ShowMessage("Error");之後還有一行Abort(); 而您用了return;也是可以。    這好像違背了自己的簽名檔"留心忙裡錯" 另外,>>>== > > ================================= <>涵養怒中氣。謹防順口言。留心忙裡錯。珍惜有時錢。 <>是非終日有,不聽自然無 <>天下本無事,庸人自擾之
bigdogchina
版主


發表:238
回覆:523
積分:312
註冊:2003-04-28

發送簡訊給我
#5 引用回覆 回覆 發表時間:2003-07-02 00:33:09 IP:211.162.xxx.xxx 未訂閱
tech_state大大,您太客气了,我要感谢您还来不及呢,您热诚的为KTop社区服务,为大家解答问题,我们这些小菜鸟真的很感激!!!我都说了,我自己是吹毛求疵,我应该看得出来您是慌忙中漏掉了 >) 人生在勤,不索何获?
------
人生在勤,不索何获?
系統時間:2024-05-07 3:42:39
聯絡我們 | Delphi K.Top討論版
本站聲明
1. 本論壇為無營利行為之開放平台,所有文章都是由網友自行張貼,如牽涉到法律糾紛一切與本站無關。
2. 假如網友發表之內容涉及侵權,而損及您的利益,請立即通知版主刪除。
3. 請勿批評中華民國元首及政府或批評各政黨,是藍是綠本站無權干涉,但這裡不是政治性論壇!