Clipboard 如何用兩種格式阿? |
尚未結案
|
wsxcv123
一般會員 發表:36 回覆:27 積分:12 註冊:2004-11-10 發送簡訊給我 |
我有一個 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 發送簡訊給我 |
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 發送簡訊給我 |
|
seaturn99
版主 發表:69 回覆:427 積分:214 註冊:2003-08-25 發送簡訊給我 |
引言: 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 來取得資料 (猜測,沒有實驗過 ..) ---- 我只會兩件事,這也不會,那也不會 眼見不一定為真 ---- |
本站聲明 |
1. 本論壇為無營利行為之開放平台,所有文章都是由網友自行張貼,如牽涉到法律糾紛一切與本站無關。 2. 假如網友發表之內容涉及侵權,而損及您的利益,請立即通知版主刪除。 3. 請勿批評中華民國元首及政府或批評各政黨,是藍是綠本站無權干涉,但這裡不是政治性論壇! |