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

Clipboard 如何用兩種格式阿?

尚未結案
wsxcv123
一般會員


發表:36
回覆:27
積分:12
註冊:2004-11-10

發送簡訊給我
#1 引用回覆 回覆 發表時間:2004-12-02 10:14:02 IP:61.222.xxx.xxx 未訂閱
我有一個 Panel (是 TPanel) 我想做: 當安 copy button 存兩種格式 假設 paste 在自己的程式,paste 的東西是 delphi 的 component paste 到 外面如 Microsoft word ,paste 的東西是圖片 要怎ㄇ做呢? paste 的東西是 delphi component,我是這樣做 __fastcall TForm1::TForm1(TComponent *Owner) : TForm(Owner) { TMetaClass *MetaClassPanel = __classid(TPanel); RegisterClasses(&MetaClassPanel, 0); } void __fastcall TForm1::Button1Click(TObject *Sender) //Copy { Clipboard()->SetComponent(Panel1); } void __fastcall TForm1::Button2Click(TObject *Sender) //Paste { TPanel *tmp = (TPanel*)Clipboard()->GetComponent(this,this); tmp->Left = 80; tmp->Top = 80; } paste 的東西是 image void __fastcall TForm1::Button3Click(TObject *Sender) //Copy image { TImage* bitmap = new TImage(this); bitmap->Width = Panel1->Width; bitmap->Height = Panel1->Height; // 將Panel1畫到Image上 BitBlt( bitmap->Canvas->Handle, 0, 0, Panel1->Width, Panel1->Height, GetWindowDC(Panel1->Handle), 0, 0, SRCCOPY); TClipboard* Clipboard = new TClipboard(); // 將Image放到剪貼簿 Clipboard->Assign(bitmap->Picture->Bitmap); delete bitmap; delete Clipboard; } 要怎ㄇ讓 copy 存有兩種格式?
seaturn99
版主


發表:69
回覆:427
積分:214
註冊:2003-08-25

發送簡訊給我
#2 引用回覆 回覆 發表時間:2004-12-03 12:14:20 IP:220.130.xxx.xxx 未訂閱
wsxcv123 您好 : 如果是要貼在同樣在您自己的程式內,可以利用一個 Class 將 TPanel ,與 BMP 圖檔存入,做些簡單的判斷與處裡就可以 work 了... 不過,若是要在其他的 Process 內要能分辨的話,有個方向提供您參考 : 您可以先將按下複製的資料先暫存起來 (兩份),另外將 Clipboard 的資料複製 BMP 圖檔的格式,在自身的程式內攔截 Ctrl V 的 message ,然後,當 User 在自身的程式按下 Ctrl V 的時候,再將 Clipboard 內資料替換成之前暫存的 TPanel, 處裡 Clipboard 貼上的動作 (或自行設計將暫存資料 TPanel 複製於目的地) .. 就我以前做的實驗與目前所知, Default Clipboard 是只能存一種格式,每次會覆寫過去 .. ---- 我只會兩件事,這也不會,那也不會 眼見不一定為真 ----
wsxcv123
一般會員


發表:36
回覆:27
積分:12
註冊:2004-11-10

發送簡訊給我
#3 引用回覆 回覆 發表時間:2004-12-03 13:24:50 IP:61.222.xxx.xxx 未訂閱
SouthWind 您好 : 我在 Microsoft Power Point 拉出一個圓,然後 ctrl v 之後用 clipbrd (在windows\system32 裡面)這個程式去看。 再按檢視 有多種格式可以選ㄟ BCB 能作媽?
seaturn99
版主


發表:69
回覆:427
積分:214
註冊:2003-08-25

發送簡訊給我
#4 引用回覆 回覆 發表時間:2004-12-03 15:35:06 IP:220.130.xxx.xxx 未訂閱
引言: SouthWind 您好 : 我在 Microsoft Power Point 拉出一個圓,然後 ctrl v 之後用 clipbrd (在windows\system32 裡面)這個程式去看。 再按檢視 有多種格式可以選ㄟ BCB 能作嗎?
這個機制是建立在 Windows Clipboard 上,Windows 提供了許多不同的格式, 以前的發表的一篇文章給您參考 : http://delphi.ktop.com.tw/topic.php?TOPIC_ID=45946 如果您在 BCB 裡面利用 Ctrl C 在 Form 上隨便複製一個元件,clipbrd 會看到它的元件定義 (Text) ,所以 Delphi/BCB 內利用 Persistent 特性,可以 Save/Store Componet 的特性,在 TClipboard 上實作 SetComponent/GetComponent Method 來使得您可以複製 TPanel (如同 IDE ㄧ樣)... Clipboard 只暫存最後一個執行 Ctrl C 的資料,MSDN 或 Delphi Online Help 裡查關鍵字 GetClipboardData , 您可以先判斷 Data 是屬於哪一種格式,再用對應的方式取得 .. BCB/Delphi 裡的 TClipboard ,大概只能利用 GetAsHandle() 這個 function 再配合 Windows 提供的 Clipboard API 來取得資料 (猜測,沒有實驗過 ..) ---- 我只會兩件事,這也不會,那也不會 眼見不一定為真 ----
系統時間:2024-04-29 11:18:44
聯絡我們 | Delphi K.Top討論版
本站聲明
1. 本論壇為無營利行為之開放平台,所有文章都是由網友自行張貼,如牽涉到法律糾紛一切與本站無關。
2. 假如網友發表之內容涉及侵權,而損及您的利益,請立即通知版主刪除。
3. 請勿批評中華民國元首及政府或批評各政黨,是藍是綠本站無權干涉,但這裡不是政治性論壇!