• 締切済み

Access2010のフォーム作成画面にて

Access2010でのフォーム作成画面ですが、 添付画像のように選択オブジェクトの枠が 太くなってしまいましたが、これを2003のように1pxの枠にすることは可能でしょうか? オブジェクトの配置で「グリッドに合わせる」を使っておらず キーボードで1pxづつ移動させてレイアウトを調整しているため この太い枠が非常に邪魔(笑)で、何とかならないかと思っています。 所詮無理な話でしたらきっぱり諦めるのですが、 もし変更する方法をご存じの方がいれば是非教えて下さい。

みんなの回答

  • DexMachina
  • ベストアンサー率73% (1287/1744)
回答No.1

> 1pxの枠にすることは可能でしょうか? あるとすれば、  a)OSの『画面のプロパティ』の『デザイン』タブの『詳細設定』内の項目  b)Accessの「ツール(T)→オプション(O)」(Access2003以前)か、   『Officeボタン→Access のオプション(I)』(Access2007以降)の、   いずれかの項目  c)レジストリの、Access関連項目(たとえば以下)   HKEY_CURRENT_USER\Software\Microsoft\Office\(バージョン)\Access ではないかと思うのですが、残念ながらこれらの中には、該当するような ものは見当たりませんでした。 ですので、割り切ってしまうしかないのではないか、と思います。 (もっとも、その設定を行うことで初めてレジストリにキーが作成される  場合もあるので、「該当キーが見当たらない = 設定ができない」とは  断言できませんが・・・(汗)) ・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・ どうしても、この「オレンジ色の憎いやつ」(笑)を表示させずに、キーボードの カーソルキーで微調整をしたい、という場合は、いっそツールを作成する しかないかもしれません(汗) たとえば、以下のようなコントロールを持つポップアップタイプのフォームを 作成し、このフォームから微調整したいコントロールを選択して(→デザイン ビュー上で選択するわけではないので、枠線を非表示にできる)、 カーソルキーで微調整を行う、といった感じです。 ※下記プロパティは、デフォルトの値から変更が必要なもののうち、   必要最低限の項目に絞って紹介しています。 ・・・ラベルつきコントロールだと、ラベルと本体を個別に操作するか、 独自のクラスを定義するなどして、ラベルを従属させる形にプログラムを 組むことになる・・・など、実際に使えるものにするには、かなり手間が 掛かりそうですが(汗) ※対象フォームがデザインビューかそれ以外かの判定もしていません。   そのため、下記サンプルでは、ビューに関係なく、微調整ができて   しまいます(汗) 【フォーム】 ※名前は任意でOk。  <その他>タブ   『ポップアップ』 = はい   (『作業固定』は「いいえ」)  <イベント>タブ   『開くとき』イベント = 「[イベント プロシージャ]」   『キークリック時』イベント = 「[イベント プロシージャ]」   『キーボードイベント取得』 = 「はい」 【コントロール】 ・『フォーム』コンボボックス: 対象フォームを指定  <データ>タブ   『値集合タイプ』 = 「値リスト」  <イベント>タブ   『更新後処理』イベント = 「[イベント プロシージャ]」   『ダブルクリック時』イベント = 「[イベント プロシージャ]」 ・『コントロール』コンボボックス: 対象コントロールを指定  <データ>タブ   『値集合タイプ』 = 「値リスト」  <イベント>タブ   『更新後処理』イベント = 「[イベント プロシージャ]」   『ダブルクリック時』イベント = 「[イベント プロシージャ]」 ◆コード◆ Option Compare Database Option Explicit '対象フォーム・対象コントロールを保持するための変数 '(モジュールレベル(=つまり’ここ’)での宣言が必要) Private myFrm As Form, myCntl As Control Private Sub Form_KeyDown(KeyCode As Integer, Shift As Integer)   Dim nLeft As Long, nTop As Long, nAddL As Long, nAddT As Long      If Shift Then     'Ctrl/Shift/Altキーの同時押し時は対象外     Exit Sub   ElseIf myCntl Is Nothing Then     '対象コントロール未設定時も対象外     Exit Sub   Else     '対象コントロールの位置を取得     nLeft = myCntl.Left     nTop = myCntl.Top   End If   'カーソルキー毎に移動量を設定   '(それ以外のキーは対象外)   '※「±10」は適当に調節してください。   ' (pixel/twipの換算を正直にやると更に厄介になるので(汗))   Select Case KeyCode     Case vbKeyDown       nAddL = 0       nAddT = 10     Case vbKeyUp       nAddL = 0       nAddT = -10     Case vbKeyLeft       nAddL = -10       nAddT = 0     Case vbKeyRight       nAddL = 10       nAddT = 0     Case Else       Exit Sub   End Select   '上記で設定した値に基づいてコントロールを移動   Call myCntl.Move(nLeft + nAddL, nTop + nAddT)   'キー入力を取り消し   KeyCode = 0 End Sub Private Sub Form_Open(Cancel As Integer) On Error Resume Next   Dim Mem As Variant, sRS As String   '展開中の全フォームを、『フォーム』コンボボックスの   'リストに設定   sRS = "''"   For Each Mem In Forms     If Mem.Name <> Me.Name Then       sRS = sRS & ";" & Mem.Name     End If   Next   フォーム.RowSource = sRS   フォーム = Screen.ActiveForm.Name   Call フォーム_AfterUpdate End Sub Private Sub コントロール_AfterUpdate()   Dim Cntl As Control   '対象コントロールを設定/解除   If IsNull(コントロール) Then     Set myCntl = Nothing   Else     Set myCntl = myFrm.Controls(コントロール)   End If End Sub Private Sub コントロール_DblClick(Cancel As Integer)   Dim Mem As Variant, sRS As String   '対象フォームのコントロール群を、『コントロール』コンボ   'ボックスのリストに設定(フォーム未設定時は解除)   If myFrm Is Nothing Then     sRS = ""   Else     sRS = "''"     For Each Mem In myFrm.Controls       sRS = sRS & ";" & Mem.Name     Next   End If   Set myCntl = Nothing   コントロール.RowSource = sRS   コントロール = Null End Sub Private Sub フォーム_AfterUpdate()   Dim Mem As Variant, sRS As String   '対象フォームを設定/解除   If IsNull(フォーム) Then     Set myFrm = Nothing   Else     Set myFrm = Forms(フォーム)   End If   Call コントロール_DblClick(False) End Sub Private Sub フォーム_DblClick(Cancel As Integer)   '『フォーム』コンボボックスのリストを更新   '(フォームの『開くとき』イベントのコードを呼び出し)   Me.Visible = False   Call Form_Open(False)   Me.Visible = True End Sub

関連するQ&A