Tagovi mogu da pomognu i treba ih koristiti. Tebi treba i OpenArgs, da bi forma znala odakle se poziva.
Tagovi sluze da se markiraju kontrole od interesa. Tag je najobicniji string koji se upisuje u property Tag i moze se koristiti za sta god hoces. Jedna od ideja je selektivno tretiranje kontrola, kad pritreba. Ovako. Verovatno si u knjigama nasao kod koji moze da sve kontrole zakljuca ili da ih ucini nevidljivim.
For Each loop za kontrole to radi. Jedini problem je sto se kod odnosi na SVE kontrole, sto je redak slucaj u praksi. Onda su se ljudi dosetili pa uved u uslov kao
If ctl.typeOf=acTextBox da primene neku operaciju samo na odredjen tip kontrole. Opet niej dovoljno, ako zelis da samo neku dugmad sakrijes i samo neke text boxove na primer obojis u crveno. Zato se kontrolema dodeli neki tag. to se radi u Design modu. Lepo upises na primer "HIDE" u tag property za kontrole koje zelis da sakrijes. Onda ide kod kao:
Code:
'Pozivanje funkcije koja cini kontrole nevidljivim
'Poziv ide sa forme, recimo iz OnLoad
Call MakeInVisible(me,"HIDE")
'Funkcija:
Function MakeInVisible(frm As Form, strTAG As String) As Boolean
'*******************************************
'Name: MakeInVisible(Function)
'Purpose: make control invisible, for cotrols that have strTAG
' somewhere in their Tag property
'Author: **********
'Date: February 22, 2000, 02:08:19 PM
'Called by:
'Calls:
'Inputs: frm:=form hat contains controls
' strTAG:= code to be found in the Tag property.
' If found, visibility will be toggled
'Output: nothing
'*******************************************
Dim ctl As Control
For Each ctl In frm.Controls
If InStr(1, ctl.Tag, strTAG) > 0 Then
ctl.Visible = False
End If
Next
End Function
Posto svoju formu pozivas sa vise mesta i dajes joj razlicite uloge, treba ti OpenArgs u svakom pozivu. Zavisno od OpenArgs, na OnLoad izdajes razlicite naredba kao u navedenom primeru.
Code:
private sub MyForm_OnLoad()
Select Case me.OpenArgs
Case "Unos"
call SetUnosButtons("UNOS")
Case "Edit"
call SetEditButtons("EDIT")
Case "View"
call SetViewButtons("VIEW")
End Select
end sub
Tvoja dugmad u ovom slucaju treba da imaju tag "UNOS EDIT" ili "UNOS EDIT VIEW" ili "UNOS". Znaci, vise vrednosti u tag property. U funkciji MakeInVisible koristi se Instr da iskopa zadati string iz tag property, pa to omogucuje multi string tags.
Prouci malo ovo i eksperimentisi.
Za problem "Cancel treba da se dvojako ponasa zavisno odakle je forma pozvana, resi sa If u OnClick eventu:
Code:
If me.OpenArgs then
neki kod..
Else
neki drugi kod...
Endif
Ako imas vise od dva slucaja, koristi CASE umesto IF ELESIF. ELseIF je veoma nepregledno i za pisanje i za kasnije citanje koda, pa ga izbegavaj. (Sad ce da me bombarduju ispravkama, mnogi ljudi naprosto obozavaju ElseIF. Ne odgovaram na to :-)
:-)