|
▼たくゾ〜 さん:
こんにちは。
>移動したラベルを 固定したいのですが良い方法はございますでしょうか。
適当な標準モジュールに
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変数に値を保持させるコードは余り良いとは言えないかと思われます。
やはり基本通りテーブルに値を入れる様なコードにするか、
常に開いているフォームに不可視のテキストボックスを作って
そこに値を入れておく方が安定するかと思われます。
|
|