[Gambas-user] Impossible to get the text property of a textbox in a for each enumeration
Marc Guillaume
alarch at alarch.pw
Fri Sep 10 23:24:15 CEST 2021
Le Fri, 10 Sep 2021 23:17:30 +0200,
Tobias Boege via User <user at lists.gambas-basic.org> a écrit :
> On Fri, 10 Sep 2021, Marc Guillaume wrote:
> > Hello,
> > I am retrieving data from a mysql database in a gridview. I edit a
> > line with a popup menu in a form which contains the data of the
> > database. The data in the form are in textboxes associated with a
> > label and all these couples label textbox are in a panel. To be
> > able to detect if the user has modified a field I put the database
> > value in textbox1.text and textbox1.tag and so on. When closing the
> > form I want to check if the user has modified any fields. So I
> > browse the children of the panel and if the child is a textbox I
> > want to compare the text and tag values. If they are different then
> > I will know that there has been a modification and I can alert the
> > user. So I put this code in the closure processing.
> >
> > Public Sub btnCancel_Click()
> >
> > Dim iResponse As Integer
> > Dim oChild As Control
> > Dim bModif As Boolean = False
> >
> > For Each oChild In panIel1.Children
> > If oChild Is TextBox
> > If oChild.text <> oChild.Tag
> > bModif = True
> > Endif
> > Endif
> > Next
> > If bModif
> > iResponse = Message.Warning( etc.
> >
> > But while in the for each loop I get the value of the tag without
> > any problem I have an error for the text property :
> >
> > "Unknown text symbol in the control class"
> >
>
> In this case, it matters for property lookup which type your variable
> is declared as. You can look up the Tag property of oChild because it
> exists in the Control class, but Text does not. Even if oChild is
> really a TextBox, you declared it as merely a Control.
>
> You can either force a dynamic symbol lookup by using
>
> If oChild Is TextBox Then
> If Object.GetProperty(oChild, "Text") <> oChild.Tag Then
> ...
>
> or by coercing oChild into a TextBox-typed variable:
>
> If oChild Is TextBox Then
> Dim tbChild As TextBox = oChild
> If tbChild.Text <> tbChild.Tag Then
> ...
>
> The coercion will fail at runtime if the real class of oChild is
> incompatible with (i.e. does not derive from) TextBox, but you guard
> for that with the enclosing If ... Is TextBox.
>
> Best,
> Tobias
>
Thank you very much!
I thought there was a problem with classes and class inheritance but I didn't know how to access these textbox properties from the control class.
Good night!
More information about the User
mailing list