タブメニューのウィンドウ②(処理の分割)

本記事では、Windows 専用の業務効率化ツールである本ツールの仕様と操作方法について紹介します。

ツールの種別は以下となります。

このツールは、Windows 専用の業務効率化ツールです。HTA の特性により、HTML で画面を構築しつつ、VBScriptを
用いた操作制御が可能になっています。

動作環境は以下となります。

ツールは Windows 10 および Windows 11 を前提に作られおり動作検証済みです。

画面仕様は以下となります。

・ツールの画面サイズは横幅 954px、高さおよそ 1000px に固定されており、ユーザーはリサイズできず、
最大化もできません。解像度が低い環境では、画面の一部がはみ出す可能性があります。
・起動時には画面が中央に配置されます。画面上部には横並びのタブメニューがあり、「実機環境作業申請書」
「メール作成」「持ち込み資材」の三つのタブを切り替えることで表示内容が変わります。
・タブの切り替えは JavaScript を使わず、HTML の radio ボタンと CSS のみで制御されて
おります

操作方法は以下となります。

各タブ内には「実行」ボタンが配置されており、HTA 起動時に VBScript の初期化処理が実行され、そこで各ボタンの
onclick イベントが紐づけられる仕組みになっています。これにより、画面構造と処理ロジックは分離されています。

<!DOCTYPE html>
<html>
	<head>
		<meta http-equiv="X-UA-Compatible" content="IE=9" />
		<title>作業効率ツール</title>

		<HTA:APPLICATION
		  APPLICATIONNAME="作業効率ツール"
		  BORDER="thin"
		  BORDERSTYLE="normal"
		  CAPTION="yes"
		  SHOWINTASKBAR="yes"
		  SINGLEINSTANCE="yes"
		  SYSMENU="yes"
		  WINDOWSTATE="normal"
		  SCROLL="no"
		  MAXIMIZEBUTTON="no"
		  MINIMIZEBUTTON="yes"
		  RESIZE="no"
		  WIDTH="954"
		  HEIGHT="1000"
		/>

		<style>
			body {
			    margin: 0;
			    font-family: Meiryo, sans-serif;
			}

			/* 横並びタブメニュー(※触らない) */
			.tab-menu {
			    display: flex;
			    flex-direction: row;
			    flex-wrap: nowrap;
			    white-space: nowrap;
			    background-color: #f0f0f0;
			    border-bottom: 2px solid #ccc;
			    overflow-x: auto;
			}

			.tab {
			    display: inline-block;
			    padding: 12px 25px;
			    cursor: pointer;
			    border-right: 1px solid #ccc;
			}

			.tab:hover {
			    background-color: #d0e4ff;
			}

			.content-area {
				font-size: 20px;
				border: 1px solid #ccc;
				height: 920px;
			}

			/* タブ表示制御(追加) */
			.tab-content {
			    display: none;
			}

			#tab1:checked ~ .content-area .tab1 {
			    display: block;
			}

			#tab2:checked ~ .content-area .tab2 {
			    display: block;
			}

			#tab3:checked ~ .content-area .tab3 {
			    display: block;
			}

			/* 選択中タブの見た目(任意・処理影響なし) */
			#tab1:checked + input + input ~ .tab-menu label[for="tab1"],
			#tab2:checked ~ .tab-menu label[for="tab2"],
			#tab3:checked ~ .tab-menu label[for="tab3"] {
			    background-color: #d0e4ff;
			}

			h2 {
			    text-align: center;
			    margin-bottom: 15px;
			}

			table {
			    border-collapse: collapse;
			    width: 905px;
			}

			th, td {
			    border: 1px solid #000;
			    padding: 4px;
			}

			th {
			    font-size: 16px;   /* ← 好きなサイズに変更 */
			    font-weight: bold; /* 任意(見出し感を出したい場合) */
			}

			input[type="text"] {
			    width: 95%;
			    height: 25px;
			    padding-top: 5px;
			}

		</style>

		<script language="VBScript">
			Sub window_onload
				' ウインドウ外形を強制固定
				window.resizeTo 954, 986

				Dim w, h
				w = document.body.clientWidth
				h = document.body.clientHeight

			    	' オプション:画面中央に配置(HTA対応)
			    	Dim screenX, screenY
			    	screenX = (window.screen.Width - 954) / 2
			    	screenY = (window.screen.Height - 1050) / 2
			    	window.moveTo screenX, screenY

				' MsgBox "現在の表示サイズ:" & vbCrLf & _
				' "横幅: " & w & " px" & vbCrLf & _
				' "縦幅: " & h & " px", _
				' vbInformation, "サイズ確認"

				' ボタン初期化だけ呼ぶ
				Call InitTabButtons

			End Sub

			Sub InitTabButtons
			    Set document.getElementById("btnTab1").onclick = GetRef("OnTab1")
			    Set document.getElementById("btnTab2").onclick = GetRef("OnTab2")
			    Set document.getElementById("btnTab3").onclick = GetRef("OnTab3")
			End Sub


			Sub OnTab1
			    MsgBox "tab1", vbInformation, "確認"
			End Sub

			Sub OnTab2
			    MsgBox "tab2", vbInformation, "確認"
			End Sub

			Sub OnTab3
			    MsgBox "tab3", vbInformation, "確認"
			End Sub


		</script>

	</head>

	<body>
		<!-- タブ制御用(追加) -->
		<input type="radio" name="tabsel" id="tab1" checked hidden>
		<input type="radio" name="tabsel" id="tab2" hidden>
		<input type="radio" name="tabsel" id="tab3" hidden>


		<div class="tab-menu">
		    <label class="tab" for="tab1">実機環境作業申請書</label>
		    <label class="tab" for="tab2">メール作成</label>
		    <label class="tab" for="tab3">持ち込み資材</label>
		</div>

		<div class="content-area">
			<div class="tab-content tab1">
				環境変更申請書です
				<input type="button" value="実行" id="btnTab1">
			</div>

			<div class="tab-content tab2">
				下書きのメール作成です
				<input type="button" value="実行" id="btnTab2">
			</div>

			<div class="tab-content tab3">
				持ち込み資材です
				<input type="button" value="実行" id="btnTab3">
			</div>
		</div>
	</body>
</html>
タイトルとURLをコピーしました