(祝)東京オリンピック!

(祝)北京オリンピック!

サンプル集1



   

COPY

  1. Option Compare Database
  2. Option Explicit
  3.  
  4. '------------------------------------------------------------
  5. Private TP As Long
  6. Private X As Long
  7. Private Y As Long
  8. Private cx As Long
  9. Private cy As Long
  10. Private memReportName As String
  11. '------------------------------------------------------------
  12. '
  13. Public Property Let ReportName(ByVal NewName As String)
  14. Dim Ret As Variant
  15. Dim Rpt As Report
  16. Dim OldName As String
  17. On Error Resume Next
  18.  
  19. OldName = memReportName
  20. If OldName <> NewName Then
  21. '表示しているレポートを閉じる
  22. Then Rpt In Reports
  23. If Rpt.Name = OldName Then
  24. DoCmd.Close acReport, OldName
  25. Exit For
  26. End If
  27. Next Rpt
  28.  
  29. '新しいレポートを開く
  30. DoCmd.OpenReport NewName, acViewPreview
  31. memReportName = NewName
  32. Ret = MoveWindow(Reports(memReportName).hwnd, X / TP, Y / TP, cx / TP, cy / TP, 1)
  33.  
  34. '新しいレポートの子ウィンドウを親ウィンドウのフォームに設定
  35. SetParent Reports(memReportName).hwnd, Me.hwnd
  36. End If
  37.  
  38. End Property
  39.  
  40. '------------------------------------------------------------
  41. Public Property Get ReportName() As String
  42.  
  43. ReportName = memReportName
  44.  
  45. End Property
  46.  
  47. '------------------------------------------------------------
  48. Private Sub Form_Load()
  49. Dim Ret As Variant
  50. On Error Resume Next
  51.  
  52. Me.btnDummy.SetFocus
  53.  
  54. TP = TwipPixel
  55. 'フォームに表示するレポートの位置とサイズを調整します
  56. X = 0
  57. Y = Me.フォームヘッダー.Height 'Y = Me.コマンド0.Heightでもよい
  58. cx = Me.InsideWidth
  59. cy = Me.InsideHeight - Me.フォームヘッダー.Height
  60.  
  61. 'Win32API関数を使ってアクセスを最小化します
  62. CloseWindow Application.hWndAccessApp
  63.  
  64. 'フォームの OpenArgs プロパティを使用します
  65. If Len(memReportName) = 0 Then
  66. Exit Sub
  67. Else
  68. memReportName = Me.OpenArgs
  69. End If
  70.  
  71. 'レポートをプレビューします
  72. DoCmd.OpenReport ReportName, acViewPreview
  73.  
  74. Ret = MoveWindow(Reports(ReportName).hwnd, X / TP, Y / TP, cx / TP, cy / TP, 1)
  75.  
  76. 'レポートの子ウィンドウを親ウィンドウのフォームに設定
  77. SetParent Reports(ReportName).hwnd, Me.hwnd
  78.  
  79. End Sub
  80.  
  81. '------------------------------------------------------------
  82. Private Sub Form_Resize()
  83. Dim Ret As Variant
  84. On Error Resume Next
  85.  
  86. 'フォームに表示するレポートの位置とサイズを調整します
  87. X = 0
  88. Y = Me.フォームヘッダー.Height 'Y = Me.コマンド0.Heightでもよい
  89. cx = Me.InsideWidth
  90. cy = Me.InsideHeight - Me.フォームヘッダー.Height
  91.  
  92. Ret = MoveWindow(Reports(ReportName).hwnd, X / TP, Y / TP, cx / TP, cy / TP, 1)
  93.  
  94. End Sub
  95.  
  96. '------------------------------------------------------------
  97. Private Sub コマンド0_Click()
  98.  
  99. Me.btnDummy.SetFocus
  100.  
  101. DoCmd.SelectObject acReport, ReportName, False
  102. DoCmd.RunCommand acCmdPrint
  103.  
  104. End Sub
  105.  
  106. '------------------------------------------------------------
  107. Private Sub コマンド1_Click()
  108.  
  109. Me.btnDummy.SetFocus
  110.  
  111. DoCmd.Close acReport, ReportName
  112. DoCmd.Close acForm, Me.Name
  113.  
  114. End Sub
  115.  
  116. '------------------------------------------------------------
  117. Private Sub コマンド2_Click()
  118.  
  119. Me.btnDummy.SetFocus
  120.  
  121. ComForeColor "コマンド2"
  122.  
  123. If コマンド2.ForeColor = vbRed Then
  124. ChangeReport コマンド2.Caption
  125. End If
  126.  
  127. End Sub
  128.  
  129. '------------------------------------------------------------
  130. Private Sub コマンド3_Click()
  131.  
  132. Me.btnDummy.SetFocus
  133.  
  134. ComForeColor "コマンド3"
  135.  
  136. If コマンド3.ForeColor = vbRed Then
  137. ChangeReport コマンド3.Caption
  138. End If
  139.  
  140. End Sub
  141.  
  142. '------------------------------------------------------------
  143. Private Sub ComForeColor(ByVal strName As String)
  144. Dim Ctrl As Control
  145.  
  146. Then Ctrl In Me.Controls
  147. If Ctrl.Name = strName Then
  148. Ctrl.ForeColor = vbRed
  149. Else
  150. If Ctrl.ForeColor <> Me.コマンド0.ForeColor Then
  151. Ctrl.ForeColor = Me.コマンド0.ForeColor
  152. End If
  153. End If
  154. Next Ctrl
  155.  
  156. End Sub
  157.  
  158. '-------------------------------------------------------------------
  159. Private Sub ChangeReport(ByVal strCap As String)
  160. Dim BUF As String
  161.  
  162. Select Case strCap
  163. Case "帳票"
  164. BUF = "レポート1"
  165. Case "タックシール"
  166. BUF = "レポート2"
  167. End Select
  168. ReportName = BUF
  169. End Sub



   

