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

抓取檔案顯示在TListView中

尚未結案
Miki-lion
中階會員


發表:90
回覆:180
積分:54
註冊:2005-04-24

發送簡訊給我
#1 引用回覆 回覆 發表時間:2005-10-20 18:13:04 IP:218.162.xxx.xxx 未訂閱
如圖如題: 這程式的操作方式為: 1.模式選擇後,抓取檔案或是目錄的路徑放入MaskEdit裡頭 (檔案模式抓檔案,目錄模是抓目錄) 2.按下增加鈕後則將此檔案的檔名、位置、型態(副檔名)分別放入到ListView中 (若為目錄則型態顯示為資料夾) 我想問的是如何實作步驟二的部份~請知道的前輩幫幫忙~謝謝] < src="http://delphi.ktop.com.tw/loadfile.php?TOPICID=25093223&CC=561197">
Vicen
高階會員


發表:13
回覆:145
積分:151
註冊:2005-03-14

發送簡訊給我
#2 引用回覆 回覆 發表時間:2005-10-21 09:22:08 IP:221.226.xxx.xxx 未訂閱
上班时间只能大概写下,给你参考参考,希望对你有所帮助。 //注意别忘记引用 class="code"> procedure TForm1.BtnAddClick(Sender: TObject); Var sName, sType, sPath : String; xItem : TListItem; begin Case CmbMode.ItemIndex Of 0://文件 begin //其实不太明白为什么不用TEDIT而用MaskEdit?不过也行,讲究用了。 sName := ExtractFileName(MaskEdit.Text); sType := ExtractFileExt(MaskEdit.Text); sPath := ExtractFileDir(MaskEdit.Text) end; 1://目录 begin //这里要处理一下路径最后的“\”,否则 ExtractFileName 无法取最后的目录名称 if RightBStr(MaskEdit.Text,1)='\' then MaskEdit.Text := LeftBStr(MaskEdit.Text, Length(MaskEdit.Text)-1); sName := ExtractFileName(MaskEdit.Text); sType := '文件夹'; sPath := MaskEdit.Text; end; End; xItem := ListView.Items.Add; xItem.Caption := sName; xItem.SubItems.Add(sPath); xItem.SubItems.Add(sType); end;
Miki-lion
中階會員


發表:90
回覆:180
積分:54
註冊:2005-04-24

發送簡訊給我
#3 引用回覆 回覆 發表時間:2005-10-21 12:52:59 IP:218.162.xxx.xxx 未訂閱
謝謝~    不過不知道是不是掉code  
 Var
  sName, sType, sPath : String;
  xItem : TListItem;
這裡有問題,格式我也看不太懂,不好意思 另外引用
Vicen
高階會員


發表:13
回覆:145
積分:151
註冊:2005-03-14

發送簡訊給我
#4 引用回覆 回覆 發表時間:2005-10-21 18:20:50 IP:221.226.xxx.xxx 未訂閱
没有掉CODE啊,很完整的,复制即用。    引用StrUtils单元是在你当前使用单元开始的 Uses里添加进去就可以了。你的调用方法是C++的吧,呵呵,看样子还没走出VC的圈啊,呵呵。
haman
中階會員


發表:46
回覆:137
積分:56
註冊:2005-03-10

發送簡訊給我
#5 引用回覆 回覆 發表時間:2005-10-21 22:03:15 IP:211.76.xxx.xxx 未訂閱
幫你轉成bcb了,測試過,ok
void __fastcall TForm1::Button1Click(TObject *Sender)
{
        if(OpenDialog->Execute())
        {
                String sName,sType,sPath;
                TListItem *xItem;
                switch(ComboBox->ItemIndex)
                {
                  case 0://File Mode
                        sPath = ExtractFilePath(OpenDialog->FileName);
                        sName = ExtractFileName(OpenDialog->FileName);
                        sType = ExtractFileExt(OpenDialog->FileName);
                        break;
                  case 1:
                        sPath = ExtractFilePath(OpenDialog->FileName);
                        sName = ExtractFileName(sPath.SubString(0,sPath.Length()-1));
                        sType = "文件夾";
                        break;
                }
                xItem = ListView->Items->Add();
                xItem->Caption = sName;
                xItem->SubItems->Add(sPath);
                xItem->SubItems->Add(sType);
        }
}
其中OpenDialog請自行代換成maskedit ==================================== 懂的不多,卻想學的更多,搞得不自覺的將問題複雜化@@
Miki-lion
中階會員


