ダイアログに使われる標準色をrgb値として取得したい

私の稼働環境ではダイアログの背景色が標準色の場合"明るいグレー4"であることは色指定画面で見比べるとわかりますが、このダイアログの背景色プロパティはEmptyになっていて、プロパティから背景色は拾えないみたいです。

Basicからテキストボックスの背景色をダイアログの背景色に一致させたいのですが、どうすればいいでしょうか。

※現状 背景色を 無条件に "明るいグレー4"にして合わせてますが、テーマが変わると 背景色もかわりますのでこの方法が暫定的だと思ってます。

Q_Taro様、私もどのように実現可能か興味があり試してみました。
Peerオブジェクト経由で取得できるようでありました。お試しいただけますでしょうか…?

Sub Test()
    Dim oDialog As Object
    oDialog = CreateUnoDialog(DialogLibraries.Standard.Dialog1)
    oDialog.setVisible(True)

    Dim oPeer As Object
    oPeer = oDialog.getPeer()

    Dim vColor As Variant
    vColor = oPeer.getProperty("BackgroundColor")

    Dim oText As Object
    oText = oDialog.getControl("TextField1")
    oText.Model.BackgroundColor = vColor

    oDialog.execute() 
End Sub

Version: 26.2.2.2 (X86_64)
Build ID: 1f77d10d6938fd34972958f64b2bcfa54f8b1ba5
CPU threads: 4; OS: Linux 6.12; UI render: default; VCL: gtk3
Locale: ja-JP (ja_JP.UTF-8); UI: ja-JP
Calc: threaded

2 Likes

su_do様
Q_Taroです。明解な回答ありがとう!。こちらでもDialogの標準色の背景色をRGB値で拾うことができ TextBoxの背景色に設定できました。
ちなみに、当方の環境では setVisible( True ) しなくても ひろえてます。
Peer の中に BackgroundColor があるなんて… 思いもつかなかったです。
これで 変な色設定しなくて すっきりしました。ありがとうございました。

早速お試しありがとうございます。解決とのこと何よりでした。
私の方こそ勉強になりました。ありがとうございました。