Kako programski zakljucati polja na formi, a onda otkljucati samo zeljeno ?
Kako programski zakljucati polja na formi
Zaključano
Zakačeno
Sub Form_Current()
If Me!EmployeeType = "Manager" Then
Me!SalaryDetails.Enabled = True
Me!PersonalInfo.Enabled = True
Me!PersonalInfo.Locked = False
Else
Me!SalaryDetails.Enabled = False
Me!PersonalInfo.Enabled = False
Me!PersonalInfo.Locked = True
End If
End Sub
Pogledati Help za Locked Property
If Me!EmployeeType = "Manager" Then
Me!SalaryDetails.Enabled = True
Me!PersonalInfo.Enabled = True
Me!PersonalInfo.Locked = False
Else
Me!SalaryDetails.Enabled = False
Me!PersonalInfo.Enabled = False
Me!PersonalInfo.Locked = True
End If
End Sub
Pogledati Help za Locked Property
Potpis
Kiro
Zelja je da imamo opste resenje koje ce zakljucati sva polja na bilo kojoj formi, procedura bi morala da ima formu kao parametar. Problem je sto neko polje na formi mozda nema locked property. Kako to ispitati i u zavisnosti od toga ga zakljucati ili ne ?
Pitanje,
Za zakljucavanje formi koristim -Locking bound controls- makro:
http://allenbrowne.com/ser-56.html
Problem je sto kada u nekom polju stavim event, npr:
Private Sub Vrednost2_GotFocus()
Me!Vrednost2 = [cboVrednost]
End Sub
On zaobilazi makro i unese vrednost i pored 'zakljucane' forme?
Za zakljucavanje formi koristim -Locking bound controls- makro:
http://allenbrowne.com/ser-56.html
Problem je sto kada u nekom polju stavim event, npr:
Private Sub Vrednost2_GotFocus()
Me!Vrednost2 = [cboVrednost]
End Sub
On zaobilazi makro i unese vrednost i pored 'zakljucane' forme?
Evo saljem ti mojku funkciju s kojoj sam farbao (neki dio koda i fali ali to za tebe nije bitno ) , a ona
a ona ti daje sve objekte sa forme pa u zavisnosti što ti treba tako si i funkciju prepraviš
naravno dobijaš i imena objekta pa tako možeš i ponaseobno kontrolirati taj objekt
imeobj = control.Name ---- ti daje samo ime objekta
pozivaš funkciju sa CALL obojaj(me.name)
Pozdrav
Static Function obojaj(zaf As String)
On Error GoTo gresi
Dim control As control
Dim trtfrm, imeobj As String
If IsNull(zaf) Or zaf = "" Then
Exit Function
End If
imef = zaf
For Each control In Forms(imef).Controls
If control.ControlType = acSubform Then
sqlupit2 = "select * from bojaforme where default= True and imeobjekta=" & acSubform
Set rek2 = dato2.OpenRecordset(sqlupit2)
trtfrm = control.Name
Forms(imef).Form(trtfrm).Form.DatasheetBackColor = rek2.Fields("bojapodloge").Value
Forms(imef).Form(trtfrm).Form.DatasheetGridlinesColor = rek2.Fields("bojagrida").Value
Forms(imef).Form(trtfrm).Form.DatasheetForeColor = rek2.Fields("bojaslova").Value
End If
If control.ControlType = acTextBox Then
sqlupit2 = "select * from bojaforme where default= True and imeobjekta=" & acTextBox
Set rek2 = dato2.OpenRecordset(sqlupit2)
imeobj = control.Name
Forms(imef).Controls(imeobj).BackColor = rek2.Fields("bojapodloge").Value
Forms(imef).Controls(imeobj).ForeColor = rek2.Fields("bojaslova").Value
Forms(imef).Controls(imeobj).BorderColor = rek2.Fields("bojagrida").Value
End If
If control.ControlType = acLabel Then '
sqlupit2 = "select * from bojaforme where default= True and imeobjekta=" & acLabel
Set rek2 = dato2.OpenRecordset(sqlupit2)
imeobj = control.Name
Forms(imef).Controls(imeobj).BackColor = rek2.Fields("bojapodloge").Value
Forms(imef).Controls(imeobj).ForeColor = rek2.Fields("bojaslova").Value
Forms(imef).Controls(imeobj).BorderColor = rek2.Fields("bojagrida").Value
End If
If control.ControlType = acComboBox Then
sqlupit2 = "select * from bojaforme where default= True and imeobjekta=" & acComboBox
Set rek2 = dato2.OpenRecordset(sqlupit2)
imeobj = control.Name
Forms(imef).Controls(imeobj).BackColor = rek2.Fields("bojapodloge").Value
Forms(imef).Controls(imeobj).ForeColor = rek2.Fields("bojaslova").Value
Forms(imef).Controls(imeobj).BorderColor = rek2.Fields("bojagrida").Value
End If
If control.ControlType = acListBox Then
sqlupit2 = "select * from bojaforme where default= True and imeobjekta=" & acListBox
Set rek2 = dato2.OpenRecordset(sqlupit2)
imeobj = control.Name
Forms(imef).Controls(imeobj).BackColor = rek2.Fields("bojapodloge").Value
Forms(imef).Controls(imeobj).ForeColor = rek2.Fields("bojaslova").Value
Forms(imef).Controls(imeobj).BorderColor = rek2.Fields("bojagrida").Value
End If
If control.ControlType = acRectangle Then
sqlupit2 = "select * from bojaforme where default= True and imeobjekta=" & acRectangle
Set rek2 = dato2.OpenRecordset(sqlupit2)
imeobj = control.Name
Forms(imef).Controls(imeobj).BackColor = rek2.Fields("bojapodloge").Value
Forms(imef).Controls(imeobj).BorderColor = rek2.Fields("bojagrida").Value
End If
If control.ControlType = acLine Then
sqlupit2 = "select * from bojaforme where default= True and imeobjekta=" & acLine
Set rek2 = dato2.OpenRecordset(sqlupit2)
imeobj = control.Name
Forms(imef).Controls(imeobj).BorderColor = rek2.Fields("bojagrida").Value
End If
If control.ControlType = acCommandButton Then
sqlupit2 = "select * from bojaforme where default= True and imeobjekta=" & acCommandButton
Set rek2 = dato2.OpenRecordset(sqlupit2)
imeobj = control.Name
Forms(imef).Controls(imeobj).ForeColor = rek2.Fields("bojaslova").Value
End If
Next
Exit Function
gresi:
err.Clear
Resume Next
End Function
a ona ti daje sve objekte sa forme pa u zavisnosti što ti treba tako si i funkciju prepraviš
naravno dobijaš i imena objekta pa tako možeš i ponaseobno kontrolirati taj objekt
imeobj = control.Name ---- ti daje samo ime objekta
pozivaš funkciju sa CALL obojaj(me.name)
Pozdrav
Static Function obojaj(zaf As String)
On Error GoTo gresi
Dim control As control
Dim trtfrm, imeobj As String
If IsNull(zaf) Or zaf = "" Then
Exit Function
End If
imef = zaf
For Each control In Forms(imef).Controls
If control.ControlType = acSubform Then
sqlupit2 = "select * from bojaforme where default= True and imeobjekta=" & acSubform
Set rek2 = dato2.OpenRecordset(sqlupit2)
trtfrm = control.Name
Forms(imef).Form(trtfrm).Form.DatasheetBackColor = rek2.Fields("bojapodloge").Value
Forms(imef).Form(trtfrm).Form.DatasheetGridlinesColor = rek2.Fields("bojagrida").Value
Forms(imef).Form(trtfrm).Form.DatasheetForeColor = rek2.Fields("bojaslova").Value
End If
If control.ControlType = acTextBox Then
sqlupit2 = "select * from bojaforme where default= True and imeobjekta=" & acTextBox
Set rek2 = dato2.OpenRecordset(sqlupit2)
imeobj = control.Name
Forms(imef).Controls(imeobj).BackColor = rek2.Fields("bojapodloge").Value
Forms(imef).Controls(imeobj).ForeColor = rek2.Fields("bojaslova").Value
Forms(imef).Controls(imeobj).BorderColor = rek2.Fields("bojagrida").Value
End If
If control.ControlType = acLabel Then '
sqlupit2 = "select * from bojaforme where default= True and imeobjekta=" & acLabel
Set rek2 = dato2.OpenRecordset(sqlupit2)
imeobj = control.Name
Forms(imef).Controls(imeobj).BackColor = rek2.Fields("bojapodloge").Value
Forms(imef).Controls(imeobj).ForeColor = rek2.Fields("bojaslova").Value
Forms(imef).Controls(imeobj).BorderColor = rek2.Fields("bojagrida").Value
End If
If control.ControlType = acComboBox Then
sqlupit2 = "select * from bojaforme where default= True and imeobjekta=" & acComboBox
Set rek2 = dato2.OpenRecordset(sqlupit2)
imeobj = control.Name
Forms(imef).Controls(imeobj).BackColor = rek2.Fields("bojapodloge").Value
Forms(imef).Controls(imeobj).ForeColor = rek2.Fields("bojaslova").Value
Forms(imef).Controls(imeobj).BorderColor = rek2.Fields("bojagrida").Value
End If
If control.ControlType = acListBox Then
sqlupit2 = "select * from bojaforme where default= True and imeobjekta=" & acListBox
Set rek2 = dato2.OpenRecordset(sqlupit2)
imeobj = control.Name
Forms(imef).Controls(imeobj).BackColor = rek2.Fields("bojapodloge").Value
Forms(imef).Controls(imeobj).ForeColor = rek2.Fields("bojaslova").Value
Forms(imef).Controls(imeobj).BorderColor = rek2.Fields("bojagrida").Value
End If
If control.ControlType = acRectangle Then
sqlupit2 = "select * from bojaforme where default= True and imeobjekta=" & acRectangle
Set rek2 = dato2.OpenRecordset(sqlupit2)
imeobj = control.Name
Forms(imef).Controls(imeobj).BackColor = rek2.Fields("bojapodloge").Value
Forms(imef).Controls(imeobj).BorderColor = rek2.Fields("bojagrida").Value
End If
If control.ControlType = acLine Then
sqlupit2 = "select * from bojaforme where default= True and imeobjekta=" & acLine
Set rek2 = dato2.OpenRecordset(sqlupit2)
imeobj = control.Name
Forms(imef).Controls(imeobj).BorderColor = rek2.Fields("bojagrida").Value
End If
If control.ControlType = acCommandButton Then
sqlupit2 = "select * from bojaforme where default= True and imeobjekta=" & acCommandButton
Set rek2 = dato2.OpenRecordset(sqlupit2)
imeobj = control.Name
Forms(imef).Controls(imeobj).ForeColor = rek2.Fields("bojaslova").Value
End If
Next
Exit Function
gresi:
err.Clear
Resume Next
End Function
Svi odgovori koje si dobio su dobri. neki su manje, neki vise komplikovani. Evo jednao srednej komplikovano resenje, sa upotrebom TAG property. U primeru imas kako se na formi moze:
- zajkljucati sve kontrole
- otkljucati sve kontrole
- zakljucati nek kontrole, neke ne
- otkljucati neke kontrole, neke ne
- menjati vidljivost izabranih kontrola
Resenje se svodi na to da u TAG property izabranih kontrola upises neku sifru. Na primer, ako u TAG stavim rec KLJUC, onda pozovem funkciju i kazem: za sve kontrole koje imaju u TAG rec 'KLJUC' zakljucaj ih ili otkljucaj, generalno, 'uradi nesto s njima'
Kontrole mogu da imaju vise od jedne sifre u TAG property, za razlicite svrhe. U zakcenom primeru iams jedna modul i jednu formu. Modul sadrzi funkcije koje rade nesto s kontrolama, a sa forme se te funkcije pozivaju.
Nevezano z akonkretniu temu, primeti da se funkcije sa dugmeta mogu pozivati na dva nacina, kroz proceduru ili kao funkcija, bez event procedure. Ako vezes dugme za funkciju, to dugme moze da se cut/paste sa forme na formu i kod putuje sa dugmetom, sto inac ne moze da se radi ako je event vezan za proceduru....
:-)
- zajkljucati sve kontrole
- otkljucati sve kontrole
- zakljucati nek kontrole, neke ne
- otkljucati neke kontrole, neke ne
- menjati vidljivost izabranih kontrola
Resenje se svodi na to da u TAG property izabranih kontrola upises neku sifru. Na primer, ako u TAG stavim rec KLJUC, onda pozovem funkciju i kazem: za sve kontrole koje imaju u TAG rec 'KLJUC' zakljucaj ih ili otkljucaj, generalno, 'uradi nesto s njima'
Kontrole mogu da imaju vise od jedne sifre u TAG property, za razlicite svrhe. U zakcenom primeru iams jedna modul i jednu formu. Modul sadrzi funkcije koje rade nesto s kontrolama, a sa forme se te funkcije pozivaju.
Nevezano z akonkretniu temu, primeti da se funkcije sa dugmeta mogu pozivati na dva nacina, kroz proceduru ili kao funkcija, bez event procedure. Ako vezes dugme za funkciju, to dugme moze da se cut/paste sa forme na formu i kod putuje sa dugmetom, sto inac ne moze da se radi ako je event vezan za proceduru....
:-)
Zidar, ovo tvoje resenje mi se jako dopada. Nisam ja pokrenuo temu, ali hvala za ovo :-)
izmenjeno 1 put, poslednji put joojant200 27.01.2010. u 10:17
Izmene poruke
- joojant20027.01.2010. u 10:17zapis iz teksta poruke
@Zidar
Probao sam i ima isti problem, npr na 'NoTagHere' stavim event:
Private Sub Text2_GotFocus()
Me!Text2 = [Text0]
End Sub
'Unlock all controls' U 'Tag = kljuc' ukucam "bbbb", 'Lock all controls' i kliknem na 'NoTagHere' i u njega se ubaci "bbbb" iako je zakljucan?
Probao sam i ima isti problem, npr na 'NoTagHere' stavim event:
Private Sub Text2_GotFocus()
Me!Text2 = [Text0]
End Sub
'Unlock all controls' U 'Tag = kljuc' ukucam "bbbb", 'Lock all controls' i kliknem na 'NoTagHere' i u njega se ubaci "bbbb" iako je zakljucan?
Citat:
@Zidar
Probao sam i ima isti problem, npr na 'NoTagHere' stavim event:
Private Sub Text2_GotFocus()
Me!Text2 = [Text0]
End Sub
'Unlock all controls' U 'Tag = kljuc' ukucam "bbbb", 'Lock all controls' i kliknem na 'NoTagHere' i u njega se ubaci "bbbb" iako je zakljucan?
Probao sam i ima isti problem, npr na 'NoTagHere' stavim event:
Private Sub Text2_GotFocus()
Me!Text2 = [Text0]
End Sub
'Unlock all controls' U 'Tag = kljuc' ukucam "bbbb", 'Lock all controls' i kliknem na 'NoTagHere' i u njega se ubaci "bbbb" iako je zakljucan?
Zakljucan = LOcked se odnosi na tastaturu. Programskim kodom mozes da menjas bilo koji objekat, kako hoces i kad hoces. Prema tome, problem nije u Locked/NotLocked, nego u kodu koji imas u GotFocus eventu. Pokusaj da u GotFocus proveris da li je kontrola zakljucana. (Kontrola moze biti zakljucana na bilo koji od nacina koje si video u odgovorima)
Pokusaj nesto ovako:
Code:
Private Sub Text2_GotFocus()
if me!text2.locked = true then
'nista se ne desava, nema koda, "do nothing here"
else
Me!Text2 = Me![Text0]
endif
End Sub
Private Sub Text2_GotFocus()
if me!text2.locked = true then
'nista se ne desava, nema koda, "do nothing here"
else
Me!Text2 = Me![Text0]
endif
End Sub
Citat:
Zakljucan = LOcked se odnosi na tastaturu...
Pokusaj nesto ovako:
Pokusaj nesto ovako:
Hvala puno :)