Avatar billede tblaster Nybegynder
31. august 2012 - 11:21 Der er 8 kommentarer

Hjælp til sub kald

Er der nogen der kan hjælpe med at kode nedenstående subs om til en enkelt istedet for 2, eks. ved at inkluder navnet på text boksen som parameter i kaldet.

    SetTextTC(T_Text)
    SetTextQC(Q_Text)


    Private Sub SetTextTC(ByVal [text] As String)
        If Me.TConvertedBox.InvokeRequired Then
            Dim d As New ContextCallback(AddressOf SetTextTC)
            Me.Invoke(d, New Object() {[text]})
        Else
            Me.TConvertedBox.Text = [text]
        End If
    End Sub
    Private Sub SetTextQC(ByVal [text] As String)
        If Me.TConvertedBox.InvokeRequired Then
            Dim d As New ContextCallback(AddressOf SetTextQC)
            Me.Invoke(d, New Object() {[text]})
        Else
            Me.QConvertedBox.Text = [text]
        End If
    End Sub

På forhånd tak.
Avatar billede supertekst Ekspert
31. august 2012 - 14:12 #1
Hvis du skriver den om til en funktion?
Avatar billede arne_v Ekspert
01. september 2012 - 03:11 #2
Du skal vel send selve TextBox og ikke navnet paa den over som et argument.
Avatar billede tblaster Nybegynder
01. september 2012 - 10:57 #3
Jeg har prøvet mig med følgende:

    WriteText(Me.TSearcheddBox, Q_Search)

    Function WriteText(ByRef Obj As Object, ByVal [text] As String)
        If Obj.InvokeRequired Then
            Dim d As New ContextCallback(AddressOf WriteText)
            Me.Invoke(d, New Object() {[text]})
        Else
            Obj.Text = [text]
        End If
    End Function

Men får følgende fejl:
Error    2    Method 'Public Function WriteText(ByRef Obj As Object, text As String) As Object' does not have a signature compatible with delegate 'Delegate Sub ContextCallback(state As Object)'.

Jeg får samme fejl hvis jeg bruge en Private Sub.
Avatar billede arne_v Ekspert
02. september 2012 - 21:52 #4
vi skal vist have lidt mere kontekst
Avatar billede tblaster Nybegynder
04. september 2012 - 18:08 #5
Jeg har en række tekstbokse i min form som jeg forsgøer at opdatere når mit program kører. Disse hedder eks:
TConvertedBox
QConvertedBox
ErrorBox

Nu vil jeg gerne fra min kode opdateret feterne ved at lave et kald. Jeg har løst dette ved at lave en sub til hver tekstboks jeg skal kunne opdateret men ønsker at samle det til en enkelt sub.

Pt. ser en af mine sub således ud:
    Private Sub SetError(ByVal [text] As String)
        If Me.ErrorBox.InvokeRequired Then
            Dim d As New ContextCallback(AddressOf SetError)
            Me.Invoke(d, New Object() {[text]})
        Else
            Me.ErrorBox.Text = [text]
        End If
    End Sub

Håber det giver mener mening.
Avatar billede tblaster Nybegynder
05. september 2012 - 19:59 #6
Jeg har prøvet at lave følgende funktion:
    Private Sub UpdateText(ByRef CurrentTextBox As Object, ByVal [text] As String)
        If CurrentTextBox.InvokeRequired Then
            Dim d As New ContextCallback(AddressOf UpdateText)
            Me.Invoke(d, New Object() {[text]})
        Else
            CurrentTextBox.Text = [text]
        End If
    End Sub

Men jeg får følgende fejl:
Method 'Private Sub UpdateText(ByRef CurrentTextBox As Object, text As String)' does not have a signature compatible with delegate 'Delegate Sub ContextCallback(state As Object)'.

Fejlen angives på følgende del af koden:
AddressOf UpdateText

Nogen forslag til hvad jeg kan gøre?
Avatar billede rasmuzzen Nybegynder
08. september 2012 - 14:55 #7
Jeg tror jeg forstår havd du mener, modtager funktionen skal have en dimmet textbox, som du så sætter dit sub parameter objekt lig med, så kan du hive navnet og øndre / læse teksten som du har lyst til.

Var det det du mente ?.
Avatar billede tblaster Nybegynder
09. september 2012 - 14:33 #8
Ja, det er hvad jeg ønsker.
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview
Kategori
Kurser inden for grundlæggende programmering

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester