Aggiunta di un oggetto in una scheda ASPX

' Il seguente frammento di codice mostra come aggiungere un oggetto, nella fattispecie una Label, all'interno di una scheda ASPX
' Va inserito nello "Script Creazione" di un qualsiasi oggetto della scheda, e, come si può vedere, crea il nuovo oggetto per poi assegnarne la visibilità nell'evento PreRender dell'oggetto NUM,
' che viene sempre visualizzato sulla scheda SCQUEST.ASPX cui fa riferimento l'esempio
' E' necessario infatti tenere presente che l'evento PreRender di un oggetto viene eseguito solo se la proprietà visible di quell'oggetto vale true.
' Va inoltre tenuto presente che la creazione di un nuovo oggetto non è possibile farla all'interno degli eventi Init, Load e PreRender.

dim form as SCQUESTFORM=this.page

' Indicatore domande senza tag
dim t as new QWWebControls.QWWebLabel
t.ID="WARNING_TAG" ' Non dimenticare di assegnarlo
t.text="Vi sono domande senza TAG"
t.ForeColor=system.drawing.color.red
t.Font.Size=new System.Web.Ui.WebControls.FontUnit("14px")
t.TextCenter=true
t.style("TOP")="50px"
t.style("LEFT")="700px"
t.style("POSITION")="absolute"
t.width=200
t.height=30
t.visible=false

form.AddControl(t) ' Questa va usata per le versioni post 2019.00b++
' form.findcontrol(form.classname).controls.add(t) !! Per le versioni pre 2019.00b++ usare questa

' Collega il settaggio della visualizzazione dell'indicatore al prerender dell'oggetto NUM, che è sicuramente sempre visualizzato
dim n as QWWebControls.qwwebentryfieldmask=ctype(form.findcontrol2("NUM"),QWWebControls.qwwebentryfieldmask)

addhandler n.PreRender, sub (sender As Object, e As EventArgs)
    	 t.visible=false
         if not form.form_state.dmd_ref.SCTESTQ.rowset.endofset
             ' Verifica che il tag sia presente su tutte le domande
             dim q as new QWTable
             q.database=form.form_state.dmd_ref.DB
             q.sql="select * from SCDOMQ where NUMDOC=:NUMDOC and OPZIONALE=0 and TAG is null"
             q.params("NUMDOC")=form.form_state.dmd_ref.SCTESTQ.rowset.fields("NUMDOC").value
             q.active=true
             if q.rowset.first()
                t.visible=true
             end if
             q.active=false
          end if
     End Sub