Dopo avere superato l'ostacolo "costruire una MessageBox.Fai-da-Te", ho pensato che sarebbe bello potere richiamare l'oggetto col messaggio da visualizzare in qualsiasi Form di un programma. Per ottenere ciò ho immaginato una nuova Classe dentro la quale dovrei disegnare, esclusivamente e rigorasamente tramite codice, un contenitore Frame, al cui interno tracciare sia la textEdit che il Button "OK". Naturalmente occore passare alla suddetta nuova classe i parametri relativi alla Form chiamante, alle coordinate, all'altezza ed alla larghezza della TextEdit da visualizzare. Ho anche approcciato il codice necessario per arrivare intanto alla visualizzazione del nuovo oggetto. Volevo fare una bella sorpresa a tutti Voi, ma ho cozzato ancora contro il muro della mia ignoranza
, per cui sono qui per apprendere da chi ha già realizzato il disegno di un oggetto come una Form, una TextBox, un Button, una Label, .... con la sola scrittura di codice Gambas, il metodo di realizzazione.
Io ho scritto intanto le righe di codice necessario per chiamare la nuova classe:
Dim iX As Integer
Dim iY As Integer
Dim iH As Integer
Dim iW As Integer
Dim MsgBoxMio As MessageBoxMio
$MsgMio = "<TABLE>" &
"<TR><TD width=100% align=center colspan=2> <B>ATTENZIONE!</b>< HR SIZE = 3 WIDTH = 100%></TD></TR>" &
"<Tr><TD width=3% rowspan=2><IMG src= /home/piero/gambas3-sorgenti/comp/src/gb.form.stock/stock/scalable/warning.svg HEIGHT=48 WIDTH=48></TD>" &
"<TD width=97%> <BR>Nessun Conto inizia col NOME digitato</TD></TR>" &
"<TR><TD width=97%>------------------ Correggi ------------------</TD></TR></TABLE>"
iX = Me.X
iY = Me.Y
iH = Me.H
iW = Me.W
MsgBoxMio = New MessageBoxMio(Me, iX, iY, iH, iW, $MsgMio)
e fin qui non ho avuto difficoltà, perché le istuzioni sono state eseguite e la classe
"MessageBoxMio" é stata chiamata puntualmente. Essa, svegliata dalla chiamata, ha cominciato ad esguire il codice che vi ho inserito:
Public Sub _new(FormAct As Object, iX As Integer, iY As Integer, iH As Integer, iW As Integer, $Msg As String)
Dim MsgMioFrame As Object
Dim MsgMio As Object
Dim MsgMioOk As Object
'----------------------------------------
With FormAct.Frame
.Name = MsgMioFrame
.W = iW
.H = iH + 40
.X = iX
.Y = iY
.visible = True
.enabled = True
End With
With FormAct.MsgMioFrame.TextEdit"Unknown symbol 'Frame' in class 'Form71' in MessageBoxMio:8."
.Name = MsgMio
.W = iW
.H = iH
.X = iX
.Y = iY
.visible = True
.enabled = True
End With
With FormAct.MsgMioFrame.Button
.Name = MsgMioOk
.W = iW
.H = iH
.X = iX + (iH / 2)
.Y = iY + iH + 5
.visible = True
.enabled = True
End With
End
Il problema é sorto subito. L'unica cosa che ha funzionato é il riconoscimento della Form ricevuta come oggetto in
"FormAct"ma, all'esecuzione dell'istruzione
With FormAct.Frame ricevo al seguente segnalazione di errore:
"Unknown symbol 'Frame' in class 'Form71' in MessageBoxMio:8."
Capisco che Gambas non riconosce l'ordine di disegnare una frame coi parametri indicati all'intermo dell'istruzione Width, perché la parola
fFame gli risulta sconosciuta o gli risulta incomprensibile l'azione che gli sto chiedendo.