Gå til innhold

Hvilken textbox er i focus?


Anbefalte innlegg

Jeg prøver og prøver, men det tar lang tid på bli god her... :yes:

proglemet er dette:

 

Private Sub txtChat_KeyDown(KeyCode As Integer, Shift As Integer)

If 13 Then 'enter knappen
      
If "nickname(textbox) er i focus" then
Call CmdConnect
End If

If "Chattxt(textbox) er i focus" then
Call cmdSend_Click
End If

End If
End Sub

 

Tror dere kan se at det vil ikke funke å skrive "er i focus" :thumbdown:

men hva kan jeg bytte dette ut med for at det skal fungere...?

 

(og ja, jeg er n00b) :innocent:

 

-William-

Lenke til kommentar
Videoannonse
Annonse

først litt opprydding i koden:

Private Sub txtChat_KeyDown(KeyCode As Integer, Shift As Integer)

    If 13 Then 'enter knappen

        If "nickname(textbox) er i focus" Then

            Call CmdConnect

        End If

       

        If "Chattxt(textbox) er i focus" Then

            Call cmdSend_Click

        End If

    End If

End Sub

 

legg merke til formateringen!

 

Det er hat å lese kode hvor alt er på samme linje!

 

uansett så vil ikke dette fungere, siden du ALDRI kan ha fokus i noen av de andre tekstboksene fordi denne koden intreffer kun når txtChat er i fokus.

 

Prøv å forklar nøye hva du vil, så tar vi det på nytt igjen..

Lenke til kommentar

jo.. nå tror jeg at jeg skjønner hva du mener...

 

først, lag en hjelpevariabel på topp nivå (øverst i koden) :

Dim LastUsedTB as Integer

 

deretter lager du dette:

Private Sub txtNickname_Change()
   LastUsedTB = 1
End Sub

 

og så dette:

Private Sub txtChattxt_Change()
   LastUsedTB = 2
End Sub

 

husk å endre navnet på sub'ene til det respektive navnet dem har i din applikasjon

 

 

deretter editerer du KeyDown-eventet ditt til dette:

Private Sub txtChat_KeyDown(KeyCode As Integer, Shift As Integer)
   If KeyCode = 13 Then 'enter knappen
       If LastUsedTB = 1 Then
           Call CmdConnect
       ElseIf LastUsedTB = 2 Then
           Call cmdSend_Click
       End If
   End If
End Sub

 

 

Dette er vel egentlig ingen kode jeg vil vedkjenne meg ;) , men antar at dette vil funke i ditt tilfelle.

 

Jeg tror jeg ville gjort dette på en helt annen måte i virkeligheten.

 

 

EDIT : legg merke til at jeg har endret på det første If-statementet også, slik at jeg faktisk får en logisk setning som tester på om tastekoden har verdien 13 (If keycode = 13 Then)

Endret av dga01
Lenke til kommentar

Ok... ska vi se her...

 

Jeg har en del textbokser...

 

Nickname boksen

Ip boxen

Port boxen

Local IP boxen (som er inactiv)

 

Maintxt (hovedvinduet)

Chattxt (chat text vinduet)

 

 

Når jeg trykker "enter" og fokusen er i nickname boksen, skal connectcmd_Click aktiveres...

 

Når jeg trykker "enter" og fokusen er i nickname boksen, skal sendcmd_Click aktiveres....

 

Men en ting til, pluuutselig funka ikke data arrival!!! :-s

(det er sikkert lettere og bedre måter å lage chat på, menmen.)

 

Private Sub Winsock_DataArrival(ByVal bytesTotal As Long)

'declairations
'----------------------------
Dim strData As String
Dim tempdata As String
'-----------------------------


If Len(strData) > 11 Then

