クリップボードへのデータ転送するには?

解決


仔猫  2008-06-03 21:04:41  No: 30877

Delphi2007 WindowsXP です。

BMP:  TBitmap;
TXT:  String;

これを同時にクリップボードにデータを転送して、
Excel に取り込むにはどうすればよいのでしょうか?

ClipBoard.Assign(BMP);
ClipBoard.SetTextBuf(PChar(Text));
テキストしかうけとれません。


仔猫  2008-06-03 21:19:17  No: 30878

すみません。
もうひとつお願いします。

BMP1:  TBitmap;
BMP2:  TBitmap;

2つの画像をクリップボードに転送して
Excelで2つの画像を受け取る方法も教えてください。


ttt  2008-06-03 21:53:51  No: 30879

Open
形式1のデータをセット
形式2のデータをセット
Close

という具合にはさんでやれば複数形式のデータをセットできます。
ただ注意してほしいのは、これで実現できるのはあくまで
それぞれのデータが別々にクリップボードに入っていて、
どれか一つを選んで取り出せる状態だということ。
(Excelだと「形式を選択して貼り付け」ですね)
画像とテキストがくっついているわけじゃありません。

というわけで、同じ形式(ビットマップ)を2つ入れるというのは原理的に無理です。
Excel側にもそんなの区別して貼り付ける機能はないでしょ?


仔猫  2008-06-03 22:21:19  No: 30880

どうも、ありがとうございます。
エクセルに画像と文字列が入ったセルをまとめてコピーして、
ワードで貼り付けすると  画像と文字列のセルがコピーされます。
もちろん画像とテキスト(罫線で囲まれていますが)として
コピーされるので、同様にしてDelphiでも出来ないかと思ったのですが
どうなのでしょうか?


ttt  2008-06-04 01:01:09  No: 30881

Wordの方で「形式を選択して貼り付け」してみるとわかりますが、
HTMLだとかメタファイルだとか色々な形式で格納されていますね。
ただビットマップとテキストが入っているわけではなくて、
そういう複合データを表現できる形式にして入れているわけです。

Delphiからやるとしたら、RTFかHTML形式ですかね。
文字をテキストとして扱う必要がなければメタファイルとか、
いっそまとめて1枚のビットマップにしてしまうのもありかと。
どういう形式があるか、RegisterClipboardFormatあたりを調べてみてください。


仔猫  2008-06-26 01:45:09  No: 30882

皆さんありがとうございました。
複数を設定しても、ワード等で一括して複数を読込むことはできないと
いう事ですよね。


子猫  2008-06-26 01:45:30  No: 30883

ありがとうございました。


※返信する前に利用規約をご確認ください。

※Google reCAPTCHA認証からCloudflare Turnstile認証へ変更しました。






  このエントリーをはてなブックマークに追加