發表:90
回覆:180
積分:54
註冊:2005-04-24

發送簡訊給我
#6 引用回覆 回覆 發表時間:2005-10-22 02:21:40 IP:218.162.xxx.xxx 未訂閱
謝謝你的幫忙,不過我覺得與其去抓MaskEdit的值,來寫入三樣型態進去ListView。    到不如直接在開啟檔案或目錄時寫進去,因為:    開檔->寫入MaskEdit->判斷MaskEdit在寫入內容    到不如開檔->直接寫入內容到ListView,所以我省略了MaskEdit這部份了。    這支程式在開啟資料夾時,會無法開啟,因為型態是用來開啟檔案的,    選擇目錄模式後,再強迫他開某一個檔案,就會寫入這檔案所屬的資料夾。    這是我開啟"目錄"的方法,它會叫出一個開啟資料夾的對話框    可是我不知道要怎樣修改給這支程式碼? 想請問我需要怎麼做呢? 謝謝你的幫忙^^     
if(ComboBox1->Text == "目錄模式")
{
  AnsiString DirectoryPath;
    if (SelectDirectory("選擇目錄", "", DirectoryPath))
    {
        MaskEdit1->Text = DirectoryPath;
    }
} 
Vicen
高階會員


發表:13
回覆:145
積分:151
註冊:2005-03-14

發送簡訊給我
#7 引用回覆 回覆 發表時間:2005-10-22 09:47:59 IP:221.226.xxx.xxx 未訂閱
其实在什么地方完成什么工作,或怎么完成,都是非常灵活的,程序本身就是一个灵活的东东,只要明白实现方法及原理就行了,至于怎么实现更好,应该具体需求具体对待。    祝你成功~ 發表人 -
Miki-lion
中階會員


發表:90
回覆:180
積分:54
註冊:2005-04-24

發送簡訊給我
#8 引用回覆 回覆 發表時間:2005-10-22 10:06:32 IP:218.162.xxx.xxx 未訂閱
引言: 其实在什么地方完成什么工作,或怎么完成,都是非常灵活的,程序本身就是一个灵活的东东,只要明白实现方法及原理就行了,至于怎么实现更好,应该具体需求具体对待。 祝你成功~ < face="Verdana, Arial, Helvetica"> 謝謝你~我會繼續加油的
haman
中階會員


發表:46
回覆:137
積分:56
註冊:2005-03-10

發送簡訊給我
#9 引用回覆 回覆 發表時間:2005-10-22 12:39:36 IP:211.76.xxx.xxx 未訂閱
看看這樣合不合你的動作要求?
void __fastcall TForm1::Button1Click(TObject *Sender)
{
        String sName,sType,sPath;
        TListItem *xItem;
        switch(ComboBox->ItemIndex)
        {
          case 0://File Mode
                if(OpenDialog->Execute())
                {
                        sPath = ExtractFilePath(OpenDialog->FileName);
                        sName = ExtractFileName(OpenDialog->FileName);
                        sType = ExtractFileExt(OpenDialog->FileName);
                }
                break;
          case 1:
                String DirectoryPath;
                if (SelectDirectory("選擇目錄", "", DirectoryPath))
                {
                        sPath = ExtractFilePath(DirectoryPath);
                        sName = ExtractFileName(DirectoryPath);
                        sType = "資料夾";
                }
                break;
        }
        xItem = ListView->Items->Add();
        xItem->Caption = sName;
        xItem->SubItems->Add(sPath);
        xItem->SubItems->Add(sType);
}
==================================== 懂的不多,卻想學的更多,搞得不自覺的將問題複雜化@@
Miki-lion
中階會員


發表:90
回覆:180
積分:54
註冊:2005-04-24

發送簡訊給我
#10 引用回覆 回覆 發表時間:2005-10-22 14:03:08 IP:218.162.xxx.xxx 未訂閱
謝謝你~我試好久都弄不出來,真是太好了~~    也謝謝有回答我的前輩,真的太是謝謝你們了
系統時間:2024-04-28 7:33:52
聯絡我們 | Delphi K.Top討論版
本站聲明
1. 本論壇為無營利行為之開放平台,所有文章都是由網友自行張貼,如牽涉到法律糾紛一切與本站無關。
2. 假如網友發表之內容涉及侵權,而損及您的利益,請立即通知版主刪除。
3. 請勿批評中華民國元首及政府或批評各政黨,是藍是綠本站無權干涉,但這裡不是政治性論壇!