Avatar billede cronck Nybegynder
23. juli 2004 - 19:51 Der er 41 kommentarer og
2 løsninger

Function "Tilføj text til chat"

Jeg har lavet denne funktion for at gøre det nemmere at tilføje meddelelser i min RichTextBox "txtChat"
Public Function Chat(Index As String, Color As String)
    With frmMain.txtChat
        .SelColor = Color
        .Text = frmMain.txtChat.Text & vbCrLf & "[" & Time & "] " & Index
    End With
End Function

Her skal den for eks. fortælle brugeren at han er logget på med blå tekst.
Chat("Logged on the chat", vbBlue)

Det virker ikke. Når jeg vil kompilere programmet fortæller kompileren mig at den forventede = efter Chat(blabla,blabla) boxen... Hvad er der galt?
Avatar billede thesurfer Nybegynder
23. juli 2004 - 19:53 #1
Prøv med: Chat "Logged on the chat", vbBlue
Avatar billede thesurfer Nybegynder
23. juli 2004 - 19:53 #2
Når man bruge Chat(...), skal man putte NOGET = Chat(...)
F.eks.: tmp = Chat(...)
Avatar billede thesurfer Nybegynder
23. juli 2004 - 19:55 #3
Man skal nemlig returnere værdien (tror jeg):

Public Function Chat(Index As String, Color As String)
    With frmMain.txtChat
        .SelColor = Color
        .Text = frmMain.txtChat.Text & vbCrLf & "[" & Time & "] " & Index
    End With
Chat = frmMain.txtChat.Text
End Function

tmp = Chat("Logged on the chat", vbBlue)

eller:

frmMain.txtChat.Text = Chat("Logged on the chat", vbBlue)
Avatar billede cronck Nybegynder
23. juli 2004 - 20:03 #4
Jamen, grunden til at jeg har lavet funktionen er for at gøre koden mindre...
jeg har ca. 30-40 steder hvor der står
frmMain.txtChat.Text & vbCrLf & "[" & Time & "] " & Index
og så tænkte jeg at det ville være smartere bare at kunne skrive Chat("Tekst","vbFarve")

For eks. virker den her log fint som jeg osse selv har lavet..
Public Function AddToLog(Index As String)
    Open App.Path & "\Logfile.log" For Append As #1
    Print #1, "[" & Now & "] " & Index
    Close #1
End Function
Avatar billede Slettet bruger
23. juli 2004 - 20:05 #5
Når du laver en function skal du, som thesurfer skriver, returnere noget i en variabel, hvis du har en funktion som ikke skal returnere noget skal du lave den til en sub, eks:

Public Sub Chat(Index As String, Color As String)
    With frmMain.txtChat
        .SelColor = Color
        .Text = frmMain.txtChat.Text & vbCrLf & "[" & Time & "] " & Index
    End With
End Sub
Avatar billede thesurfer Nybegynder
23. juli 2004 - 20:07 #6
..glemte at skrive, at jeg normalt bruger subs :-)
Avatar billede cronck Nybegynder
23. juli 2004 - 21:57 #7
Jamen jeg kan stadig ikke nøjes med
    Chat("Chats", "vbBlue")
hvis jeg har lavet funktionen om til en sub...
Jeg fatter det virkelig ikke, for det her virker fint...
Public Function AddToLog(Index As String)
    Open App.Path & "\Logfile.log" For Append As #1
    Print #1, "[" & Now & "] " & Index
    Close #1
End Function
Private Sub Form_Load()
    AddToLog ("Log opened")
End Sub

Og hvis det gør nogen forskel, så ligger 'Chat("Logged on the chat", "vbBlue")' osse i en 'Sub Form_Load()'
Avatar billede Slettet bruger
23. juli 2004 - 22:05 #8
Hvad mener du med at du ikke kan nøjes med? Virker det slet ikke ?
Avatar billede Slettet bruger
23. juli 2004 - 22:06 #9
Eller er det kun det i form load der ikke virker?
Avatar billede cronck Nybegynder
23. juli 2004 - 22:07 #10
Private Sub Form_Load()
    Chat("Logged on to the chat", "vbBlue")
End Sub

Vil min kompiler ikke kompilere, den siger at den forventede "="...
Men jeg har jo lavet AddToLog (beskrevet i tidl. post) på samme måde
Avatar billede Slettet bruger
23. juli 2004 - 22:08 #11
Er du sikker på at du har lavet om til sub?
Avatar billede Slettet bruger
23. juli 2004 - 22:09 #12
Hvis ja så prøv at fjerne paranteserne:
Private Sub Form_Load()
    Chat "Logged on to the chat", "vbBlue"
End Sub
Avatar billede cronck Nybegynder
23. juli 2004 - 22:13 #13
Hvis jeg skriver Chat "Logged on to the chat", "vbBlue"
Kan jeg sagtens kompilere det, men det virker stadig ikke...
Avatar billede cronck Nybegynder
23. juli 2004 - 22:14 #14
Så får jeg fejlbeskeder "Invalid Property Value"
Avatar billede Slettet bruger
23. juli 2004 - 22:14 #15
Prøv at flytte det ud af form load og i en knap, for at se om det er form load der driller,
Avatar billede cronck Nybegynder
23. juli 2004 - 22:15 #16
nix, det hjalp ikke... :/
Avatar billede Slettet bruger
23. juli 2004 - 22:16 #17
Color skal ikke være en string men en integer:
Public Sub Chat(Index As String, Color As Integer)
    With frmMain.txtChat
        .SelColor = Color
        .Text = frmMain.txtChat.Text & vbCrLf & "[" & Time & "] " & Index
    End With
End Sub

