Delphi轉BCB的問題??? |
答題得分者是:deity
|
nokib2002
一般會員 發表:22 回覆:48 積分:14 註冊:2009-08-09 發送簡訊給我 |
各位先進大大好:
可以麻煩各位大大能幫我把這Delphi語言轉為BCB,這是 前輩Deity寫的,我看看了很久也找了很多相開資訊,可以請 大大給我個提示或是幫我解答一下,小弟感謝你. 謝謝~ [code cpp] FList:TStringlist; Node:TTreeNode; procedure TForm1.FormCreate(Sender: TObject); var i:integer; begin FList:=TStringlist.create; for I:=0 to TreeView1.items.count-1 do begin Node:=TreeView1.items[I]; Flist.addobject(Node.text,Node); end; end; procedure TForm1.Button1Click(Sender: TObject); var i:integer; begin i:=FList.indexof('你要搜寻的节点文本'); if i<>-1 then begin Node:=TTreeNode(FList.objects[i]); FList.Delete(i); end; treeview1.selected:=Node; TreeView1.SetFocus; end; 請在此區域輸入程式碼 [/code]
------
努力往往是甘苦的!!一起勉勵 編輯記錄
nokib2002 重新編輯於 2010-12-28 08:53:23, 註解 無‧
|
senso
高階會員 發表:5 回覆:126 積分:226 註冊:2003-11-27 發送簡訊給我 |
[code cpp] #include "ComCtrls.hpp" TStringList *FList; TTreeNode *Node; //--------------------------------------------------------------------------- void __fastcall TForm1::FormCreate(TObject *Sender) { int i; FList = new TStringList(); for (i=0;i { Node=TreeView1->Items->Item[i]; FList->AddObject(Node->Text,Node); } } //--------------------------------------------------------------------------- void __fastcall TForm1::Button1Click(TObject *Sender) { int i; i=FList->IndexOf("bbb"); if (i!=-1) { Node=(TTreeNode*)FList->Objects[i]; FList->Delete(i); } TreeView1->Selected=Node; TreeView1->SetFocus(); } //--------------------------------------------------------------------------- [/code] |
nokib2002
一般會員 發表:22 回覆:48 積分:14 註冊:2009-08-09 發送簡訊給我 |
senso你好
我大致上看的懂,可是有個小小問題,就是在 i=FList->IndexOf("bbb"); 上,意思是說i去參考暫存的FList這空間,那你打bbb的意思,是指我要參考的 Vcl嗎???那個bbb是什麼意思??deity前輩是寫"你要搜尋的文本"有看沒有懂 懇請賜教 謝謝 ===================引 用 senso 文 章=================== [code cpp] #include "ComCtrls.hpp" TStringList *FList; TTreeNode *Node; //--------------------------------------------------------------------------- void __fastcall TForm1::FormCreate(TObject *Sender) { ? int i; ? FList = new TStringList(); ? for (i=0;iItems->Count;i ) ? { ?Node=TreeView1->Items->Item[i]; ?FList->AddObject(Node->Text,Node); ? } } //--------------------------------------------------------------------------- void __fastcall TForm1::Button1Click(TObject *Sender) { ? int i; ? i=FList->IndexOf("bbb"); ? if (i!=-1) ? { ?Node=(TTreeNode*)FList->Objects[i]; ?FList->Delete(i); ? } ? TreeView1->Selected=Node; ? TreeView1->SetFocus(); } //--------------------------------------------------------------------------- [/code]
------
努力往往是甘苦的!!一起勉勵 |
老大仔
尊榮會員 發表:78 回覆:837 積分:1088 註冊:2006-07-06 發送簡訊給我 |
簡單的說
就是去TStringList中尋找有沒有bbb這個字串 有的話 就將bbb所屬的index取出到i之中 ===================引 用 nokib2002 文 章=================== senso你好 我大致上看的懂,可是有個小小問題,就是在 i=FList->IndexOf("bbb"); 上,意思是說i去參考暫存的FList這空間,那你打bbb的意思,是指我要參考的 Vcl嗎???那個bbb是什麼意思??deity前輩是寫"你要搜尋的文本"有看沒有懂 懇請賜教 謝謝 ===================引 用 senso 文 章=================== [code cpp] #include "ComCtrls.hpp" TStringList *FList; TTreeNode *Node; //--------------------------------------------------------------------------- void __fastcall TForm1::FormCreate(TObject *Sender) { ? int i; ? FList = new TStringList(); ? for (i=0;iItems->Count;i ) ? { ?Node=TreeView1->Items->Item[i]; ?FList->AddObject(Node->Text,Node); ? } } //--------------------------------------------------------------------------- void __fastcall TForm1::Button1Click(TObject *Sender) { ? int i; ? i=FList->IndexOf("bbb"); ? if (i!=-1) ? { ?Node=(TTreeNode*)FList->Objects[i]; ?FList->Delete(i); ? } ? TreeView1->Selected=Node; ? TreeView1->SetFocus(); } //--------------------------------------------------------------------------- [/code] |
nokib2002
一般會員 發表:22 回覆:48 積分:14 註冊:2009-08-09 發送簡訊給我 |
各位大大你好:
我有按Button後,有暫存的功能,可是一直停在同一的動態node,例如下 我會一直停在第一個11,不會跑到2的11,我應該怎麼解決 謝謝!! a |_1 |__11 |_2 |__11 ===================引 用 老大仔 文 章=================== 簡單的說 就是去TStringList中尋找有沒有bbb這個字串 有的話 就將bbb所屬的index取出到i之中 ===================引 用 nokib2002 文 章=================== senso你好 我大致上看的懂,可是有個小小問題,就是在 i=FList->IndexOf("bbb"); 上,意思是說i去參考暫存的FList這空間,那你打bbb的意思,是指我要參考的 Vcl嗎???那個bbb是什麼意思??deity前輩是寫"你要搜尋的文本"有看沒有懂 懇請賜教 謝謝 ===================引 用 senso 文 章=================== [code cpp] #include "ComCtrls.hpp" TStringList *FList; TTreeNode *Node; //--------------------------------------------------------------------------- void __fastcall TForm1::FormCreate(TObject *Sender) { ? int i; ? FList = new TStringList(); ? for (i=0;iItems->Count;i ) ? { ?Node=TreeView1->Items->Item[i]; ?FList->AddObject(Node->Text,Node); ? } } //--------------------------------------------------------------------------- void __fastcall TForm1::Button1Click(TObject *Sender) { ? int i; ? i=FList->IndexOf("bbb"); ? if (i!=-1) ? { ?Node=(TTreeNode*)FList->Objects[i]; ?FList->Delete(i); ? } ? TreeView1->Selected=Node; ? TreeView1->SetFocus(); } //--------------------------------------------------------------------------- [/code]
------
努力往往是甘苦的!!一起勉勵
編輯記錄
nokib2002 重新編輯於 2010-12-28 23:43:33, 註解 無‧
|
老大仔
尊榮會員 發表:78 回覆:837 積分:1088 註冊:2006-07-06 發送簡訊給我 |
這種做法可能只適用在找單一的值所用的
(FList中是否有11這個值,不管有幾個) 相當於用POS找字串的意思 假如您要搜尋FList是否有其他的11 那麼請自行用回圈去判斷即可 for i := 0 to FList.Count-1 do if .... 雖然是Delphi的語法 但是以上回文已經有Delphi轉BCB的範例 我對BCB也不熟 所以請自行修改~ PS: 其實您的問題講的有點簡略 會讓人不知您到底要的是什麼 是要找FList有沒有"11"?? 還是要找TreeView有沒有"11"?? 請把您的需求講清楚點 要不然大家幫忙您的時候可能會誤解您的意思 ===================引 用 nokib2002 文 章=================== 各位大大你好: 我有按Button後,有暫存的功能,可是一直停在同一的動態node,例如下 我會一直停在第一個11,不會跑到2的11,我應該怎麼解決 謝謝!! a |_1 |__11 |_2 |__11 |
nokib2002
一般會員 發表:22 回覆:48 積分:14 註冊:2009-08-09 發送簡訊給我 |
請教各位大大:
小弟要在動態TreeView中做一個Eite1及搜尋動態node的Button1,按Button1 時,會搜尋第一個相同的字串,可是我要搜尋第二個相同字串,所以我又新建Button2 就是當我按下Button2時,會搜尋下一個,再按Button2會再找下一個,如果沒有 的時候,就會跳出訊息說,已無資料搜索.....真的謝謝各位大大. ===================引 用 老大仔 文 章=================== 這種做法可能只適用在找單一的值所用的 (FList中是否有11這個值,不管有幾個) 相當於用POS找字串的意思 假如您要搜尋FList是否有其他的11 那麼請自行用回圈去判斷即可 for i := 0 to FList.Count-1 do ? if .... 雖然是Delphi的語法 但是以上回文已經有Delphi轉BCB的範例 我對BCB也不熟 所以請自行修改~ PS: 其實您的問題講的有點簡略 會讓人不知您到底要的是什麼 是要找FList有沒有"11"?? 還是要找TreeView有沒有"11"?? 請把您的需求講清楚點 要不然大家幫忙您的時候可能會誤解您的意思 ===================引 用 nokib2002 文 章=================== 各位大大你好: 我有按Button後,有暫存的功能,可是一直停在同一的動態node,例如下 我會一直停在第一個11,不會跑到2的11,我應該怎麼解決 謝謝!! a |_1 |__11 |_2 |__11
------
努力往往是甘苦的!!一起勉勵 |
老大仔
尊榮會員 發表:78 回覆:837 積分:1088 註冊:2006-07-06 發送簡訊給我 |
那這時候就看您要怎麼去實做了
可以從FList找 大至上的寫法我已在上個回文中回過了 假如是從TreeView中找的話 可以從您的程式中修改即可 TStringList *FList; TTreeNode *Node; //--------------------------------------------------------------------------- void __fastcall TForm1::FormCreate(TObject *Sender) { int i; FList = new TStringList(); for (i=0;i { Node=TreeView1->Items->Item[i]; if Node->Text = ??? then ... } } 我只是寫個大至上的寫法 因為BCB我不熟 所以我只能寫個大概、起個頭 ===================引 用 nokib2002 文 章=================== 請教各位大大: 小弟要在動態TreeView中做一個Eite1及搜尋動態node的Button1,按Button1 時,會搜尋第一個相同的字串,可是我要搜尋第二個相同字串,所以我又新建Button2 就是當我按下Button2時,會搜尋下一個,再按Button2會再找下一個,如果沒有 的時候,就會跳出訊息說,已無資料搜索.....真的謝謝各位大大. |
deity
尊榮會員 發表:90 回覆:876 積分:678 註冊:2003-05-09 發送簡訊給我 |
|
nokib2002
一般會員 發表:22 回覆:48 積分:14 註冊:2009-08-09 發送簡訊給我 |
謝謝各位大大的幫助
小弟編譯完後,還是會一直停在同一個字串,不會搜尋到下一個 對了,小弟的Edit1是屬於部分搜尋treeview1的node,例如 a |__777 |___5555 |__88 |___7777 |__11 |___7777777 小弟在Edit1 中輸入7按button1搜尋會找到a->777,在按button2搜尋下一個 會找到88->7777,以此類推,~謝謝~ 有這個網站真好^^
------
努力往往是甘苦的!!一起勉勵 |
deity
尊榮會員 發表:90 回覆:876 積分:678 註冊:2003-05-09 發送簡訊給我 |
你有没有单独试试我发上来的程序呢,我是连续按一个Button对同一个关键字进行查找。
不过你的需求有点奇怪,干嘛要分开几个Button对同一个关键字进行查找呢? 你将button1事件里面的内容写在其他Button上就行了。 将i设为全局变量 int i; TStringList *FList; TTreeNode *Node; //--------------------------------------------------------------------------- void __fastcall TForm1::FormCreate(TObject *Sender) { int j; //重新定义一个局部变量j FList = new TStringList(); for (j=0;j { Node=TreeView1->Items->Item[j]; FList->AddObject(Node->Text,Node); } } //--------------------------------------------------------------------------- void __fastcall TForm1::Button1Click(TObject *Sender) { i=FList->IndexOf("bbb"); if (i!=-1) { Node=(TTreeNode*)FList->Objects[i]; FList->Delete(i); TreeView1->Selected=Node; TreeView1->SetFocus(); } } //--------------------------------------------------------------------------- //以此类推,button2,button3如果都是对同一个关键字查找,写入相同的代码就行 void __fastcall TForm1::Button2Click(TObject *Sender) { i=FList->IndexOf("bbb"); if (i!=-1) { Node=(TTreeNode*)FList->Objects[i]; FList->Delete(i); TreeView1->Selected=Node; TreeView1->SetFocus(); } } 问题没解决,先急于结案。 |
senso
高階會員 發表:5 回覆:126 積分:226 註冊:2003-11-27 發送簡訊給我 |
最一開始的code就可以下一個吧
不過要部份搜尋的話還是要跑回圈... 參考看看 [code cpp] //已選取node則取得下個node,否則取得第一個node TTreeNode *tmpNode = (TreeView1->Selected)?TreeView1->Selected->GetNext():TreeView1->Items->GetFirstNode(); while (tmpNode) { if (tmpNode->Text.Pos(Edit1->Text)) //有找到字串起始位置 return>0 { tmpNode->Selected=true; //設定此node選取 TreeView1->SetFocus(); break; } else tmpNode = tmpNode->GetNext(); //找下一個,若無則NULL離開while } if (!tmpNode) ShowMessage("已無資料搜索"); [/code] |
nokib2002
一般會員 發表:22 回覆:48 積分:14 註冊:2009-08-09 發送簡訊給我 |
本站聲明 |
1. 本論壇為無營利行為之開放平台,所有文章都是由網友自行張貼,如牽涉到法律糾紛一切與本站無關。 2. 假如網友發表之內容涉及侵權,而損及您的利益,請立即通知版主刪除。 3. 請勿批評中華民國元首及政府或批評各政黨,是藍是綠本站無權干涉,但這裡不是政治性論壇! |