リストの列幅が狭い場合にホバーで値を全表示する実装例
質問
リストのある列の幅が狭く、リスト上は一部しか表示されていない状態なのですが、行にマウスをホバーしたとき、ヒントのような形でその列の値を全体表示させるということはできますか?
回答
コーディング次第で実装が可能です。
処理概要:
1. 再利用可能パーツなどでポップアップを作成
2. リストの 'Hintpopup’ プロパティに、1のポップアップを指定
3. ポップアップ表示の際にリストの値をポップアップのプロパティに設定するように記述
4. リストの 'ItemMouseHover’ イベントで、ポップアップを表示
コーディング例)
■再利用可能パーツ
Function Options(*DIRECT)
Begin_Com Role(*EXTENDS #PRIM_PPNL) Left(0) Height(56) Top(0) Width(120) Layoutmanager(#Layout1)
Define_Com Class(#PRIM_TBLO) Name(#Layout1)
Define_Com Class(#PRIM_TBLO.Row) Name(#Layout1Row1) Displayposition(1) Parent(#Layout1)
Define_Com Class(#PRIM_TBLO.Column) Name(#Layout1Column1) Displayposition(1) Parent(#Layout1)
Define_Com Class(#PRIM_TBLO.Item) Name(#Layout1Item1) Column(#Layout1Column1) Manage(#Label1) Parent(#Layout1) Row(#Layout1Row1) Sizing(None)
Define_Com Class(#PRIM_LABL) Name(#Label1) Caption('test hint popup あいうえお’) Displayposition(1) Ellipses(Word) Height(56) Left(11) Parent(#COM_OWNER) Tabposition(1) Tabstop(False) Top(-1) Verticalalignment(Center) Width(97)
Define_Pty Name(HINTLABEL) Set(LABEL)
Ptyroutine Name(LABEL)
Define_Map For(*INPUT) Class(#STD_TEXT)
#Label1.Caption := #STD_TEXT
Endroutine
End_Com
■Webページ
Begin_Com Role(*EXTENDS #PRIM_WEB)
Define_Com Class(#PRIM_LIST) Name(#List1) Displayposition(1) Left(120) Parent(#COM_OWNER) Tabposition(1) Top(72) Height(217) Width(585) Columndrag(True) Columnheadersizing(ContentHeight) Hintpopup(#REUSABLE)
Define_Com Class(#PRIM_LIST.Number) Name(#List1Column1) Columnwidth(92) Displayposition(1) Parent(#List1) Sortonclick(True) Source(#STD_NUM) Columncaptiontype(Caption) Columncaptionwordwrap(True)
Define_Com Class(#PRIM_LIST.String) Name(#List1Column2) Columnwidth(246) Displayposition(2) Parent(#List1) Sortonclick(True) Source(#STD_DESC)
Define_Com Class(#PRIM_LIST.Number) Name(#List1Column3) Columnwidth(190) Displayposition(3) Parent(#List1) Sortonclick(True) Source(#STD_AMNT)
Define_Com Class(#REUSABLE) Name(#REUSABLE) Left(510) Top(72)
Evtroutine Handling(#Com_owner.Initialize)
#List1Column1.ColumnCaption := “標準" + (10).AsUnicodeString + “番号"
Clr_List Named(#List1)
Begin_Loop Using(#STD_NUM) To(5)
#STD_DESC := '記述’ + #STD_NUM.AsString
#STD_AMNT := #STD_NUM * 100
Add_Entry To_List(#List1)
End_Loop
Endroutine
Evtroutine Handling(#List1.ItemMouseHover)
#STD_TEXT := #List1Column1.CurrentItem.Value.AsString
* #STD_TEXT := #List1Column2.CurrentItem.Value
* #STD_TEXT := #List1Column3.CurrentItem.Value.AsString
#REUSABLE.HINTLABEL := #STD_TEXT
#List1.HintPopup.ShowPopup
Endroutine
End_Com
有償の「LANSAテクニカル・ホットライン・サービス」をご契約いただければ、過去データベースの検索から今回ご紹介した以外の技術情報を探すことも出来ます。 「LANSAテクニカル・ホットライン・サービス」のご契約についてはお問い合わせフォーム(https://www.lansa.jp/inquiryform/)よりお問い合わせください。