COPY

  1. Option Compare Database
  2. Option Explicit
  3.  
  4. 'パラメータ
  5. 'hWnd ウィンドウへのハンドル、および間接的に、ウィンドウが属するクラス
  6. 'nIndex 取得する値へのゼロベースのオフセット
  7. Public Const GWL_EXSTYLE = -20 '拡張ウィンドウスタイルを取得します
  8. Public Const GWL_STYLE = -16 'ウィンドウスタイルを取得します
  9. Public Const GWL_HWNDPARENT = -8 '親ウィンドウあれば、そのハンドルを取得します
  10. Public Declare PtrSafe Function GetWindowLong Lib "user32" Alias "GetWindowLongA" ( _
  11. ByVal hWnd As Long, _
  12. ByVal nIndex As Long) As Long
  13.  
  14. 'パラメータ
  15. 'hWnd ウィンドウへのハンドル、および間接的に、ウィンドウが属するクラス
  16. 'nIndex 取得する値へのゼロベースのオフセット
  17. 'dwNewLong 置換値
  18. 'GetWindowLongAで得られた値(Val) に対して、最小化ボタンを無効にする場合[dwNewLong = Val And Not WS_MINIMIZEBOX]とする
  19. Public Const WS_OVERLAPPED = &H0 'オーバーラップウィンドウ
  20. Public Const WS_MAXIMIZEBOX = &H10000 '最大化ボタン
  21. Public Const WS_MINIMIZEBOX = &H20000 '最小化ボタン
  22. Public Const WS_SIZEBOX = &H40000 'サイズ変更境界
  23. Public Const WS_THICKFRAME = &H40000 'サイズ変更境界
  24. Public Const WS_SYSMENU = &H80000 'ウィンドウメニュー WS_CAPTIONスタイルも指定する必要があります
  25. Public Const WS_CAPTION = &HC00000 'タイトルバー
  26. Public Const WS_HSCROLL = &H100000 '水平スクロールバー
  27. Public Const WS_VSCROLL = &H200000 '垂直スクロールバー
  28. Public Const WS_BORDER = &H800000 '境界線
  29. Public Declare PtrSafe Function SetWindowLong Lib "user32" Alias "SetWindowLongA" ( _
  30. ByVal hWnd As Long, _
  31. ByVal nIndex As Long, _
  32. ByVal dwNewLong As Long) As Long



   

