TStaticTextに表示されている内容をコピーするには?

解決


ウェア  2007-11-20 20:33:00  No: 28574

はじめまして。 
Delphi7を使用しているのですが、プログラムを実行して、TStaticTextで表示されている内容をマウスカーソルで選択してコピーしたいのですが出来ません。
TStaticTextのプロパティ等でどのような設定でコピー出来る様になるのでしょうか? 
ご教授の程、宜しくお願いいたします。


KHE00221  2007-11-20 21:04:10  No: 28575

出来ません。

選択可能なテキストは TEdit を使用すれば可能です

ReadOnly を True
BorderStyle を bsNone  
Color を 背景と同じ色 clBtnFace 等

と設定すれば 選択可能な テキストを表示する事が出来ます


ウェア  2007-11-20 22:39:37  No: 28576

KHE00221さん、ご丁寧&早々な返答ありがとうございます。
そうですか。出来ませんか。もともと他の人が作ったプログラムなので
少しの修正で直せればと思っていたのですが、仕方ないですね。

頑張って、TStaticTextからTEditに変更してみます。
本当にありがとうございました。


deldel  2007-11-20 23:25:56  No: 28577

解決したようですが...こう?

var
  C: array [0..255] of Char;
begin
  GetWindowText(StaticText1.Handle, C, 255);
  ClipBoard.SetTextBuf(C);
end;


KHE00221  2007-11-21 00:20:51  No: 28578

GetWindowText(StaticText1.Handle, C, 255);
ClipBoard.SetTextBuf(C);

これでは

C := StaticText1.Caption;
ClipBoard.SetTextBuf(C);

と同じで、Caption の内容をクリップボードにコピーしているだけです。

マウスカーソルで選択した文字列ではありません。


deldel  2007-11-21 01:09:47  No: 28579

そうでしたね^^;なんかボケてました。

TEditに変更するのが面倒でしたら、1つTEditを用意して、
以下のようにするのも手だと思います(OnExitがいまいちですが...)。

procedure TForm1.StaticText1MouseMove(Sender: TObject; Shift: TShiftState;
  X, Y: Integer);
begin
  with StaticText1 do begin
    Edit1.Text := Caption;
    Edit1.SetBounds(Left, Top, Width, Height);
    Edit1.Show;
  end;
end;

procedure TForm1.Edit1Exit(Sender: TObject);
begin
  Edit1.Hide;
end;


ウェア  2007-11-21 01:47:12  No: 28580

deldelさん、ご助力ありがとうございます。
ですが、私が修正しているプログラムは、今現在、弊社のみんなが使っているソフトでして、なるべく仕様が増える方向は避けようと思ってます。
チョットでも仕様が増えるだけで、ブーブー言います。(当たり前かもですけどね)
今現状の使い勝手のままでコピー出来ればなと思い質問させていただきました。
けど、ご助力には大変感謝しております。ありがとうございました。

KHE00221さんも、フォローありがとうございました。


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

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






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