Lock/unlock form button

R

Rlong

I've successfully created a button that locks/unlocks all the fields in a
form. In addition, it keeps all fields unlocked during initial record
creation, but requires the user to use the button whenever any fields in the
form are edited. This was accomplished by following the instructions and code
(see pasted at bottom of this post) at the following web address under
"Double-Action Command Button" posted on 3/28/08:

http://www.msaccesstips.com/labels/msaccess forms.shtml

This does almost exactly what I want, but I'd like to have one of the fields
on the form (a combo box field that looks up and returns a given record in
the rest of the form) not lock each time. That is, I'd like it to remain
unlocked and available for repeat use without having to click the lock/unlock
button each time. Is this possible?

Thanks


The code portion of the application is as follows:

Private Sub Form_Current()
If Me.NewRecord Then
With Me
.cmdEdit.Caption = "Edit"
.cmdEdit.ForeColor = 0
.cmdEdit.FontBold = False
.AllowEdits = True
.cmdEdit.Enabled = False
End With
Else
With Me
.AllowEdits = False
.cmdEdit.Caption = "Edit"
.cmdEdit.ForeColor = 0
.cmdEdit.FontBold = False
.cmdEdit.Enabled = True
End With
End If

End Sub


AND


Private Sub cmdEdit_Click()
Dim cap As String
cap = Me.cmdEdit.Caption
Select Case cap
Case "Edit"
With Me
.AllowEdits = True
.cmdEdit.Caption = "Lock"
.cmdEdit.ForeColor = 128
.cmdEdit.FontBold = True
.Refresh
End With
Case "Lock"
With Me
.AllowEdits = False
.cmdEdit.Caption = "Edit"
.cmdEdit.ForeColor = 0
.cmdEdit.FontBold = False
.Refresh
End With
End Select
End Sub
 
A

Allen Browne

Take a look at this article:
Locking bound controls on a form and subforms
at:
http://allenbrowne.com/ser-56.html

You copy the code from the webpage into a standard module, and set your
form's On Load property to:
=LockBoundControls([Form],True)
You can optionally add the name of any controls that should not be locked
inside the brackets as well, in quotes and separated by commas. So, if you
want Combo1 to remain unlocked at all times, use:
=LockBoundControls([Form],True, "Combo1")

The code automatically locks any subforms you have on your form (nested to
any depth.)
 
R

Rlong via AccessMonster.com

Thanks, Allen! This code works as well, and it's helpful to be able to unlock
individual controls. I do, however, like the way the other code "relocks" the
form after editing any single field, so you don't accidently leave the form
unlocked. I'm wondering if there's a way, using the original code that I
posted, to include a line or two that would leave individual controls
unlocked? Any ideas? I'm a fairly low-level code writer, so I'll need to rely
on others for this one.

Thanks again.



Allen said:
Take a look at this article:
Locking bound controls on a form and subforms
at:
http://allenbrowne.com/ser-56.html

You copy the code from the webpage into a standard module, and set your
form's On Load property to:
=LockBoundControls([Form],True)
You can optionally add the name of any controls that should not be locked
inside the brackets as well, in quotes and separated by commas. So, if you
want Combo1 to remain unlocked at all times, use:
=LockBoundControls([Form],True, "Combo1")

The code automatically locks any subforms you have on your form (nested to
any depth.)
I've successfully created a button that locks/unlocks all the fields in a
form. In addition, it keeps all fields unlocked during initial record
[quoted text clipped - 64 lines]
End Select
End Sub
 
A

Allen Browne

There are multiple problems with the original code's working/reliability, so
I'm not sure I can sort it out for you.

Examples:
- You have to hard-code the names of the controls in the code.

- Setting AllowEdits has other side effects (e.g. entire form disappears if
there are no records, and its effect on subforms.)

--
Allen Browne - Microsoft MVP. Perth, Western Australia

Reply to group, rather than allenbrowne at mvps dot org.


Rlong via AccessMonster.com said:
Thanks, Allen! This code works as well, and it's helpful to be able to
unlock
individual controls. I do, however, like the way the other code "relocks"
the
form after editing any single field, so you don't accidently leave the
form
unlocked. I'm wondering if there's a way, using the original code that I
posted, to include a line or two that would leave individual controls
unlocked? Any ideas? I'm a fairly low-level code writer, so I'll need to
rely
on others for this one.

Thanks again.



Allen said:
Take a look at this article:
Locking bound controls on a form and subforms
at:
http://allenbrowne.com/ser-56.html

You copy the code from the webpage into a standard module, and set your
form's On Load property to:
=LockBoundControls([Form],True)
You can optionally add the name of any controls that should not be locked
inside the brackets as well, in quotes and separated by commas. So, if you
want Combo1 to remain unlocked at all times, use:
=LockBoundControls([Form],True, "Combo1")

The code automatically locks any subforms you have on your form (nested to
any depth.)
I've successfully created a button that locks/unlocks all the fields in
a
form. In addition, it keeps all fields unlocked during initial record
[quoted text clipped - 64 lines]
End Select
End Sub
 
R

Rlong via AccessMonster.com

Thanks for thinking about it. Even with my limited coding experience I
thought that this code looked a little simplistic and un-elegant. Maybe I'll
work with the other set of code instead and try to build in some of the
safeguards I'm looking for.




Allen said:
There are multiple problems with the original code's working/reliability, so
I'm not sure I can sort it out for you.

Examples:
- You have to hard-code the names of the controls in the code.

- Setting AllowEdits has other side effects (e.g. entire form disappears if
there are no records, and its effect on subforms.)
Thanks, Allen! This code works as well, and it's helpful to be able to
unlock
[quoted text clipped - 32 lines]
 

Ask a Question

Want to reply to this thread or ask your own question?

You'll need to choose a username for the site, which only take a couple of moments. After that, you can post your question and our members will help you out.

Ask a Question

Top