所見入力システムの前身では、mdbからWindowsのアクセサリのペイントを呼び出してシェーマとか書いてたんですよね。
でもこれ、Accessのランタイムでは動かないという…。
それさえなければランタイムでも問題なかっただけに、残念なことでした…。
ちなみに、イメージをダブルクリックしてペイントを呼び出すVBAのコードはこちら。
イメージが2つある環境でのコードになります。
なお、Cドライブのルートにblank.bmpという、イメージと同サイズの白紙のbmpを置く仕様です。
最初に「検査ID+_番号.bmp」という名前でBMPファイルを作成し、それをペイントで編集してます。
image_IPは保存先のマシンのIPです。
こちらはimage1をダブルクリックした時の関数。
Private Sub image1_DblClick(Cancel As Integer)
Dim img_src As String
img_src = CStr(Me.exam_ID) & "_1.bmp"
If Me.exam_status < 3 Then
If Me.image1.Picture = "c:\blank.bmp" Then
FileCopy "c:\blank.bmp", image_IP & "\image\" & img_src
Shell "mspaint.exe " & image_IP & "\image\" & img_src, vbNormalFocus
Else
Shell "mspaint.exe " & image_IP & "\image\" & img_src, vbNormalFocus
End If
End If
End Sub
保存した画像をイメージに反映するコードはこちら。
Private Function set_picture()
'書いた(書かれている)シェーマをフォームに反映させる関数。
Dim img_src As String
Dim img_no As Integer
img_no = 1
Do While img_no < 3
img_src = CStr(Me.exam_ID) & "_" & CStr(img_no) & ".bmp"
If Dir(image_IP & "\image$\" & img_src) <> "" Then
Select Case img_no
Case 1
Me.image1.Picture = image_IP & "\image$\" & img_src
Case 2
Me.image2.Picture = image_IP & "\image$\" & img_src
End Select
Else
Select Case img_no
Case 1
Me.image1.Picture = "C:\blank.bmp"
Case 2
Me.image2.Picture = "C:\blank.bmp"
End Select
End If
img_no = img_no + 1
Loop
End Function