【Firemonkey初心者】TLabelのクリックイベントが拾えません

58 views
Skip to first unread message

Eiichiro Kamiya

unread,
Nov 28, 2022, 10:50:52 PM11/28/22
to radstu...@googlegroups.com
こんにちは。Firemonkeyで四苦八苦しています。

フォーム上に TLabel を置き、HitTest を True にして OnClick イベントを書いたのですが、クリックしても何事も起きません。どうすればイベントを拾えるのでしょうか。

========
神谷英一郎

Takahiro Kawakami

unread,
Nov 29, 2022, 1:22:29 AM11/29/22
to radstu...@googlegroups.com
Delphiのバージョンはいくつでしょうか。
手元のDelphi11.2、10.3では、HitTestをTrueにすることでOnClickイベントを問題なく拾えます。

いじっているのがラベルの後ろにあるコンポーネントのHitTestだったり、
作成したプロシージャがコンポーネントのイベントに関連づいていない、等は
ないでしょうか。念のため。


Takahiro Kawakami
xyzabc....@gmail.com



2022年11月29日(火) 12:50 Eiichiro Kamiya <eiichir...@gmail.com>:
--
このメールは Google グループのグループ「Japan RAD Studio User Group」に登録しているユーザーに送られています。
このグループから退会し、グループからのメールの配信を停止するには radstudio-jp...@googlegroups.com にメールを送信してください。
このディスカッションをウェブ上で閲覧するには https://groups.google.com/d/msgid/radstudio-jp/CAA1D39SjaRi0ZA-Rq%3D-X0gQFFyAXE8niQ_%3D37b2CWN88SaVcHw%40mail.gmail.com にアクセスしてください。

Eiichiro Kamiya

unread,
Dec 3, 2022, 6:52:56 AM12/3/22
to radstu...@googlegroups.com
アドバイス、ありがとうございます。(返信おそくなりました。)
とりあえず、TPanel の上に TLabel を置いて TPanel でイベントを受けるようにしました。

ひとつ、思い当たることがあるので、一段落したら試して報告します。

========
神谷英一郎


2022年11月29日(火) 15:22 Takahiro Kawakami <xyzabc....@gmail.com>:
このディスカッションをウェブ上で閲覧するには https://groups.google.com/d/msgid/radstudio-jp/CAJ%3DwJ4bR%2B-T7xUTjNNxUW4K3f5JPQz_mOBGb9QOD1AdGfxJWBQ%40mail.gmail.com にアクセスしてください。

Eiichiro Kamiya

unread,
Dec 7, 2022, 8:40:06 PM12/7/22
to radstu...@googlegroups.com
いろいろ試した結果をご報告します。

1.TLabel にStileLookupを設定しないと、もちろんクリックイベントを拾います。
2.TLabel に設定したスタイルがtextのみだとクリックイベントを拾います。
3.ボタンのように見せたいと思ってスタイルでtextの背景にTRectangleを貼るとクリックイベントを拾いません。
4.フォーム側でTRectangleを貼り、その上にTLabelを置いてtext定義のみのスタイルを設定すればクリックイベントを拾います。TRectangleはスタイル設定ができないので、個別にFillおよびStroke属性を設定することになります。

なんだか難しい。もっとよい解決法があればご教示ください。とりあえず本件はここまでとします。

========
神谷英一郎


2022年12月3日(土) 20:52 Eiichiro Kamiya <eiichir...@gmail.com>:

細川淳

unread,
Dec 7, 2022, 10:04:00 PM12/7/22
to radstu...@googlegroups.com
神谷さん

こんにちは。
細川です。

次のような手順で試して見ました。

1.スタイルエディタで labelstyle をコピー
2.ルートを選択して右クリックでペースト
3.StyleName を labelbuttonstyle に変更
4.labelbuttonstyle に TRectangle を配置(Rectangle1)
5.Rectangle1 を右クリックして「背面に移動」
6.Rectangle1 の HitTest を False にする
7.スタイルエディタを閉じる(スタイルを適用して閉じる)
8.Form に TLabel を配置(Label1)
9.Label1 の StyleLookup を labelbuttonstyle にする
10.Label1 の HitTest を True にする
11.Label1.OnClick イベントハンドラを作る
12.OnClick イベントハンドラの中で ShowMessage('hello');
13.実行
14.Label1 をクリックする

無事 OnClick イベントが発生しました。
環境は Delphi 11.2 Alexandria、Style は Blend.style です。

2022年12月8日(木) 10:40 Eiichiro Kamiya <eiichir...@gmail.com>:
> このディスカッションをウェブ上で閲覧するには https://groups.google.com/d/msgid/radstudio-jp/CAA1D39RqwanCqur6vNda4RzUhBUWWZ4_bkGE8tUU2kjwF63%2BbQ%40mail.gmail.com にアクセスしてください。

Eiichiro Kamiya

unread,
Dec 17, 2022, 9:02:43 PM12/17/22
to radstu...@googlegroups.com
細川さん、ありがとうございます。
手順通り試し、たいへん簡単・スッキリ・何の不思議もなくクリックを拾いました。お手数をおかけしました。

私は「同じこと」をやっていたつもりなので、この結果にはちょっと衝撃を受けています。きっと何かひねくれた手順を採用していたものと思います。何が違っていたかがわかったらまたご報告します。

========
神谷英一郎


2022年12月8日(木) 12:04 細川淳 <j...@serialgames.co.jp>:
このメールは Google グループのグループ「Japan RAD Studio User Group」の登録者に送られています。
このグループから退会し、グループからのメールの配信を停止するには radstudio-jp...@googlegroups.com にメールを送信してください。
このディスカッションをウェブ上で閲覧するには、https://groups.google.com/d/msgid/radstudio-jp/CAEcB0P5JfF8yrUdxG%2BAXs_d_n3wLB_tEip8CxAUaBH8db2RDrQ%40mail.gmail.com にアクセスしてください。
Reply all
Reply to author
Forward
0 new messages