TClipboard 用法一問 |
尚未結案
|
chtai
高階會員 ![]() ![]() ![]() ![]() 發表:68 回覆:238 積分:116 註冊:2004-05-21 發送簡訊給我 |
各位好,小弟在使用 TClipboard 有些許困惑,
在 help 又找不到解答,
所以來提出問題,希望各位能為我解答。
void __fastcall TformMain::ListBox1DblClick(TObject *Sender) { TClipboard *cb = new TClipboard(); cb->AsText = ListBox1->Items->Strings[ListBox1->ItemIndex]; ........... delete cb; }在以上的程式碼裡頭,我的問題是 當我使用 cb->AsText = ......;時, 是會先把Clipboard裡的資料清掉,再新增新的進去, 還是就直接放新的進去呢 ? 若是直接放新的進去,那我在 delete cb 之前需要 clear 嗎? 或是程式會自動在 delete 時也把 cb 的內容 clear 呢? 另外,為什麼我用 TClipboard *cb = new TClipboard(); 與 TClipboard *cb = new TClipboard; 都可以阿? 後面有沒有加()有什麼不一樣嗎? -- http://www.csie.nctu.edu.tw/~chtai/software.html 好用免費軟體的收集網頁,歡迎大家跟我分享或一同推廣免費軟體。 若您覺得這網頁不錯,也歡迎您將它傳出去 :) 發表人 - chtai 於 2004/09/04 02:10:30
------
My Web: http://nelson.csie.us My Blog: http://blog.nelson.csie.us |
pwipwi
版主 ![]() ![]() ![]() ![]() ![]() 發表:68 回覆:629 積分:349 註冊:2004-04-08 發送簡訊給我 |
chtai你好:
TClipboard不能動態的去建立他,他只是一個包裝Clipboard的物件。用法是直接使用全域的Clipboard變數。例子如下:
void __fastcall TForm1::Button1Click(TObject *Sender) { if (Clipboard()->HasFormat(CF_TEXT)) Edit1->Text = Clipboard()->AsText; else Application->MessageBox("The clipboard does not contain text.", NULL, MB_OK); } |
pwipwi
版主 ![]() ![]() ![]() ![]() ![]() 發表:68 回覆:629 積分:349 註冊:2004-04-08 發送簡訊給我 |
另外針對你的問題,(抱歉.上一個忘了回答)
cb->AsText = ListBox1->Items->Strings[ListBox1->ItemIndex];上面的程式碼實際上會被編譯器,轉成下面的碼: cb->SetAsText(ListBox1->Items->Strings[ListBox1->ItemIndex]);SetAsText函數是private的,不能明確的被呼叫,而cb的AsText只是個"假象" 他是一個"property"。vcl元件中,property只能算是一個"介面",不一定有真 實的變數存在。如果你查bcb的help,可以看到下面的解說: __property AnsiString AsText = {read=GetAsText, write=SetAsText};上面表示你在寫入AsText這個"介面"時,實際上是呼叫了SetAsText這個函數, 讀取AsText這個介面時,則是呼叫了GetAsText這個介面。至於SetAsText做了什麼...他的底層是呼叫了SetClipboardData這個Winapi來做到設定Clipboard資料的動作。 嗯...不知道有沒有回答你的問題? |
chtai
高階會員 ![]() ![]() ![]() ![]() 發表:68 回覆:238 積分:116 註冊:2004-05-21 發送簡訊給我 |
感謝pwipwi大哥,
可是我之前在搜尋站上文章時,
看到不少前輩也是用我這方法 (動態去建立它)
而不是用 Clipboard() 變數哩..
而且若是我直接用 "Clipboard()->"
bcb在後頭不會自動跳出讓你選擇可用function,property的menu哩~
這是為什麼呢 ? 另,我一直丟文字到剪貼簿裡,
那我程式結束時需要手動去清空剪貼簿嗎? 像這樣
OpenClipboard(NULL); EmptyClipboard(); CloseClipboard();還是我可以不用理它,系統會自動幫我清掉呢? -- http://www.csie.nctu.edu.tw/~chtai/software.html 好用免費軟體的收集網頁,歡迎大家跟我分享或一同推廣免費軟體。 若您覺得這網頁不錯,也歡迎您將它傳出去 :)
------
My Web: http://nelson.csie.us My Blog: http://blog.nelson.csie.us |
pwipwi
版主 ![]() ![]() ![]() ![]() ![]() 發表:68 回覆:629 積分:349 註冊:2004-04-08 發送簡訊給我 |
|
chtai
高階會員 ![]() ![]() ![]() ![]() 發表:68 回覆:238 積分:116 註冊:2004-05-21 發送簡訊給我 |
引言: 用一個暫時的變數來儲存。就可以自動跳出了。原來如此, 感謝pwipwi大哥 ^^ -- http://www.csie.nctu.edu.tw/~chtai/software.html 好用免費軟體的收集網頁,歡迎大家跟我分享或一同推廣免費軟體。 若您覺得這網頁不錯,也歡迎您將它傳出去 :)TClipboard* Clip = Clipboard(); Clip->另外如果你要在程式結束後,清空剪貼簿的內容,可以用Clear(); 不過我記得可以不用理他的~
------
My Web: http://nelson.csie.us My Blog: http://blog.nelson.csie.us |
本站聲明 |
1. 本論壇為無營利行為之開放平台,所有文章都是由網友自行張貼,如牽涉到法律糾紛一切與本站無關。 2. 假如網友發表之內容涉及侵權,而損及您的利益,請立即通知版主刪除。 3. 請勿批評中華民國元首及政府或批評各政黨,是藍是綠本站無權干涉,但這裡不是政治性論壇! |