Access (VBA)

Access VBAに関するフォーラムです。
  • 掲示板への投稿には会員登録(無料)が必要です。会員登録がまだの方はこちら
  • 掲示板ご利用上のお願い」に反するご記入はご遠慮ください。
  • Q&A掲示板の使い方はこちらをご覧ください
トピックに返信
質問

 
(Windows 10 Home : Access 2016)
イメージファイルの削除
投稿日時: 20/06/12 13:26:04
投稿者: kaito

こんにちは
フォーム上にイメージを配置しております
このイメージは他のフォーム上の条件により随時変わります。
フォームを立ち上げるたびに表示したイメージがイメージギャラリーに保存されているようでファイルサイズがどんどんと大きくなってしまいます
 
そこでフォームを閉じる時などにイメージギャラリーに保存されているイメージファイルを削除したいと思いますが、どのように行えば可能でしょうか?
 
ご教授をお願い致します。

回答
投稿日時: 20/06/12 15:50:12
投稿者: sk

引用:
フォーム上にイメージを配置しております
このイメージは他のフォーム上の条件により随時変わります

その部分の処理は、具体的にどのようなコードによって
実現されているのでしょうか。
 
引用:
フォームを立ち上げるたびに表示したイメージがイメージギャラリーに
保存されているようでファイルサイズがどんどんと大きくなってしまいます

フォームのデザインビューにおいて、そのイメージを
任意のセクションに挿入しようとした際に、
[デザイン] -> [コントロール] -> [イメージ]を選んだか、
[デザイン] -> [コントロール] -> [イメージの挿入]を選んだかによって、
挿入されるイメージのピクチャタイプは異なってきます。
 
後者の場合、「埋め込み」でもなく「リンク」でもなく「共有」となり、
データベース内の共有リソース(テーマや画像)として保存されることになります。
(そしてそのイメージの画像を変更するごとに、共有画像が増えていく)
 
とりあえず、そのイメージの[ピクチャタイプ]プロパティの値を
「埋め込み」に変更した上、イメージギャラリー上に保存されている
共有画像を 1 個ずつ削除された方がよいでしょう。

投稿日時: 20/06/12 16:27:02
投稿者: kaito

ありがとうございます
 
>その部分の処理は、具体的にどのようなコードによって
実現されているのでしょうか。
 
フォーム上に画像ファイルへのパスを表示させそのパスを.Pictureの値に代入して表示させています
 
[デザイン] -> [コントロール] -> [イメージの挿入]を選んで挿入しています
 
[デザイン] -> [コントロール] -> [イメージ]の方がよろしいのでしょうか?

回答
投稿日時: 20/06/12 16:58:17
投稿者: sk

引用:
フォーム上に画像ファイルへのパスを表示させ
そのパスを.Pictureの値に代入して表示させています

引用:
[デザイン] -> [コントロール] -> [イメージの挿入]を選んで挿入しています

その場合は、Picture プロパティの値が変更されるごとに
共有リソースに新規画像が追加されていくことになります。
 
引用:
[デザイン] -> [コントロール] -> [イメージ]の方がよろしいのでしょうか?

そのイメージがどういった類の画像であるかや、画像の使用目的などによります。
 
また、ピクチャタイプが「共有」であるイメージが参照している
共有画像を削除されてしまった場合、そのイメージには
何の画像も表示されなくなります。
 
したがって、まずはそれぞれのイメージコントロールや共有画像の用途を
見極めた上で、ピクチャタイプの変更、及び不要な共有画像の削除などを
行なうようにして下さい。
(本当に必要な共有画像なら、それはむしろ残すべきです)
 
なお、イメージギャラリーに保存済みの共有画像を
イメージコントロール上に表示させたい場合は、
ファイルパスではなく「共有画像の名前」を
Picture プロパティに設定なさればよいでしょう。
(その場合、新たな共有画像が増えることはない)
 
例えば、トランプのカードの「表」に当たる画像と「裏」に当たる画像が
イメージギャラリーに保存されていて、コマンドボタンをクリックするごとに
フォーム上のイメージを「表」と「裏」に切り替えたい場合は、
以下のようなコードを記述することになります。
 
(フォームモジュール)
------------------------------------------------------------------
Private Sub カードを裏返すコマンド_Click()
     
    With Me.カード
        If .Picture = "表" Then
            .Picture = "裏"
        Else
            .Picture = "表"
        End If
    End With
 
End Sub
------------------------------------------------------------------

トピックに返信