Trimming a String

WiLey2000

Member
Licensed User
Longtime User
I have tried this: (included sample attached)

I have (3) radiobuttons in a panel "pnlItem1Select"

The radiobutton Controls are named: rdbtnItem1A, rdbtnItem1B, rdbtnItem1C

I have a Global variable
B4X:
Sub Globals
   'These global variables will be redeclared each time the activity is created.
   'These variables can only be accessed from this module.
   Dim rdbtnItem1A, rdbtnItem1B, rdbtnItem1C As RadioButton
   Dim rdbtnItem2A, rdbtnItem2B, rdbtnItem2C As RadioButton
   Dim txtItem1Def As EditText
   Dim txtItemDefName As String
   txtItemDefName  = "txtItem1Def"
   Dim rdbtnCtrlItemName As String
   rdbtnCtrlItemName = "rdbtnItem1A"
End Sub

How do I strip down rdbtnCtrlItemName to give me a string result like this?

FolderName = "rdbtnItem1"


I will have multiple (3) radiobutton panels in a LayOut in Designer

Radiobttons from attached sample:
B4X:
Sub rdbtnItem1A_CheckedChange(Checked As Boolean)
   If rdbtnItem1A.Checked = True Then
      rdbtnCtrlItemName = "rdbtnItem1A"
      txtItemDefName = "txtItem1Def"
      RdBtnStatus

   End If   
End Sub
Sub rdbtnItem1B_CheckedChange(Checked As Boolean)
   If rdbtnItem1B.Checked = True Then
      rdbtnCtrlItemName = "rdbtnItem1B"
      txtItemDefName = "txtItem1Def"
      RdBtnStatus   

   End If   
End Sub
Sub rdbtnItem1C_CheckedChange(Checked As Boolean)
   If rdbtnItem1C.Checked = True Then
      rdbtnCtrlItemName = "rdbtnItem1C"
      txtItemDefName = "txtItem1Def"
      RdBtnStatus   

   End If
End Sub
Sub rdbtnItem2A_CheckedChange(Checked As Boolean)
   If rdbtnItem2A.Checked = True Then
      rdbtnCtrlItemName = "rdbtnItem2A"
      txtItemDefName = "txtItem2Def"
      RdBtnStatus

   End If   
End Sub
Sub rdbtnItem2B_CheckedChange(Checked As Boolean)
   If rdbtnItem2B.Checked = True Then
      rdbtnCtrlItemName = "rdbtnItem2B"
      txtItemDefName = "txtItem2Def"
      RdBtnStatus

   End If   
End Sub
Sub rdbtnItem2C_CheckedChange(Checked As Boolean)
   If rdbtnItem2C.Checked = True Then
      rdbtnCtrlItemName = "rdbtnItem2C"
      txtItemDefName = "txtItem2Def"
      RdBtnStatus

   End If   
End Sub
Sub RdBtnStatus
   If rdbtnCtrlItemName.Contains("C") Then
      'txtItemDefName.Enabled = True      'want to enable EditText object (get error when compiling)
   Else
      'txtItemDefName.Enabled = False
   End If

End Sub

I get an error when compiling: unknown member: enabled

Any help on how the do this?

Learning Here is the BEST :sign0188:

John
 

Attachments

  • RadioButtonHelp.zip
    7.1 KB · Views: 277
Last edited:

specci48

Well-Known Member
Licensed User
Longtime User
Assuming that your rdbtnStatus is always 1 char long:
B4X:
FolderName = rdbtnCtrlItemName.substring2(0, rdbtnCtrlItemName.Length - 1)
rdbtnStatus = rdbtnCtrlItemName.substring(rdbtnCtrlItemName.Length - 1)


specci48
 
Upvote 0

WiLey2000

Member
Licensed User
Longtime User
Thanks for the reply specci48

I will use this:
B4X:
FolderName = rdbtnCtrlItemName.substring2(0, rdbtnCtrlItemName.Length - 1)

Can I use a string as a controlname to enable it. See at end of Sub RdBtnStatus in first post.

John
 
Upvote 0

Erel

B4X founder
Staff member
Licensed User
Longtime User
Here is a small example:
B4X:
Sub Process_Globals
End Sub
Sub Globals
   Dim ScrollView1 As ScrollView
   Dim Button1 As Button
   Dim Button2 As Button
   Dim Button3 As Button
   Dim Button4 As Button
   Dim EditText1 As EditText
   Dim ViewsMap As Map
End Sub
Sub Activity_Create(FirstTime As Boolean)
   Activity.LoadLayout("1")
   ViewsMap.Initialize
   ViewsMap.Put("button1", Button1)
   ViewsMap.Put("button2", Button2)
   ViewsMap.Put("button3", Button3)
   ViewsMap.Put("button4", Button4)
   ViewsMap.Put("edittext1", EditText1)
   
   Dim v As View
   v = GetViewByName("Button1")
   v.Color = Colors.Blue
End Sub

Sub GetViewByName(Name As String) As View
   Return ViewsMap.Get(Name.ToLowerCase)
End Sub

I recommend you to also go over this tutorial: Tick-Tack-Toe: working with arrays of views
 
Upvote 0
Top