og så
Chat "Logged on to the chat", vbBlue
Avatar billede cronck Nybegynder
23. juli 2004 - 22:18 #18
Hmm... Så får jeg Overflow....?
Avatar billede Slettet bruger
23. juli 2004 - 22:19 #19
2 sek
Avatar billede cronck Nybegynder
23. juli 2004 - 22:20 #20
Ok... Jeg venter :D
Avatar billede Slettet bruger
23. juli 2004 - 22:21 #21
Prøv med en Long
Avatar billede cronck Nybegynder
23. juli 2004 - 22:22 #22
Prøvede lige at fjerne farve koden... Det virker fint...

Public Sub Chat(Index As String)
    With frmMain.txtChat
        .Text = frmMain.txtChat.Text & vbCrLf & "[" & Time & "] " & Index
    End With
End Sub

Private Sub cmdSend_Click()
    Chat ("Logged on to the chat")
End Sub
Avatar billede cronck Nybegynder
23. juli 2004 - 22:23 #23
Hmm... hvis jeg bruger Long, kommer der ingen fejl, men teksten skifter heller ikke til Blå...?
Avatar billede cronck Nybegynder
23. juli 2004 - 22:25 #24
Måske at det var nemmere at få til at virke hvis jeg bare for eks. sender Blue, og så jeg lave If Then vbBlue osv...?
Avatar billede Slettet bruger
23. juli 2004 - 22:26 #25
Prøv med en Variant, hvis det ikke virker så flikker jeg lige noget sammen til dig.
Avatar billede Slettet bruger
23. juli 2004 - 22:28 #26
Alternativ forslag:

Public Sub Chat(Index As String, Color As String)
 
  Select Case Color
    case "blå": .frmMain.txtChat.SelColor = vbBlue
    case "rød": .frmMain.txtChat.SelColor = vbRed
    case "grøn": .frmMain.txtChat.SelColor = vbGreen
    o. s. v.
  end select

    With frmMain.txtChat
        .Text = frmMain.txtChat.Text & vbCrLf & "[" & Time & "] " & Index
    End With
End Sub
Avatar billede cronck Nybegynder
23. juli 2004 - 22:29 #27
Nix, det virker heller ikke... ;-)
Avatar billede Slettet bruger
23. juli 2004 - 22:30 #28
Variant eller det alternative?
Avatar billede cronck Nybegynder
23. juli 2004 - 22:30 #29
Prøver lige den nye du lavede der
Avatar billede cronck Nybegynder
23. juli 2004 - 22:33 #30
Virker heller ikke... Den laver stadig sort tekst..
Public Sub Chat(Index As String, Color As String)
 
  Select Case Color
    Case "blå"
    frmMain.txtChat.SelColor = vbBlue
    Case "rød"
    frmMain.txtChat.SelColor = vbRed
    Case "grøn"
    frmMain.txtChat.SelColor = vbGreen
  End Select

    With frmMain.txtChat
        .Text = frmMain.txtChat.Text & vbCrLf & "[" & Time & "] " & Index
    End With
End Sub

Private Sub cmdSend_Click()
    Chat "Logged on to the chat", "blå"
End Sub
Avatar billede cronck Nybegynder
23. juli 2004 - 22:35 #31
Det her virker i min Form_Load
    With txtChat
      .Text = ""
      .SelColor = vbRed
      .SelText = "Rich"
      .SelColor = vbBlue
      .SelText = "Text"
      .SelColor = vbGreen
      .SelText = "Box"
      .SelColor = vbBlack
  End With
Avatar billede Slettet bruger
23. juli 2004 - 22:35 #32
txtChat er det en textbox eller en anden type kontrol du har?
Avatar billede Slettet bruger
23. juli 2004 - 22:36 #33
Hedder din form frmMail?
Avatar billede cronck Nybegynder
23. juli 2004 - 22:37 #34
Ahh... Alternativet virker!
Der skal bare ikke stå "frmMain." da jeg har smidt koden ind i selv formen...! :-)
Jeg takker dig tusinde gange for hjælpen!

Svar! :D
Avatar billede Slettet bruger
23. juli 2004 - 22:44 #35
Jeps, men jeg vil for en god ordens skyld lige sige at thesurfer også fortjener nogle point da det var ham der påpegede at en function skulle puttes i en variabel, så jeg synes du skal dele pointene mellem os :-)
Avatar billede cronck Nybegynder
23. juli 2004 - 22:46 #36
Nåja, ham havde jeg næsten helt glemt... :-/
Well.. Jeg deler point'ne mellem jer så snart at thesurfer har svaret :D
Avatar billede Slettet bruger
23. juli 2004 - 22:47 #37
Bare iorden :-)
Avatar billede cronck Nybegynder
23. juli 2004 - 22:51 #38
i mellem tiden, kan du så svare mig på hvorfor al tekst bliver den farve når jeg bruger scriptet?
Det var kun meningen at den linie skulle blive det.. :-)
Avatar billede cronck Nybegynder
23. juli 2004 - 23:31 #39
Bertie, jeg er ked af at sige det, men jeg har lige fundet det helt store problem...
Vi skulle bruge .SelText og ikke bare .Text :D
Avatar billede thesurfer Nybegynder
24. juli 2004 - 19:16 #40
Gruppepres.. :-)
Så jeg smider et svar :-)
Avatar billede cronck Nybegynder
24. juli 2004 - 19:50 #41
:D
Avatar billede thesurfer Nybegynder
24. juli 2004 - 19:56 #42
Takker for points :-)
Avatar billede Slettet bruger
25. juli 2004 - 10:37 #43
TAkker for point og godt du fandt ud af det :-)
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