クリップボードの内容を貼り付けるには?

解決


みずき  2006-02-22 05:54:54  No: 20132

こんばんわ。今回初めて質問させて頂きます。

やりたいことは以下のとおりです。
AとBという画面があるとします。
Aという画面には様々なボタンと
TOleContainerに、ワード2003?が入っています。

Bという画面にはエディタとツリーとボタンがあり、
ツリーから内容を選んで、エディタに反映させる機能があります。
Bの画面を閉じる時、「反映」というボタンを押下すると、
別画面のエディタ等にB画面のエディタの内容が反映される仕組みです。
(B画面は共通画面で、他の画面でも使われています)

今回やりたい事は、B画面のエディタ内容をA画面のワードに反映させたいのです。
現在の手法では、B画面で「反映」ボタン押下後、
A画面のワードをアクティブにし、右クリックから貼り付け。
という操作でしか反映出来ません。
(B画面でクリップボードに保存しているので、後はワード標準機能の貼り付けを利用しているようです)

この操作が面倒なので「反映」ボタン押下後、
A画面のワードに直接反映させたい。という要望なのですが、
こういう操作は可能なのでしょうか?

Delphiは超初心者なのですが、個人的には無理なんじゃないかなぁ。
と思っています。
※TOleContainerはワードを表示させているだけのように見えるから

もし、こういう方法があるよ。等がありましたらご教授下さい。
宜しくお願いいたします。

Delphi7  WindowsXP  OfficeXP


a  2006-02-22 10:47:16  No: 20133

>可能・不可能
超  容易に  可能


灼熱  URL  2006-02-22 18:10:55  No: 20134

こんにちわっ!
参考程度にしかなりませんが、
TMemoを使用すると、
  Memo1.SelectAll;//すべて選択
  Memo1.CopyToClipboard;//右クリックのコピー
  Memo1.XXXXXXXXXXXXXXX;//右クリックの貼り付け
ができます。
※XXXXXXXXXX:忘れました。Pasteなんとかだったような気が・・・。


deldel  2006-02-22 18:21:59  No: 20135

まるで試してませんが、以下ではどうですか?

  ワード.SetFocus;
  keybd_event(VK_CONTROL,   0, 0, 0);
  keybd_event(Byte('V'), 0, 0, 0);
  keybd_event(Byte('V'), 0, KEYEVENTF_KEYUP, 0);
  keybd_event(VK_CONTROL,   0, KEYEVENTF_KEYUP, 0);


みずき  2006-02-22 19:31:07  No: 20136

みなさん、レスありがとうございます。

若干書き込みに言葉が足りなかったようなので補足します。
A画面は共通画面の為、出来れば触りたくありません。
(関連画面を全てテストしなくてはならなくなるので;)

B画面のみ修正して完了出来たら言うことありません。

で、早速レス頂いた内容で試してみました。
deldelさんのレス内容で試したのですが、
このプログラムを入れるとすれば、どこが適正でしょうか。。。?
OnActivateに入れると、実現可能ですが、
例えばB画面を開く前に、テキストエディタ等でコピーしていると、
その内容が貼り付けられてしまいます。。。

この場合、やはりB画面も修正して、例えば反映ボタン押下(=画面終了)
時に、なんらかのフラグ?を使ったり値返しするのがよいのでしょうか。

まだ、調査中ですが、他画面から帰ってきた時。
みたいな便利なイベントは。。。ありませんよねぇ;;
質問ばかりで申し訳ありませんがわかる範囲で結構です。宜しくお願いいたします。


Ru  2006-02-22 19:57:54  No: 20137

単純にOnActivateに

    ClipBoard.Clear;    <uses節に ClipBrd 必要

の一文追加では望む動きにはなりませんか?

私も初心者なので,的はずれな回答してるかもしれませんが・・・


deldel  2006-02-22 20:10:54  No: 20138

B画面で「反映」ボタン押下後、エディタの内容を
クリップボードにコピー後、ですね。


みずき  2006-02-22 21:02:25  No: 20139

レスありがとうございます。

>Ruさん
ありがとうございます。教えていただいた方法でクリップボードの中身は
クリア出来ました。
ただ、他画面から帰ってきた時にOnActivateにその文言があると、
コピーした内容が消えてしまう気がします
(現状、他画面から帰ってきた時OnActivateが走っていないのか消えませんが(それも謎))

>deldelさん
教えて頂いた場所に入れたらばっちり出来ました!
上記のような謎な現象が残ったままですが、
OnActivateで貼り付けるPGは止めたので問題ないと思います。
ありがとうございました!

Delphiはまだプログラミング3日目なのでいろいろ苦労しています;
これからもお世話になると思いますがどうぞ宜しくお願いします。


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

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






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