Salve a tutti, questo è il mio primo post ed inizio subito con un domandone:
Sono appena arrivato a gambas dopo aver fatto anni con VB6, mi ci trovo decisamente bene e apprezzo la linearità e la coerenza del linguaggio, solo una cosa mi sembra estremamente macchinosa:
La creazione di controlli utente, ho seguito le due pagine del wiki ma purtroppo non ne esco vivo, ovvero riesco a relaizzare il componente frambox ma se parto da 0 con un mio componente ho questo problema:
Ho sempre utilizzato un componente che mi ero scritto in vb6 chiamato LabeledTextBox colto comodo per piazzare veocemente sui form delle caselle di testo con allegata una label, quando tento però di realizzare questo su gambas mi trovo con un controllo vuoto, ovvero realizzo il form contenete i due oggetti grafici (label + texbox) entrambi contenuti in una drawing area, ma una volta piazzato il controllo nel form di test non visualizzo che il contorno, e quando faccio partire il programma visualizzo un form vuoto, nonostante seguendone il flusso vedo che le proprietà vangono correttamente inizializzate ed il codice non da nessun errore, vi allego quel poco che ho scritto, con le due semplici proprietà che permettono di settare il testo della label e della texbox nella speranza che qualcuno mi indichi cosa stia sbagliando.:
questo è il file LabeledTextBox.class
Export
Inherits UserControl
Public Const _Properties As String = "*,Text,LabelText"
Public Const _Group As String = "Form"
Public Const _Size As String = "150,36"
Property Text As String
Property LabelText As String
Private Obs As Observer
Private F As FLabeledTextBox
Public Sub _new()
Obs = New Observer(Me) As "Event"
F = New FLabeledTextBox
F.SetText(Me.Name)
End
Private Function Text_Read() As String
Return F.GetText()
End
Private Sub Text_Write(Value As String)
F.SetText(Value)
End
Private Function LabelText_Read() As String
Return F.GetLabelText()
End
Private Sub LabelText_Write(Value As String)
F.SetLabelText(Value)
End
Questo è il file FlabeledTextBox.class
Private $LabelText As String
Private $Text As String
Public Sub SetText(Value As String)
$Text = Value
Me.TextBox1.Text = Value
Me.DrawingArea1.Refresh()
End
Public Function GetText() As String
Return $Text
End
Public Sub SetLabelText(Value As String)
$LabelText = Value
Me.Label1.Text = Value
Me.DrawingArea1.Refresh()
End
Public Function GetLabelText() As String
Return $LabelText
End
Public Sub DrawingArea1_Draw()
Me.Label1.Refresh
Me.TextBox1.Refresh
Paint.Begin(Me.DrawingArea1)
Paint.End
End
ringrazio tutti anticipatamente.