プロが作ったプログラムには、到底敵わないけれど・・・ でも、今の自分の精一杯。 持てる力の全てをつぎ込んで書きました。
マークシートを(半自動ですが)作ってくれるプログラムです。 罫線の幅や長さ等、微調整が必ず必要 ですが、動きます!
この世界に残したかった、夢のひとつをかたちにしました。 My Mark Sheet Maker です。
4ブロックまで。最大19選択肢。A3, A4, B4, B5版のマークシートが作成可能です。
【もくじ】
1.使い方 (1)用紙と向きを選択(新規作成の場合) (2)タイトルを入力 (3)群数、行数、列数、解答欄群(ブロック)の間隔を設定 (4)マークの縦長楕円の幅と高さを調整 (5)選択肢番号の大きさの変更他 (6)表示の更新と設定の保存 (7)選択肢数(=列数)の設定 (8)設問番号の変更 (9)罫線の設定及び長さの調節 (10)上余白・■■■ 位置・氏名記入欄の設定 (11)印刷 (12)セクション名の追加と削除(の仕様) 2.sk4d.dllについて 3.ダウンロード 4.まとめ 5.お願いとお断り
1.使い方
(1)用紙と向きを選択(新規作成の場合)
プログラムを起動したら、最初に作成するマークシートの用紙と向きを選びます。これだけでデフォルト設定に従ったマークシートが描画されます。
一般的な試験用途でしたら、A4・横向きが最適だと思います。
描画される内容が『チープ』だと感じる方が多いと思いますが、機械にマークをしっかり読ませることが最大の目的なので、これを阻害しそうな要因は出来るだけ取り除いた結果が、細く薄い印字と罫線になっています。行列切り出しの目安となる解答欄の枠線は残しましたが、解答欄内の縦罫線は消去できる設定としたのもこのためです。罫線があった方が好ましいと感じられる方も、もちろんいらっしゃると思いますが、縦罫線がない状態の方が機械の目に対する悪影響は排除できます。
デフォルト設定では、解答欄の群数(ブロック数)は4、1群あたりの行数は25行(行数はすべてのブロックで等しくする必要があります)、選択肢数は8としてあります。ブロックどうしの間隔(群間と表示)も調整できます。群数・行数・列数を増減すると、その設定に合わせたマークシートが再描画されます。1366 × 768 ピクセルの解像度で開発しています(高 DPI 環境には非対応です)。
カチカチ、クリックして値を設定するより、TSpinEdit に直接入力した方が早いカモ?です。
・既存のマークシート設定がある場合
以前に使用して保存したマークシート設定がある場合は、それを呼び出して利用することもできます。プログラムの起動後に ComboBox の選択肢から選ぶだけです(用紙のサイズや方向の設定は必要ありません)。
(2)タイトルを入力
後からでもかまいませんが、用紙と向きを選んだら、次に「タイトル」を入力してください。
内容は自由です。
例えば、こんな感じです。
あまり長くしない方が管理が楽?かな・・・
タイトル名でマークシート設定を管理( INI ファイルに保存&呼び出し)しますので、教科 or 科目の名称、考査の時期、日付等を入れておくと管理しやすいのではないかと思います。Edit コントロールへ入力すると同時にマークシートの描画も更新されます。入力確定後、再度 Enter キー押し下げで、次のコントロールへフォーカスが移動します。
フォントは「MS Pゴシック」一択です(すみません)。
タイトルを入力するComboBoxの右隣には、次のアイコンがあります。クリックすると、デフォルトのタイトル文字列『タイトル 考査名 解答用紙(20XX/MM/DD)』を設定できます。
クリックすると、次の確認メッセージが表示されます。
「はい」をクリックすると更新されます。
新しいタイトルを設定してください。
(3)群数、行数、列数、解答欄群(ブロック)の間隔を設定
ここで、前述した群数、行数、列数、解答欄群(ブロック)の間隔を設定してください。ここでのフォーカスの移動は TAB キー押し下げです(Shift + TAB で戻ります)。
解答欄の纏まりを「群(ブロック)」と表現しています。1~4群(ブロック)まで設定できます。群数を変更すると、それに合わせてマークシートの描画内容も更新されます。列数と行数は1つの群(ブロック)内での値を設定してください。
群数1、行数25、列数8の場合(実行時の画面)
群数1、行数25、列数8の場合(PDF出力時の画面) マークする部分(楕円)の大きさは、後から調整できます。
群数2、行数25、列数8の場合(実行時の画面) 解答欄群(ブロック)矩形の右側にややはみ出した横罫線の長さはあとから微調整できます。
群数2、行数25、列数8の場合(PDF出力時の画面)
群数3、行数25、列数8の場合(実行時の画面)
群数3、行数25、列数8の場合(PDF出力時の画面)
群数4、行数25、列数8の場合(実行時の画面)
群数4、行数25、列数8の場合(PDF出力時の画面)
行数、列数、解答欄群(ブロック)の間隔の設定も同様に TSpinEdit の値を変更するだけで行えます。TSpinEdit の値の変更に合わせて画面の描画内容が自動更新されます。
(4)マークの縦長楕円の幅と高さを調整
塗りつぶし範囲を示す、選択肢番号を囲む縦長楕円(=マーク)の幅と高さを調整します。やり方はこちらも TSpinEdit 右側の ▲ や ▼ をカチカチするだけです。広すぎると塗りつぶしに時間がかかり、狭すぎると(読み取りプログラムのアルゴリズムにもよりますが)読み取り判定に問題が生じる可能性が高くなります。
過去に私が自作したマークシートリーダーは(設定によっては)髪の毛1本分の・・・マークとは到底言い難いような・・・「線」でも反応しましたので、マークシートの印刷用紙に黒いシミがあったり、受験者の使用した消しゴムの屑が付着していた場合にも(読み取り閾値の設定で)対応できるよう、やはり、マークはある程度の幅と高さがあった方がいいのかもしれません。
・・・というようなこれまでの経験と、自分的な好みでデフォルトの幅と高さは設定しました(やや大きめです)ので、適宜変更してください。
長径が「高さ」、短径が「幅」です。 (負の数も設定できます)
いちばん小さくした場合で、これくらいでしょうか?
(5)選択肢番号の大きさの変更他
選択肢番号の数字の大きさを変更したい場合は、画面右上の □設定 をチェックしてください。
□部分をクリックして、チェックを入れます。
各種設定を変更できるバーが新しく表示されます。その中の「 Font サイズ」(文字が小さいです)で選択肢番号の数字の大きさを調整できます。
デフォルトは10ポイントに設定してあります。
【マークする部分の設定例】
FontSize : 10, 楕円の長径 : +0, 楕円の短径 : +0 (デフォルト設定)
FontSize : 16, 楕円の長径 : +2, 楕円の短径 : +2 に設定
FontSize : 7, 楕円の長径 : -3, 楕円の短径 : -3 に設定
ちなみに▼をクリックして入力できる下限値は「7」です。
これ以上小さく出来ません・・・と言いたいところですが
プロパティで MinValue を「7」に指定しても・・・
MaxValue は大きすぎ?・・・
直接入力すれば「1」指定も出来てしまいます。もちろん、数字は判読困難・・・
直接入力する場合、欄を空欄にすると( SpinEdit が内部で StrToInt 関数のような仕組みを使い、入力値を整数に変換する際に)例外が発生しましたので、StrToIntDef 関数を使用して空欄でもエラーメッセージが表示されないようにしましたが、MinValue 以下の値が直接入力された場合に、強制的に値を変更して SpinEdit に「7」と表示するのはワザと避けてあります(そういう仕様だと御理解ください)。
つまり・・・
ACanvas.Font.Name := 'MS Gothic';
//ACanvas.Font.Size := StrToInt(seFontSize.Text);
ACanvas.Font.Size := StrToIntDef(seFontSize.Text, 7);
・・・という記述は入れましたが、
procedure TForm1.SpinEdit1Change(Sender: TObject);
begin
if SpinEdit1.Value < 7 then
SpinEdit1.Value := 7;
end;
や
procedure TForm1.SpinEdit1Exit(Sender: TObject);
begin
if SpinEdit1.Value < 7 then
SpinEdit1.Value := 7;
end;
みたいな記述はしてません。
なので、TSpinEdit を空欄にすると表示される・・・
このメッセージはでません。
カチカチクリックじゃなくて、コントロールに数値を直接入力すれば・・・
FontSize := 1 も可能
これもナニかに使えるかも・・・と思った次第です。 思っただけで、ナニに使えるかは、まだ思いつきませんが・・・
ちなみに「0」を入力してみたら・・・
選択肢番号が巨大化しました!
これは Windows の仕様で、TFont.Size プロパティに 0 を代入すると、Windowsはそれを「サイズ指定なし(デフォルト)」と解釈するようです。その結果、そのシステムやデバイスの「標準のフォントサイズ」が適用されてしまい、大きな文字が表示される・・・でいいのかな?
Font サイズ指定周辺のコントロールについても触れておきます。
「選択肢始番」(自分でも読み方がわかりません・・・)は、正確に表現すれば「マークシートの選択肢の番号の始まりの数字を0(ゼロ)にするか、1(イチ)にするかの指定」を意味します。
そこにどういった必然性があるのか、わたしにはまったく理解できませんが、高等学校の教科「情報」の共通テストのマークシートでは、選択肢の始まりは「1」ではなく「0」です。このことから、選択肢の番号が「0」始まりのマークシートも作成可能としました。
また、「印刷濃度」は、罫線を含めたマークシート印刷時の灰色の濃さの調整です。このプログラムは(別に作成中の)マークシートリーダーで使用するマークシートを作成するために開発しました。その開発中のプログラムで実際に読み取りテストを行って、問題なく動作した値(140)をデフォルト値に設定してあります。
マークの読み取りに限って言えば、ヒトの目で選択肢番号が読み取れるギリギリの線まで印刷の濃さは薄くしたいところ(=機械的な読み取り判定ミスを防止するため)ですが・・・
自分的には、できればこれくらいの濃さで仕上げたい気がします・・・ しますが・・・
実際の運用では、これくらい印刷濃度を薄くすると、以下のような様々な問題が生じます。
問題1 スキャナーで解像度 200dpi を指定してスキャンすると選択肢の数字が読めなくなる。 問題2 罫線もほぼ消えるので、読み取りプログラムで読取範囲を設定するのに一苦労する。 問題3 採点プログラムで採点し、返却用シートとして印刷すると「ほぼ白紙化」する。等々
ですので、後の処理を考慮して気持ち濃い目に設定してあります。このプログラムを、万一、使用される場合は、必要十分な試行を行って、「試験実施後の処理に支障の出ない濃さ」でマークシートを印刷していただけますようお願い申し上げます。
試しに様々な濃度で印刷したマークシートを、実際に現場で使用しているスキャナーでスキャンして、読み取った後の画像がどのような状態になるのか、確認してみました。
【 濃度 140 】
実行時の PC 画面
スキャンしたJpeg画像(部分・カラー・200dpi)
【 濃度 150 】
実行時の PC 画面
スキャンしたJpeg画像(部分・カラー・200dpi)
【 濃度 160 】
実行時の PC 画面
スキャンしたJpeg画像(部分・カラー・200dpi)
【 濃度 170 】
実行時の PC 画面
スキャンしたJpeg画像(部分・カラー・200dpi)
【 濃度 180 】
実行時の PC 画面
スキャンしたJpeg画像(部分・カラー・200dpi)
【 濃度 190 】
実行時の PC 画面
スキャンしたJpeg画像(部分・カラー・200dpi)
【 濃度 200 】
実行時の PC 画面
スキャンしたJpeg画像(部分・カラー・200dpi)
自分的には、濃度 200 くらいで印刷した状態が『しっくり』きますし、これをスキャンするとほとんど白紙状態になりますので、機械的に読み取り精度を上げるという意味では、これくらいの濃度に設定したいところです。
ただ、ヒトがマークの読み取り結果を目視して確認したり、マークシート画像上に採点結果を印刷して答案返却用に使用するという、採点に伴う諸々の作業を円滑に行うためにはスキャンした画像で文字の判別がギリギリ可能な濃度 140 以下に設定する必要がありそうです。このマークシート作成プログラムで作成したマークシートを使用して、試験の準備→実施→採点→答案返却という実際の現場の作業を何回か繰り返す中で最適な濃度の設定値を見つけなければなりません。経験して初めてわかることがどうしてもあるからです。そのようなことから、現在は濃度のデフォルト設定値をスキャナーでスキャンした際に選択肢の数字・文字がギリギリ読める限界の値 140 としてあります。
(6)表示の更新と設定の保存
ジョイスティックの絵文字は「操作」を意味します。
モニター画面のアイコンがあるボタンが「表示の更新」、フロッピーディスクにギヤのアイコンがあるボタンが「設定の保存」です。
「表示の更新」ボタンは、このプログラムの設計当初設置したもので、その名前の通り、このボタンをクリックして表示(描画)を更新するために設けたものです。ですが、すぐに設定値の変更と同時に画面を更新しても動作がそれほど重たくならないことに気づき、画面への描画は自動化することにしました。しかし、何かの拍子に(あぁこの操作のためには、このボタン残しておかないと・・・)と思った記憶があり、つまり、確かに何か明確な理由があって残してある「表示の更新」ボタンなのですが、その・・・確かにあったはずの明確な理由が、今、どうしても思い出せません。
たしかにナニか、あったんだけどなー
なので、あとから思い出せたら追記することにします!
「設定の保存」ボタンは、用紙の選択や向き、タイトル他の設定を一括して exe と同じ場所に自動的に作成される INI ファイルに保存するためのボタンです。INI ファイルはただのテキストファイルなので、メモ帳等のエディタで開いて直接編集することも可能ですが、推奨はしません。設定の変更と保存はなるべくプログラムを起動して行っていただけますよう、お願いいたします。
ちなみに INI ファイルの内容は次の通りです。
[情報Ⅰ 考査① 解答用紙(2026/05/25)]
SectionNmae=情報Ⅰ 考査① 解答用紙(2026/05/25)
PaperSize=A4
Orientation=横
Blocks=4
Rows=25
Cols=8
Space=5
Major=0
Minor=0
StartingNumber=1
Gray=140
TateKeisen=-21
YokoKeisen=0
TopMarginMM=14
TDPosition=30
Copies=1
PDF_Margin=0
SectionNumber=1
Multiple=0
UseKana=0
OffVertLine=1
Option=1
Name=1
rbtn1=1
rbtn2=0
FontSize=10
(7)選択肢数(=列数)の設定
19列(選択肢)を指定すると大語群対応がチェックできるようになります。 (上の図はチェックした状態です)
今回作成したプログラムでは、この Blog の過去の記事で紹介した「 100 選択肢に対応したマークシートリーダー」用のマークシートも作成できます。自分で言うのも何ですが、「 100 選択肢に対応したマークシートリーダー」は好評で、複数の方が定期的に使用してくださっています。ただ、Word や Excel を利用して作成したマークシートでは、私の作成技術が稚拙なため、どうしてもマークとマークの間隔が狭くなってしまい、大きく(乱暴に?)塗りつぶされた場合に複数マーク判定が出やすくなる(大語群の場合には空欄と同様に扱っていますが)という問題がありまして、これをどうにか改善したいと考えたことも、「プログラムでマークシートを作ってみよう!」と思った理由のひとつです。
新しく作成中のマークシートリーダーでも、もちろん、この大語群対応マークシートが読めるようにしてありますが、まだ実際の試験で使用して問題がないかどうかの確認を行っていませんので、現時点での公開はできませんが、この Blog で過去に公開してきたマークシートリーダーより、読み取り速度は比較にならないくらい高速化することに成功しています。設定によりますが、輪郭検出を最初の1枚のみに限定した場合で、私の PC では、1秒間に約47,500マークを読み取り可能です。
【テストに使用したPCのスペック】
プロセッサ 11th Gen Intel(R) Core(TM) i7-1185G7 @ 3.00GHz (3.00 GHz)
実装 RAM 32.0 GB (31.7 GB 使用可能)
システムの種類 64 ビット オペレーティング システム、x64 ベース プロセッサ
【OS】
エディション Windows 11 Pro
バージョン 25H2
開発中の MS_Reader V3(2026年1月現在)
上の図のように、8選択肢 × 100 設問 × 42 枚 = 33600 マークを 0.708 秒で読みますので、1秒間あたりでは、47457 マークを読める計算になります。
すべてのマークシートについて輪郭検出を行った場合(すべてのマークシートについて、画像左上の ■■■ 座標を検出し、予め登録してあるそこからの位置座標から読み取り範囲を設定する=印刷時やスキャン時のズレ・ブレの問題を完全に解消できます)は、
1秒間あたり、25946 マーク読みます。過去に私が作ったマークシートリーダーの読み取り速度に比較すれば、これでも十分、高速です。
※ 読み取り時間はあくまでも参考です。使用する PC の性能により、この時間は大きく変化します。
(8)設問番号の変更
デフォルト設定の設問番号は、1から始まる数字の連番ですが、□ 設問番号カナにチェックすることで解答欄群(ブロック)毎に半角カタカナのアから五十音順で始まる表記に変更できます。
主に数学の採点用途での使用を想定しましたので、 設問番号をカナ表記にした場合は解答欄群上に大問番号が表示されます。
また、表示される大問番号は任意の値から開始することができます。
・・・と、ここまで記事を書いて、重要な設定をし忘れたことに気づきました。あわわ・・・
プログラムを修正(改良)してから、この続きを書くことにします。
72時間ほど経過しました。
で、ナニをしたかと言うと・・・
共通テストの数学解答用マークシート形式での出力を可能に設定
どうせやるなら、理科も・・・
情報も・・・
16進数に関連した問題が脳裏をヨギリマス。
作り方は簡単。選択された列数が11列、12列、16列であった場合には次のようなメッセージを表示して、ユーザーの返答が「はい」の場合には共通テスト仕様のマークシートを出力するようにプログラムを修正しました。返答が「はい」なら共通テスト仕様の、「いいえ」なら選択肢が1始まり・連番のマークシートが作成されます。
次の列数指定に移動するには「キャンセル」をクリックします。
(9)罫線の設定及び長さの調節
罫線の種類を変更したり、太さを変えたりすることは出来ませんが長さの調整は可能です。
列数や行数を変更すると、ド素人が書いたプログラムですので、計算が微妙に狂って、次のようにブロックの右側や下側の罫線がはみ出したり、足りなくなったりすることがあります。
右側の横罫線がはみ出し
右側の横罫線がはみ出し & 縦の罫線の長さが足りない
このような場合には、□ 設定をチェックして・・・
表示されたコントロールの「縦罫調整」及び「横罫調整」の値を増減させて調整してください。1クリックで1ピクセル単位の調整が可能です。このプログラムは画面サイズ 1366 × 768 での使用を前提として開発していますので、必要なコントロールを幅の制限内に詰め込むため、キャプションは「意味が通じれば可」とし、「罫線」の「線」は省略しました(入力ミスではありません)。
これで次のように修正できます。
ちなみに、罫線の長さ調整コントロールの左にある「群内縦罫線なし」のチェックを OFF にすれば列を示す縦罫線も描画できますが、正確なマークの読み取り処理を実行するには、縦罫線はない方が絶対に良いので、デフォルト設定では「なし」にしています。
↓
【縦罫線がある状態】
縦罫線の使用は推奨しません!
(10)上余白・■■■ 位置・氏名記入欄の設定
上の余白を設定すると、解答欄群(ブロック)の高さが変わらないように、下の余白も連動して調整されます。左右の余白は自動設定です(左右の余白を手動で調整することはできません)。
■■■ の位置は、デフォルト設定で画像化したマークシートの左端から300ピクセル以内、上端から300ピクセル以内で、解答欄に重ならないように、また、数学用途の場合は大問番号とも重ならないように位置を設定してください。最も左の解答欄群(ブロック)の設問番号欄の右側縦罫線を上に延長した位置に ■■■ の左側が一致するように設計してあります(左右の位置の調整はできません)。
■■■ は、輪郭検出のターゲットとして利用し、マーク読み取り時に 解答欄群(ブロック)の位置を決定する計算の基点になります。
氏名記入欄は、敢えてマークを利用しない設定としてあります。クラスや番号をマークで・・・と考えたこともあるのですが、実際の運用上では塗りつぶしミスが絶対にあることや、スキャンする前にマークシートの並べ間違い(番号順になっていない・上下が逆さま・裏返し等)のチェックを必ず行う必要があることから、採点業務を円滑に進めるためには「氏名記入欄は手書きが最も良い方法」であると考えました。なお、表示(描画)位置は、シートの右上限定です。
氏名部分の下線から大きくはみ出して氏名を記入する受験者もいます。 解答欄との間に十分な余白を設けているのは、氏名のはみ出し対策です。
(11)印刷
印刷関連のコントロールとその役割です。
大変申し訳ありませんが一部のモバイルプリンターで、このプログラムで作成したマークシートを印刷出来ないことを確認しました。機種名は記載しませんが、どうやら一部のモバイルプリンターでは他のプリンターとドライバ互換性や DevMode 処理が異なり、Delphi の TPrinter で印刷エラーが発生しやすいようです。私の場合も PrinterSetupDialog 実行後、GetPrinter / SetPrinter による dmCopies 設定が My モバイルプリンターでは失敗し、BeginDoc できない状態になりました(普段マークシートの印刷に利用している複合機ではちゃんと印刷できました)。
仕方がないのでデータをビットマップに保存し、これを印刷する方法(以下のコードを参照)を試したら印刷できましたが、この方法では余白の設定に問題が残り・・・結局、元の「一部のモバイルプリンターで印刷出来ない」コードに戻しました。
procedure TForm1.PrintImageShell;
var
TmpFile: string;
Bmp: TBitmap;
i: Integer;
begin
CopyCount := StrToInt(seCopies.Text);
if (Image1.Picture = nil) or (Image1.Picture.Graphic = nil) then Exit;
Bmp := TBitmap.Create;
try
Bmp.Assign(Image1.Picture.Graphic);
TmpFile := ExtractFilePath(ParamStr(0)) + 'temp_print.bmp';
Bmp.SaveToFile(TmpFile);
for i := 1 to CopyCount do
begin
//ShellExecute(Handle, 'print', PChar(TmpFile), nil, nil, SW_HIDE);
ShellExecute(Handle, 'open', 'mspaint.exe', PChar('/p "' + TmpFile + '"'), nil, SW_HIDE);
Sleep(3000); //プリンタ待ち延長
end;
Sleep(5000); //全印刷完了待ち
DeleteFile(TmpFile);
finally
Bmp.Free;
end;
end;
ですので、このプログラムを利用してマークシートを作成した場合、すべてのプリンターで印刷できるわけではないことを申し添えます。
追記(20260330)
以前、PDF 関連のプログラムを書いた際にその存在を知り、PC にインストールしておいた、ドイツの Geek Software GmbH が開発した PDF24 Creator に出力し、PDF24 Creator から上記の「印刷できなかったモバイルプリンター」への出力を試したところ、無事、印刷できました。もちろん、余白等の問題も発生しませんでした。 PDF24 は、“完全無料で広告のみで運営されている” PDF ツール群で、オンライン版(PDF24 Tools)とオフライン版(PDF24 Creator)があります。利用したのは(名前からおわかりかと思いますが)、オフライン版(PDF24 Creator)です。
【正答シート・読み取りテスト用シートの印刷】
正答シート・読み取りテスト用シートの印刷を実行すると、次のメッセージが表示されます。
「はい」を選択:正答シートを1枚印刷 「いいえ」を選択:読み取りテスト用シートを指定枚数分印刷 「キャンセル」:処理を終了
正答シート・読み取りテスト用シートを印刷するためには、次のデータをCSV形式で指定 Path に準備する必要があります(開発中のマークシートリーダーでも、このデータを使用します)。
指定 Path:exe があるフォルダ\ProcData\採点用マークシート画像を保存したフォルダ
指定ファイル名:MS_ScoringData.csv
1行目の第1列から設問数分、正答データを入力してください。 数学なら-(マイナス)記号、理科なら a, b、情報なら a, b, c, d, e, f の入力に対応しています。
「はい」を選ぶと作成される正答シートの例:
マークシートリーダーの読み取りテストに使用できます。
「いいえ」を選ぶと作成される読み取りテスト用マークシートの例:
空欄や誤答マーク(複数マーク)入りの読み取りテスト用マークシートを作成できます。 ※ 印刷実行前に印刷枚数を設定してください。
実際の操作は次の流れになります。
PrinterSetupDialog が表示されます。 設定を確認し、OK をクリックしてください。
数学・理科・情報の場合に確認メッセージが表示されます。
MS_ScoringData.csv のあるフォルダを指定してください。
(12)セクション名の追加と削除(の仕様)
設定の保存ボタンをクリックすると、現在表示されているマークシートの設定が exe と同じ場所に自動的に作成される INI ファイル内に「タイトル名をセクション名として」保存されます。次回、プログラムを起動する際、プログラムは自動的に INI ファイル内のセクション名を取得して、タイトルを表示する ComboBox の選択肢に設定します。
セクションの削除と、画面の表示は、『連動しない仕様』としてある点にご注意願います。
例えば、「情報Ⅰ」と「情報Ⅱ」の2種類のマークシート設定があり、「情報Ⅱ」を表示している状態で「情報Ⅱ」のセクションを INI ファイルから削除したとします。
マークシート設定の削除は、このアイコンをクリックして実行します。
削除したいタイトル(セクション名)を表示されたリストから選んで右クリックし、 さらに表示されるサブメニューの削除をクリックしてください。
確認メッセージが表示されます。
「はい」をクリックすると、セクションが削除されます。
INI ファイル内のマークシート設定(セクションとして管理)はこの操作で削除されますが、例え、現在表示されているマークシート設定(のセクション情報)を削除したとしても、画面の描画内容には影響を与えません。単に、次回から(その設定を)呼び出せなくなるだけです。
この例では、「情報Ⅱ」のマークシート画面を表示しながら、「情報Ⅱ」のマークシート設定を削除しましたが、「情報Ⅱ」のマークシート画面は表示されたままになっています。このままプログラムを終了してもマークシート設定の保存の可否を確認するメッセージ等は表示されません。
このように、現在の描画内容はセクション名とは無関係に、独立した存在として扱う仕様となっていることにご留意いただけますよう、お願い申し上げます。
2.sk4d.dllについて
このプログラムは PDF の作成に Googleが中心となって開発している、オープンソースの強力な2D描画ライブラリ Skia (スキア)を使用しています。ですので正常に動作させるには、exe と同じ場所に Skia の描画エンジン本体(sk4d.dll)が必須です(ダウンロード Zip に同梱されています)。
このプログラムの正常な動作に必要なファイルの一覧です。
sk4d.dll のライセンスはMIT Licenseです。ですので、アプリ(商用を含む)への組み込み・再配布・改変まで自由にできますが、著作権表示とライセンス文の同梱が必要です。
※ MarksheetMaker は非商用・有償販売禁止という利用条件でダウンロードとその使用を可としておりますので、ご注意ください。
3.ダウンロード
今回の記事でご紹介した MarksheetMaker プログラム一式を以下からダウンロードできます。なお、ダウンロードとご使用にあたっては、免責事項及び使用条件への同意が必要です。免責事項及び使用条件の詳細は付属の License.txt をご覧ください。本ソフトウェアは PDF ファイルの出力に Skia を使用しています。Skia のライセンスは MIT ライセンスです。このライセンスの詳細につきましては同梱した Skia4Delphi_and_Skia_LICENSE.txtをご覧ください。
また、動作には sk4d.dll が必要です。MarksheetMaker.exe と同じフォルダ内に sk4d.dll を置いてプログラムを実行してください。
4.まとめ
今回の記事でご紹介した MarksheetMaker は、当 Blog の過去記事で紹介したマークシートリーダー及び現在開発中の超高速・軽量マークシートリーダー( MS_Reader V3 )で利用可能なマークシートを作成・印刷するプログラムです。
5.お願いとお断り
このサイトの内容を利用される場合は、自己責任でお願いします。記載した内容(プログラムを含む)を利用した結果、利用者および第三者に損害が発生したとしても、このサイトの管理者は一切責任を負えません。予め、ご了承ください。