[delphi-users:3979] TLabelの文字列を選択可能にする

225 views
Skip to first unread message

7of9

unread,
Oct 23, 2014, 3:36:07 AM10/23/14
to delphi...@freeml.com
お世話になっております。セブンオブナインです。


Delphi XE4/C++ Builder XE4などですでに作成済のソフトに関して、TLabelの値を選択してコピー・ペーストしたいという要望が出てきました。

TLabelはデフォルトでは表示される文字列をマウスで選択できないですが、プロパティなどの設定により選択できるようになるのでしょうか? (自分で見た限りでは、それらしいプロパティは見つけられませんでした)。

あるいは、TEditなどの別のコンポーネントにしないといけないでしょうか?


結構な数のTLabelがあり、これをTEditに置き換える労力を減らしたいと思い、質問させていただきました。


7of9



MLホームページ: http://www.freeml.com/delphi-users

----------------------------------------------------------------------
プロミスなら土日祝日も申込・即日融資可能です
安心&便利♪お申込はこちら
スマホで24時間お申込OK!時間のないあなたにこの一枚、プロミスカード
ネットで申し込んで契約機で契約すれば当日出金も可能です。
http://ad.freeml.com/cgi-bin/sa.cgi?id=lXBPT
------------------------------------------------------[freeml byGMO]--

高木太郎

unread,
Oct 23, 2014, 3:53:13 AM10/23/14
to delphi...@freeml.com
 こんにちは、イマジオムの高木です。 久しぶりに投稿します。

セブンオブナインさん:
> Delphi XE4/C++ Builder XE4などですでに作成済のソフトに
> 関して、TLabelの値を選択してコピー・ペーストしたいという
> 要望が出てきました。
>
> TLabelはデフォルトでは表示される文字列をマウスで選択
> できないですが、プロパティなどの設定により選択できる
> ようになるのでしょうか? (自分で見た限りでは、それらしい
> プロパティは見つけられませんでした)。
>
> あるいは、TEditなどの別のコンポーネントにしないと
> いけないでしょうか?
>
> 結構な数のTLabelがあり、これをTEditに置き換える労力を
> 減らしたいと思い、質問させていただきました。

 TEdit にしないといけません。 TLabel は描画するだけで、
内部的に情報としての文字列を持っていないからです。

 TEdit の BorderStyle を bsNone、ParentColor を True、
ReadOnly を True にすると、ご期待のものになります。

 なおコンポーネントの一括置換には、Devas というフリーフェアを
使うと便利です。 *.pas、*.dfmファイルで──

  TLabel → TEdit
  Caption → Text

──と置換すると、かなり簡単にコンポーネントの置換ができます。

 #意図しない置換でプロジェクトが壊れないよう、念のため
  バックアップを取っておいてくださいね。

――――――――――――――――――――――――――――――――――――
株式会社イマジオム 代表取締役 高木太郎
〒316-0024 茨城県 日立市 水木町 1-11-10
電話:0294-28-0147
ファクシミリ:0294-28-0148
電子メール:tarou_...@imageom.co.jp
ホームページ:http://www.imageom.co.jp/


MLホームページ: http://www.freeml.com/delphi-users

----------------------------------------------------------------------
《温泉1泊2食付500円!?》夫婦・家族でゆったり♪人気の
箱根・京都・軽井沢など人気のエリアが組数限定!特別価格!
■大感謝プラン(1):【平日】  ¥500~
■大感謝プラン(2):【土・連休】¥1,500~
http://ad.freeml.com/cgi-bin/sa.cgi?id=lXCi0
------------------------------------------------------[freeml byGMO]--

7of9

unread,
Oct 23, 2014, 3:58:05 AM10/23/14
to delphi...@freeml.com
高木 様


回答ありがとうございます。

やはりTLabelでは選択はできないのですね。分かってよかったです。

TEditへの変更時の方法と置換ツールの情報、助かりました。


>#意図しない置換でプロジェクトが壊れないよう、念のため
>  バックアップを取っておいてくださいね。

ありがとうございます。


7of9
ビューティアドバイザーやネイリストを目指す方のスクール!
N.Y. Make-up Academy 《メイクの本場ニューヨークに拠点!》
╋╋・‥… 2002年9月開校以来10,000人以上の実績!…‥・╋╋
即戦力をもった資格者を育成!入講前カウンセリング実施中!!
http://ad.freeml.com/cgi-bin/sa.cgi?id=lXCnh
------------------------------------------------------[freeml byGMO]--

じゃぺ

unread,
Oct 23, 2014, 4:02:49 AM10/23/14
to delphi...@freeml.com

川上です。

TLabelは文字列の選択はもちろん、コピーもできないと思います。

TEditで作り変える以外には、例えばラベル右クリックで該当ラベルのCaption(Text)をコピーするコードをイベントハンドラに割り当ててみる、とかはいかがでしょうか。

7of9

unread,
Oct 23, 2014, 4:06:21 AM10/23/14
to delphi...@freeml.com
川上 様


回答ありがとうございます。

イベントハンドラで処理する方法もあるのですね。

勉強になりました。ありがとうございます。


7of9


> 川上です。
>
> TLabelは文字列の選択はもちろん、コピーもできないと思います。
>
> TEditで作り変える以外には、例えばラベル右クリックで該当ラベルのCaption(Text)をコピーするコードをイベントハンドラに割り当ててみる、とかはいかがでしょうか。
>


MLホームページ: http://www.freeml.com/delphi-users

----------------------------------------------------------------------
プロミスなら土日祝日も申込・即日融資可能です
安心&便利♪お申込はこちら
スマホで24時間お申込OK!時間のないあなたにこの一枚、プロミスカード
ネットで申し込んで契約機で契約すれば当日出金も可能です。
http://ad.freeml.com/cgi-bin/sa.cgi?id=lXCxR
------------------------------------------------------[freeml byGMO]--

7of9

unread,
Oct 23, 2014, 4:36:43 AM10/23/14
to delphi...@freeml.com
> 川上です。
>
> TLabelは文字列の選択はもちろん、コピーもできないと思います。
>
> TEditで作り変える以外には、例えばラベル右クリックで該当ラベルのCaption(Text)をコピーするコードをイベントハンドラに割り当ててみる、とかはいかがでしょうか。
>


以下のコードでクリップボードにコピーできました。
(Delphi関連のMLにて) C++ Builderのコードとなり申し訳ないですが。

void __fastcall TForm1::Label1MouseDown(TObject *Sender, TMouseButton Button, TShiftState Shift,
int X, int Y)
{
if (Button == mbRight) {
TLabel *p = (TLabel *)Sender;
Clipboard()->AsText = p->Caption;

ShowMessage(L"Copied to clipboad");
}
}

クリップボードにコピーした、というユーザへの通知はShowMessage()でなく、ステータスバーへの表示、など工夫が必要です。


高木様、川上様に教えていただいた方法を検討し、実装をしていきます。

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



7of9





MLホームページ: http://www.freeml.com/delphi-users

----------------------------------------------------------------------
《温泉1泊2食付500円!?》夫婦・家族でゆったり♪人気の
箱根・京都・軽井沢など人気のエリアが組数限定!特別価格!
■大感謝プラン(1):【平日】  ¥500~
■大感謝プラン(2):【土・連休】¥1,500~
http://ad.freeml.com/cgi-bin/sa.cgi?id=lXCW3
------------------------------------------------------[freeml byGMO]--

Reply all
Reply to author
Forward
0 new messages