はじめまして。
Delphi7を使用しているのですが、プログラムを実行して、TStaticTextで表示されている内容をマウスカーソルで選択してコピーしたいのですが出来ません。
TStaticTextのプロパティ等でどのような設定でコピー出来る様になるのでしょうか?
ご教授の程、宜しくお願いいたします。
出来ません。
選択可能なテキストは TEdit を使用すれば可能です
ReadOnly を True
BorderStyle を bsNone
Color を 背景と同じ色 clBtnFace 等
と設定すれば 選択可能な テキストを表示する事が出来ます
KHE00221さん、ご丁寧&早々な返答ありがとうございます。
そうですか。出来ませんか。もともと他の人が作ったプログラムなので
少しの修正で直せればと思っていたのですが、仕方ないですね。
頑張って、TStaticTextからTEditに変更してみます。
本当にありがとうございました。
解決したようですが...こう?
var
C: array [0..255] of Char;
begin
GetWindowText(StaticText1.Handle, C, 255);
ClipBoard.SetTextBuf(C);
end;
GetWindowText(StaticText1.Handle, C, 255);
ClipBoard.SetTextBuf(C);
これでは
C := StaticText1.Caption;
ClipBoard.SetTextBuf(C);
と同じで、Caption の内容をクリップボードにコピーしているだけです。
マウスカーソルで選択した文字列ではありません。
そうでしたね^^;なんかボケてました。
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;
deldelさん、ご助力ありがとうございます。
ですが、私が修正しているプログラムは、今現在、弊社のみんなが使っているソフトでして、なるべく仕様が増える方向は避けようと思ってます。
チョットでも仕様が増えるだけで、ブーブー言います。(当たり前かもですけどね)
今現状の使い勝手のままでコピー出来ればなと思い質問させていただきました。
けど、ご助力には大変感謝しております。ありがとうございました。
KHE00221さんも、フォローありがとうございました。
ツイート | ![]() |