Page 1 of 1

How to get the 3 last controls in a panel?

Posted: Wed Jul 26, 2017 2:21 pm
by Dummy1912
Hello,

can anyone provide me an sample to get the last 3 controls in a panel please
i want to get from the last 3 controls the 'Text' that's inside the control

Thanks

Re: How to get the 3 last controls in a panel?

Posted: Wed Jul 26, 2017 6:06 pm
by CodenStuff
Iterating through a panels controls starts from the last one anyway
Example:
Code: Select all
For Each control In Panel1.Controls
            'Do something here
        Next
Or quick and dirty to get the last 3 controls in the panel, in this case the text from textboxes:
Code: Select all
For i = 0 To 2
            MsgBox(CType(Panel1.Controls(i), TextBox).Text)
        Next

Re: How to get the 3 last controls in a panel?

Posted: Wed Jul 26, 2017 8:32 pm
by Dummy1912
Hi Again,

How to get instead of an textbox just a string?
how do i get that please of the control
Code: Select all
Public Property Description() As String
        Get
            Return _PText
        End Get
        Set(ByVal Value As String)
            _PText = Value
            Invalidate()
        End Set
    End Property

Re: How to get the 3 last controls in a panel?

Posted: Wed Jul 26, 2017 9:11 pm
by CodenStuff
I imagine it would be basically the same sort of thing.

Like
ctype(panel1.controls(I), textbox).Description()

Re: How to get the 3 last controls in a panel?

Posted: Wed Jul 26, 2017 9:33 pm
by Dummy1912
I don't have any textbox or other controls
only strings liked i showed in my code :)

so how can we solved that please

Re: How to get the 3 last controls in a panel?

Posted: Thu Jul 27, 2017 5:17 am
by Dummy1912
Hello,

NVM got it
i just needed to replace it with my own control hahaha
stupid me :D

hmmm weird, nothing shows up :(
i get only a sort of error message that shows me the line number but no error?

Re: How to get the 3 last controls in a panel?

Posted: Thu Jul 27, 2017 6:37 am
by Dummy1912
OKay found it

but still don't get the last 3 controls :(
it shows 1 last control if i use exit sub
then it stops

if i delete the exit sub then it shows 3 times the first control instead of the 3 last ones
Code: Select all
For i = 0 To 2
                Select Case i
                    Case 0
                        For Each ctl As Control In ITransactionControl1.IPanel1.Controls
                            If TypeOf ctl Is ITransaction Then
                                Label31.Text = CType(ctl, ITransaction).Description
                                ' Exit Sub
                            End If
                        Next

                    Case 1
                        '             MsgBox(CType(ITransactionControl1.IPanel1.Controls(2), ITransaction).Description)
                        For Each ctl As Control In ITransactionControl1.IPanel1.Controls
                            If TypeOf ctl Is ITransaction Then
                                Label4.Text = CType(ctl, ITransaction).Description
                                '  Exit Sub
                            End If
                        Next

                    Case 2
                        For Each ctl As Control In ITransactionControl1.IPanel1.Controls
                            If TypeOf ctl Is ITransaction Then
                                Label27.Text = CType(ctl, ITransaction).Description
                                '  Exit Sub
                            End If
                        Next

                End Select
            Next


Re: How to get the 3 last controls in a panel?

Posted: Thu Jul 27, 2017 7:39 am
by Dummy1912
:duh;
think i found the solution
Code: Select all
                            For I As Integer = 0 To ITransactionControl1.IPanel1.Controls.Count - 1
                                If TypeOf ITransactionControl1.IPanel1.Controls.Item(I) Is ITransaction Then

                                    Select Case I
                                        Case 1
                                            Label31.Text = CType(ITransactionControl1.IPanel1.Controls.Item(I), ITransaction).Description
                                        Case 2
                                            Label4.Text = CType(ITransactionControl1.IPanel1.Controls.Item(I), ITransaction).Description
                                        Case 3
                                            Label27.Text = CType(ITransactionControl1.IPanel1.Controls.Item(I), ITransaction).Description
                                    End Select
                                End If
                            Next

not sure yet, but testing :)

EDIT:
pfff don't get it working, still don't get the last 3 controls
seems the case functions don't work the way we count it
hope someone can give me a better solution :D

Thanks

Re: How to get the 3 last controls in a panel?

Posted: Sat Jul 29, 2017 10:06 am
by CodenStuff
Which controls is it getting?

Instead of CASE 1/2/3 have you tried CASE 0/1/2 ...remember it starts from 0

Re: How to get the 3 last controls in a panel?

Posted: Sat Jul 29, 2017 10:13 am
by Dummy1912
hi again,

this is the result with the code
Code: Select all
For I As Integer = 0 To ITransactionControl1.IPanel1.Controls.Count - 1
                        If TypeOf ITransactionControl1.IPanel1.Controls.Item(I) Is ITransaction Then

                            Select Case I
                                Case 0
                                    Label31.Text = CType(ITransactionControl1.IPanel1.Controls.Item(I), ITransaction).Description
                                Case 1
                                    Label4.Text = CType(ITransactionControl1.IPanel1.Controls.Item(I), ITransaction).Description
                                Case 2
                                    Label27.Text = CType(ITransactionControl1.IPanel1.Controls.Item(I), ITransaction).Description
                            End Select
                        End If
                    Next
Image

what are we doing wrong :( why do i get only 1 record in the left column?

Edit:
I also needed the last 3 records that has been added as last
963,lol,pol
not from the last 3 bottoms