COPY

  1. '----------------------------------------------------------------------
  2. 'パラメータ
  3. 'hWndChild  子ウィンドウへのハンドル
  4. 'hWndNewParent 新しい親ウィンドウへのハンドル
  5. Public Declare PtrSafe Function SetParent Lib "user32" ( _
  6. ByVal hWndChild As Long, _
  7. ByVal hWndNewParent As Long) As Long
  8.  
  9. '----------------------------------------------------------------------
  10. 'パラメータ
  11. 'hwnd ウィンドウへのハンドル
  12. 'X ウィンドウの左側の新しい位置 (ピクセル単位)
  13. 'Y ウィンドウの上部の新しい位置 (ピクセル単位)
  14. 'nWidth ウィンドウの新しい幅 (ピクセル単位)
  15. 'nHeight ウィンドウの新しい高さ (ピクセル単位)
  16. 'bRepaintウィンドウを再描画するかどうかを示します(1:再描画 0:再描画しない)
  17. Public Declare PtrSafe Function MoveWindow Lib "user32" (ByVal hwnd As Long, _
  18. ByVal X As Long, _
  19. ByVal Y As Long, _
  20. ByVal nWidth As Long, _
  21. ByVal nHeight As Long, _
  22. ByVal bRepaint As Long) As Long
  23. '----------------------------------------------------------------------
  24. 'パラメータ
  25. 'hWnd ウィンドウへのハンドル
  26. 'hWndInsertAfter Zオーダーで配置されたウィンドウの前にあるウィンドウのハンドル このパラメーターは、ウィンドウハンドルまたは次の値のいずれかでなければなりません
  27. Public Const HWND_TOP = &H0 'ウィンドウをZオーダーの一番上に配置します
  28. Public Const HWND_TOPMOST = -1 'ウィンドウを最上位以外のすべてのウィンドウの上に配置します
  29. 'X クライアント座標での、ウィンドウの左側の新しい位置 (ピクセル単位)
  30. 'Y クライアント座標でのウィンドウ上部の新しい位置 (ピクセル単位)
  31. 'cx ウィンドウの新しい幅 (ピクセル単位)
  32. 'cy ウィンドウの新しい高さ (ピクセル単位)
  33. 'uFlags ウィンドウのサイズ変更および配置フラグ このパラメーターは、以下の値の組み合わせにすることができます
  34. Public Const SWP_NOMOVE = &H2 '現在の位置を保持します( XおよびYパラメーターを無視します)
  35. Public Const SWP_NOSIZE = &H1 '現在のサイズを保持します( cxおよびcyパラメーターを無視します)
  36. Public Const SWP_SHOWWINDOW = &H40 'ウィンドウを表示します
  37. Public Declare PtrSafe Function SetWindowPos Lib "user32.dll" ( _
  38. ByVal hwnd As Long, _
  39. ByVal hWndInsetAfter As Long, _
  40. ByVal X As Long, _
  41. ByVal Y As Long, _
  42. ByVal cx As Long, _
  43. ByVal cy As Long, _
  44. ByVal uFlags As Long _
  45. ) As Long



   

COPY

  1. '----------------------------------------------------------------------
  2. Private Const HORZRES As Long = 8 '画面の幅 (ピクセル単位)
  3. Private Const VERTRES As Long = 10 '画面の高さ (ピクセル単位)
  4. Private Const BITSPIXEL As Long = 12 '各ピクセルの隣接するカラービットの数
  5. Private Const LOGPIXELSX As Long = 88 '画面の幅方向の論理インチあたりのピクセル数
  6. Private Const LOGPIXELSY As Long = 90 '画面の高方向の論理インチあたりのピクセル数
  7.  
  8. Private Declare PtrSafe Function GetDeviceCaps Lib "gdi32" (ByVal hDC As Long, ByVal nIndex As Long) As Long
  9.  
  10. Private Declare PtrSafe Function GetDC Lib "user32" (ByVal hwnd As Long) As Long
  11.  
  12. Private Declare PtrSafe Function GetDesktopWindow Lib "user32" () As Long
  13.  
  14. '----------------------------------------------------------------------
  15. Public Function TwipPixel() As Long
  16. Dim DskhWnd As Long
  17. Dim nhDc As Long
  18. Dim Bit As Long
  19. Dim nWidth As Long
  20. Dim nHeight As Long
  21.  
  22. 'デスクトップのハンドル
  23. DskhWnd = GetDesktopWindow
  24.  
  25. 'デスクトップのデバイスコンテキストハンドル
  26. nhDc = GetDC(DskhWnd)
  27.  
  28. '画面の横幅
  29. nWidth = GetDeviceCaps(nhDc, HORZRES)
  30.  
  31. '画面の縦幅
  32. nHeight = GetDeviceCaps(nhDc, VERTRES)
  33.  
  34. 'ピクセル当たりのビット数
  35. Bit = GetDeviceCaps(nhDc, BITSPIXEL)
  36.  
  37. '1インチ=1440Twips
  38. TwipPixel = CLng(1440 / GetDeviceCaps(nhDc, LOGPIXELSX))
  39.  
  40. End Function