Winsock.GetData strData

     If Mid$(strData, 0, 7) = "chattext" Then ' chat text kommer inn
     txtmain.Text = txtmain.Text & vbCrLf & Mid$(strData, 8, Len(strData))
     End If

     If Mid$(strData, 0, 7) = "newlogin" Then ' ny bruker logger seg på
     nicknames.List(nicknames.ListCount) = Mid$(strData, 8, Len(strData))
     End If

     If Mid$(strData, 0, 10) = "getnicklist" Then
      ny bruker requester nicklista
     Winsock.SendData ("nicklist" & Mid$(strData, 8, Len(strData)) & "nick.Text")
     send ut "nicklist" & "requesterens sitt nick" & Mitt nick
     DoEvents
     End If

     If Mid$(strData, 0, 7) = "nicklist" Then ' ny bruker får tilbake nicklista
     Dim nicklen As Integer
    If Mid$(strData, 8, Len(strData)) = "nick.text" Then
    nicklen = 8 + Len(nick.Text)
    nicknames.List(nicknames.ListCount) = Mid$(strData, nicklen, Len(strData))
    End If

End If

End Sub

 

Koden er ikke ferdig... Men plutselig funka den ikke nuh... :-s hvorfor egentlig det da?

 

(legger til "send knappen oxo)

Private Sub cmdSend_Click()
   
   Winsock.SendData Time & " " & nick.Text & " " & txtChat.Text
   DoEvents
   
   txtChat.Text = ""
End Sub

 

:hmm:

 

Edit: Jeg tok bort: "chattext" & fra senddata (det sku jo komme først)

Men funka ikke da heller!

Endret av wildjam
Lenke til kommentar

Når jeg trykker "enter" og fokusen er i nickname boksen, skal connectcmd_Click aktiveres...

 

Når jeg trykker "enter" og fokusen er i nickname boksen, skal sendcmd_Click aktiveres....

 

Poenget er at når du trykker enter, så er fokus satt på chatteboksen din, hvilket betyr at nickname kontrollen ALDRI vil ha fokus når du tester på om den har det eller ikke.

Lenke til kommentar

Du skriver keydown på ALLE tekstboksene din. Sånn som her:

Private Sub txtChat_KeyDown(KeyCode As Integer, Shift As Integer)
If Not KeyCode = 13 Then Exit Sub
MsgBox "Fokuset er i txtchat!"
End Sub

Private Sub txtNickname_KeyDown(KeyCode As Integer, Shift As Integer)
If Not KeyCode = 13 Then Exit Sub
MsgBox "Fokuset er i txtNickname!"
End Sub

Private Sub txtIp_KeyDown(KeyCode As Integer, Shift As Integer)
If Not KeyCode = 13 Then Exit Sub
MsgBox "Fokuset er i txtIp!"
End Sub

Private Sub txtPort_KeyDown(KeyCode As Integer, Shift As Integer)
If Not KeyCode = 13 Then Exit Sub
MsgBox "Fokuset er i txtPort!"
End Sub

Private Sub txtLocalIP_KeyDown(KeyCode As Integer, Shift As Integer)
If Not KeyCode = 13 Then Exit Sub
MsgBox "Fokuset er i txtLocalIP!"
End Sub

Private Sub txtMaintxt_KeyDown(KeyCode As Integer, Shift As Integer)
If Not KeyCode = 13 Then Exit Sub
MsgBox "Fokuset er i txtMaintxt!"
End Sub

Private Sub txtChattxt_KeyDown(KeyCode As Integer, Shift As Integer)
If Not KeyCode = 13 Then Exit Sub
MsgBox "Fokuset er i txtChattxt!"
End Sub

Edit: ja, en for hver

 

Edit2: hva betyr Shift i den funksjonen? Hvis man holder shift inne så er den True, ellers er en False?

Endret av Jonas
Lenke til kommentar

hva betyr Shift i den funksjonen? Hvis man holder shift inne så er den True, ellers er en False?

 

Shift er en integer som inneholder en verdi mellom 0-7

1 = Shift er inne

2 = Ctrl er inne

3 = Ctrl OG Shift er inne

4 = Alt-knappen er inne

5 = Alt og Shift er inne

6 = Ctrl og Alt er inne

7 = Ctrl, Shift og Alt er inne

0 = ingen av disse knappene er inne

Lenke til kommentar

Opprett en konto eller logg inn for å kommentere

Du må være et medlem for å kunne skrive en kommentar

Opprett konto

Det er enkelt å melde seg inn for å starte en ny konto!

Start en konto

Logg inn

Har du allerede en konto? Logg inn her.

Logg inn nå
×
×
  • Opprett ny...