Access VBA質問箱 IV

当質問箱は、有志のボランティア精神のおかげで成り立っています。
問題が解決したら、必ずお礼をしましょうね。
本サイトの基本方針をまとめました。こちら をご一読ください。

投稿種別の選択が必要です。ご注意ください。
迷惑投稿防止のため、URLの入力を制限しています。ご了承ください。


3502 / 9994 ←次へ | 前へ→

【9752】Re:新規作成フォームにOnMouseDownプロシジャを発生させる
回答  小僧  - 07/8/13(月) 19:10 -

引用なし
パスワード
   ▼たくゾ〜 さん:
こんにちは。

>移動したラベルを 固定したいのですが良い方法はございますでしょうか。

適当な標準モジュールに

Public L1X As Long
Public L1Y As Long


と宣言しておき、

Sub Make_Form3()
Const F_Name = "test"
Dim Temp_Name As String
Dim ctl_Label As Access.Label
Dim i As Long


  With CreateForm()
    Temp_Name = .Name
    .HasModule = True
    .Caption = F_Name
    .Width = 11907       '[twip]
    .Section(acDetail).Height = 8505
    .Section(acDetail).OnMouseDown = "[Event Procedure]"
    .Form.OnLoad = "[Event Procedure]"
    .Form.OnUnload = "[Event Procedure]"
  End With
  
  
  For i = 0 To 1
    Set ctl_Label = CreateControl(Temp_Name, acLabel, acDetail, , , 100 + 200 * i, 100, 100, 100)
    ctl_Label.Name = "L" & Format(i, "000")
  
    With ctl_Label
      .SpecialEffect = 1
      .BackStyle = 1
    End With
  Next
  
  With VBE.ActiveVBProject.VBComponents.Item("Form_" & Temp_Name).CodeModule
    .InsertLines 4, "Private Sub Form_Load()"
    .InsertLines 5, "Me.L001.Left = L1X"
    .InsertLines 6, "Me.L001.Top = L1Y"
    .InsertLines 7, "End Sub"
    .InsertLines 8, ""
    .InsertLines 9, "Private Sub Form_Unload(Cancel As Integer)"
    .InsertLines 10, "L1X = Me.L001.Left"
    .InsertLines 11, "L1Y = Me.L001.Top"
    .InsertLines 12, "End Sub"
    .InsertLines 13, ""
    .InsertLines 14, "Private Sub 詳細_MouseDown(Button As Integer, Shift As Integer, X As Single, Y As Single)"
    .InsertLines 15, "Me.L001.Left = X"
    .InsertLines 16, "Me.L001.Top = Y"
    .InsertLines 17, "End Sub"
  End With
  
  DoCmd.Save acForm, Temp_Name
  DoCmd.Close acForm, Temp_Name
  DoCmd.Rename F_Name, acForm, Temp_Name
  DoCmd.OpenForm F_Name, acNormal
  DoCmd.Restore
  
End Sub


の様なコードを書くと、MDBを閉じるまでは座標を保持できるかと思われますが、

h tp://www.vbalab.net/vbaqa/c-board.cgi?cmd=one;no=9652;id=access
(直リンク禁止ですので補完して下さい)

の上部で紹介している通り、
Public変数に値を保持させるコードは余り良いとは言えないかと思われます。

やはり基本通りテーブルに値を入れる様なコードにするか、
常に開いているフォームに不可視のテキストボックスを作って
そこに値を入れておく方が安定するかと思われます。
1,071 hits

【9742】フォームを新規作成し、フォーム詳細のOnMouseDownにイベントプロシージャを... たくゾ〜 07/8/8(水) 22:53 質問[未読]
【9743】新規作成フォームにOnMouseDownプロシジャを... 小僧 07/8/9(木) 10:49 回答[未読]
【9746】Re:新規作成フォームにOnMouseDownプロシジ... たくゾ〜 07/8/9(木) 23:49 お礼[未読]
【9749】Re:新規作成フォームにOnMouseDownプロシジ... たくゾ〜 07/8/13(月) 12:00 質問[未読]
【9752】Re:新規作成フォームにOnMouseDownプロシジ... 小僧 07/8/13(月) 19:10 回答[未読]
【9753】Re:新規作成フォームにOnMouseDownプロシジ... たくゾ〜 07/8/13(月) 21:58 お礼[未読]

3502 / 9994 ←次へ | 前へ→
ページ:  ┃  記事番号:
1078201
(SS)C-BOARD v3.8 is Free