◆ [VBScript] ラジオボタンダイアログを実現する その4
おはヨーグルト。どーもボキです。

IE11でonclickを検出しない問題。解決した。
onclick=Button.Value=1 ⇒ onclick=Form.Button.Value=1
とすればいい。
a0021757_931857.gif


以下ソース。nclick と Documentを半角にすること。
RadioGroupBox_MaxCount = 10
r = RadioGroupBox("タイトル","キャプション","アイテム0,アイテム1,アイテム2",1)
MsgBox r
'-----------------------------------------------------------------------------------------
' sTitle : タイトル
' sCaption : メッセージ
' RadioItems : ラジオアイテムリスト (配列)
' DefaultIndex : デフォルト選択するアイテムインデックス
Function RadioGroupBox(sTitle, sCaption, RadioItems, DefaultIndex)
Dim objIE,ieDoc,disp_h,disp_w
Dim i,s,r,html,bCmbBx

r = -1
If Not IsArray(RadioItems) Then RadioItems = Split(RadioItems,",")

' IEを起動
Set objIE = WScript.CreateObject("InternetExplorer.Application")
objIE.Navigate "about:blank"

' タグ記述
html = "<BODY><TABLE ID=Tbl BORDER=0 STYLE=font-size:10pt>" & _
"<TR><TD ALIGN=Left VALIGN=Top><SPAN>" & Replace(sCaption,vbCRLF,"<BR>") & "</SPAN>" & _
"<FORM NAME=Form>" & _
"<INPUT TYPE=HIDDEN NAME=Button Value=-1></FORM>"
bCmbBx = UBound(RadioItems) >= RadioGroupBox_MaxCount-1
If bCmbBx Then
' コンボボックス
html = html +"<SELECT NAME=ComboBox size=" & RadioGroupBox_MaxCount &" style=width:100%>"
For i = 0 To UBound(RadioItems)
If i = DefaultIndex Then s = " selected" Else s = ""
html = html +"<OPTION value=" & i & s & ">" & RadioItems(i) &"</OPTION>"
Next
s = s+"</SELECT>"
Else
' ラジオボタン
html = html +"<INPUT NAME=Radio TYPE=HIDDEN VALUE="& DefaultIndex & ">"
For i = 0 to UBound(RadioItems)
If i = DefaultIndex Then s = " checked" Else s = ""
html = html +" <INPUT TYPE=RADIO Name=RG onclick=Radio.value=" & i & s & ">" & RadioItems(i) &"</INPUT><BR>"
Next
End If
html = html +"<BR></TD></TR><TR><TD ALIGN=Center VALIGN=Bottom>"&_
"<INPUT TYPE=BUTTON VALUE=""  OK  "" onclick=Form.Button.Value=1> " & _
"<INPUT TYPE=BUTTON VALUE=""キャンセル"" onclick=Form.Button.Value=0;Form.Radio.Value=-1>" & _
"</TD></TR></FORM></TABLE></BODY>"


' ↓↓共通↓↓
objIE.Document.Body.InnerHtml = html
objIE.Document.Title = sTitle
Call GetResolution(disp_h, disp_w) ' 解像度取得
objIE.Toolbar = 0 ' 上ツールバーを隠す
objIE.StatusBar = False ' 下ステータスバーを隠す
objIE.Document.Body.RuntimeStyle.OverflowX = "hidden" ' 横 スクロールバーを隠す
objIE.Document.Body.RuntimeStyle.OverflowY = "hidden" ' 縦 〃
objIE.Width = objIE.Document.All.Tbl.clientWidth +50 ' 幅 サイズ調整
objIE.Height = objIE.Document.All.Tbl.clientHeight +70 ' 高 〃
objIE.Left = Int((disp_w -objIE.Width )/2) ' 左 位置調整
objIE.Top = Int((disp_h -objIE.Height)/2) ' 上 〃
For i = 0 To objIE.Width
objIE.Document.Title = objIE.Document.Title +" " ' - Microsoft Internet Explorerを隠す
i = i +10
Next
objIE.Document.Body.bgcolor = "ButtonFace" ' 色
objIE.Visible = True ' ウィンドウ表示
objIE.Resizable = False ' ウィンドウサイズ固定 ※表示前に実行すると縁にゴミ画像が残る
' ユーザ操作取得
On Error Resume Next ' エラー無視 ([×]終了対応)
Set ieDoc = objIE.Document
Do While r = -1
WScript.Sleep 100
r = CInt(ieDoc.Form.Button.Value)
If objIE = Null Then Exit Do
Loop
objIE.Visible = False
' ↑↑共通↑↑

' 値取得
If bCmbBx Then
If CInt(ieDoc.Form.Button.value) = 1 Then
r = ieDoc.Form.ComboBox.selectedIndex
Else
r = -1
End If
Else
r = CInt(ieDoc.Form.Radio.value) ' 取得データは文字のため
End If
RadioGroupBox = r
objIE.Quit
Set objIE = Nothing
On Error GoTo 0 'エラー無視を解除
End Function

'-----------------------------------------------------------------------------------------
' 解像度を取得
Sub GetResolution(ByRef wHeight, ByRef wWidth)
Dim Locator,Service,OfeSet

Set Locator = WScript.CreateObject("WbemScripting.SWbemLocator")
Set Service = Locator.ConnectServer
Set QfeSet = Service.ExecQuery("Select * From Win32_VideoController")
For Each Qfe In QfeSet
If Qfe.CurrentHorizontalResolution <> nil then ' 複数ディスプレイ出力PC対応
wWidth = Qfe.CurrentHorizontalResolution
wHeight= Qfe.CurrentVerticalResolution
End If
Next
End Sub
[VBScript] ラジオボタンダイアログを実現する その3

[PR]
by yozda | 2014-12-29 09:29 | プログラミング | Trackback | Comments(3)
トラックバックURL : http://yozda.exblog.jp/tb/20603963
トラックバックする(会員専用) [ヘルプ]
Commented by ひらひら。 at 2017-04-20 22:30 x
ラジオボタンダイアログのソース参考にさせてもらっています。
ありがとうございます。
こちらは、ウィンドウ7、ie11で使用しています。
バグを探しているときに、何回も試していたところ
タイトルは表示されるのですが、
ラジオボタンの部分に
ieのお気に入りの部分が全て崩れて入ってしまっています。
本来のラジオボタンが全く表示されていません。。。
再起動をしてみたり、インターネットオプションで一時ファイルを削除していますが、治らず。。。
なにか良い方法がありましたら教えていただけないでしょうか?


Commented by ひらひら。 at 2017-04-21 20:30 x
解決しました!
IEのエクスプローラーバーにお気に入りが表示されていたためでした。
初心者でお騒がせをしました。
ありがとうございました。
Commented by yozda at 2017-04-21 20:50
解決の連絡ありがとうございます。
私の記事が役に立てているようで嬉しいです。
<< [動画] B'z さよ... [動画] B'z 哀し... >>