【保存版】2013年度発売全パチスロアプリ一覧(iPhone,iPad)

【Access】夏にぴったり透け透け半透明フォーム(API使用)。

すみません。よくわからないタイトルで。(笑)

あまり使わないかもしれませんが、半透明のフォームの作り方を
ご紹介します。

私はレポートをプレビューした際に、レポート上にポップアップさせている
印刷指示フォームを一時的に透明にする際に使っています。

通常表示
透明フォーム1

透明表示
透明フォーム2

フォームが透けてレポートの文字が読めます。

さて、実現方法ですが、
Accessにはフォームの透明度を変えるプロパティーはありません。
そこで、APIを呼び出して半透明を実現します。

以下のサイトを参考にさせていただきました。
フォームを透明に・・・

EXCEL VBAでの話題ですが、ACCESS VBAでも問題なく使えます。
フォームの宣言部に以下のコードを追加します。

' クラス名,ウィンドウ名をキーにウィンドウを検索し、そのウィンドウハンドルを取得する
Private Declare Function FindWindow Lib "user32.dll" Alias "FindWindowA" _
(ByVal lpClassName As String, ByVal lpWindowName As String) As Long

Private Declare Function SetWindowLong Lib "user32.dll" Alias "SetWindowLongA" _
(ByVal hWnd As Long, ByVal nIndex As Long, ByVal dwNewLong As Long) As Long
Private Declare Function GetWindowLong Lib "user32.dll" Alias "GetWindowLongA" _
(ByVal hWnd As Long, ByVal nIndex As Long) As Long
Private Const GWL_EXSTYLE = (-20)

Private Declare Function SetLayeredWindowAttributes Lib "user32.dll" _
(ByVal hWnd As Long, ByVal crKey As Long, ByVal bAlpha As Long, ByVal dwFlags As Long) As Long
Private Const LWA_COLORKEY = 1
Private Const LWA_ALPHA = 2
Private Const WS_EX_LAYERED = &H80000

Dim blnTransparentFlg As Boolean '半透明制御用フラグ


次に不透明・半透明切り替えメイン処理。
フォームに以下のプロシージャーを記述します。
Private Sub FormTransparency(ByRef blnTransparentFlg As Boolean)
'フォームの透明度を設定します。
Dim hWnd As Long
Dim lngALFH As Long

'透明度の設定
If blnTransparentFlg = True Then
'半透明
lngALFH = 30
Else
'不透明
lngALFH = 255
End If

' UserFormのウィンドウハンドルを取得する
hWnd = FindWindow(vbNullString, Me.Caption)

'拡張ウィンドウスタイルにWS_EX_LAYEREDを追加する
Call SetWindowLong(hWnd, GWL_EXSTYLE, GetWindowLong(hWnd, GWL_EXSTYLE) Or WS_EX_LAYERED)

'透明度の設定を反映する
Call SetLayeredWindowAttributes(hWnd, 0, lngALFH, LWA_ALPHA)

'現在の設定値の反対設定を保存
blnTransparentFlg = IIf(blnTransparentFlg = True, False, True)
End Sub


あとは、ボタンイベント等から以下のように呼び出すだけ。
(bt透明度切替という名前のコマンドボタンのクリックイベントからの呼出例)

Private Sub bt透明度切替_Click()
'フォーム透明度設定
Call FormTransparency(blnTransparentFlg)
End Sub

透明度切替ボタンを押すたびに通常、透明が切り替わります。
[Google PR]

Twitterはじめました。プラプラ | Twitter

<< 【Access】スナップショットビューアーにセキュリティーホールが存在!
【コンピュータ】linkstation mini 自動起動、シャットダウン方法。 >>

[関連エントリ 最新5]

[Google PR]


[最新エントリ 5]

>>トップページ
人気カテゴリ:AccessTips SQLServer CakePHP iPad
過去ログ(全記事一覧)

コメント
コメントする(お気軽にどうぞ)









この記事のトラックバックURL
トラックバック
カテゴリー
プロフィール
お問い合わせ
Powered by NINJA TOOLS
links
recent comment
  • 【Access】vbaでhmacが正しく計算できた!!
    まさ (06/01)
  • 【Access】AccessReportMailメール送信時のポートを25から587へ
    わら (05/31)
  • 【SQLServer】超シンプル!再帰CTE(共通テーブル式)で連続データを作成する。
    sazi (09/08)
  • 【あまっちゃお】Amazon商品検索「あまっちゃお」プロジェクト始動。Ver00-06-00 β
    カメちゃん (07/31)
  • 【Access】あれ?DoCmd.RunCommand acCmdSaveRecordの内部仕様が変わった?
    花姉 (03/17)
  • 【Access】実行中のmdb(自分自身)をバックアップコピーする方法。
    亀 (02/06)
  • 【雑記】Amazonでの注文時、TMGさん発送にご注意を。納期を守れない可能性あり!
    管理人 (01/31)
  • 【雑記】Amazonでの注文時、TMGさん発送にご注意を。納期を守れない可能性あり!
    あ (01/31)
  • 【雑記】Amazonでの注文時、TMGさん発送にご注意を。納期を守れない可能性あり!
    K (11/13)
  • 【VAIOP】VaioXと両持ちできるものすっっごくマニアックなケース。当たり前ですが在庫限り。(笑)
    管理人 (08/04)
recent trackback
  • 【Access】2003安全でない式がブロックされていませんとセキュリティーレベル。
    awgs Foundry (10/29)
  • 【VAIOtypeP】液晶保護シートは、新車のカバーではない。レイアウト社液晶/天板保護フィルムセットRT-VP1FS1
    XMLがキライ。 (04/09)
  • Vistaから、LinkStation(NAS)にアクセスできません。
    そのほかいろいろ (09/06)