Fetstil Fetstil Kursiv Understrykning linje färgläggning tabellverk Punktlista Nummerlista Vänster Centrerat högerställt Utfyllt Länk Bild htmlmode
  • Forum & Blog
    • Forum - översikt
      • .Net
        • asp.net generellt
        • c#
        • vb.net
        • f#
        • silverlight
        • microsoft surface
        • visual studio .net
      • databaser
        • sql-server
        • databaser
        • access
        • mysql
      • mjukvara klient
        • datorer och komponenter
        • nätverk, lan/wan
        • operativsystem
        • programvaror
        • säkerhet, inställningar
        • windows server
        • allmänt
        • crystal reports
        • exchange/outlook
        • microsoft office
      • mjukvara server
        • active directory
        • biztalk
        • exchange
        • linux
        • sharepoint
        • webbservers
        • sql server
      • appar (win/mobil)
      • programspråk
        • c++
        • delphi
        • java
        • quick basic
        • visual basic
      • scripting
        • asp 3.0
        • flash actionscript
        • html css
        • javascript
        • php
        • regular expresssion
        • xml
      • spel och grafik
        • DirectX
        • Spel och grafik
      • ledning
        • Arkitektur
        • Systemutveckling
        • krav och test
        • projektledning
        • ledningsfrågor
      • vb-sektioner
        • activeX
        • windows api
        • elektronik
        • internet
        • komponenter
        • nätverk
        • operativsystem
      • övriga forum
        • arbete karriär
        • erbjuda uppdrag och tjänster
        • juridiska frågor
        • köp och sälj
        • matematik och fysik
        • intern information
        • skrivklåda
        • webb-operatörer
    • Posta inlägg i forumet
    • Chatta med andra
  • Konto
    • Medlemssida
    • Byta lösenord
    • Bli bonsumedlem
    • iMail
  • Material
    • Tips & tricks
    • Artiklar
    • Programarkiv
  • JOBB
  • Student
    • Studentlicenser
  • KONTAKT
    • Om pellesoft
    • Grundare
    • Kontakta oss
    • Annonsering
    • Partners
    • Felanmälan
  • Logga in

Hem / Forum översikt / inlägg

Posta nytt inlägg


Textbox ej skrivbar??

Postades av 2006-06-14 11:52:59 - Tobias Lindberg, i forum visual basic - allmänt, Tråden har 16 Kommentarer och lästs av 940 personer

Hej!

Jag håller på med ett program som ska funger ungefär som "windows cmd", jag har komigt en bit på vägen men nu har jag fått stopp,, det är så att jag har en svart textbox som man skiver i med vit text.
Jag har gjort så att när man trycker på "ENTER" så hoppar det ner en rad, och då skickas informationen som man skrev till en string men här får jag problem, för jag vet inte riktigt hur jag ska göra för att plocka ut just den texten man nyss skrev. Då tänkte jag att för varje gång man trycker "enter" så sparar man allt i en string och sen nästa gång så sparar man allt i en string igen och sen tar man den "gammla texten" och tar minus den "nya" texten men jag får det inte att funka riktigt här är koden:
<code>
Private Sub txtcom1_KeyPress(KeyAscii As Integer)
If KeyAscii = 13 Then
If strTextGammla = "" Then
strTextNya = txtCom1.Text
Else
strTextGammla = strTextNya
strTextNya = txtCom1.Text
strTextNya = strTextGammla - strTextNya
End If
MsgBox strTextNya
End If
End Sub
</code>

Sen har jag ett annat problem med jag undrar hur man gör om man tex skriver först detta:
Hej
Hej
hej <-- Nu är vi på denna rad..
Det ser ju bra ut men hur går man om man vill göra så att man inte kan ändra den texten som står ovanför för just nu kan man skriva var man fill ungefär!

//Hoppas ni fattar
MVH Tobias Lindberg


Svara

Sv: Textbox ej skrivbar??

Postades av 2006-06-14 15:52:35 - Peter Larsson

Hej Tobias
Du krånglar till det för dig :)

Om jag har förstått det rätt, så vill du hämta ut raden längst ner i din TextBox.
Varför inte bara dela upp texten i inmatningsrutan efter vbCrLf? Då har du "det man nyss skrev" sist i arrayen som genererades av Split funktionen.

Som svar på din andra fråga kan du kontrollera på vilken rad markören befinner sig. Detta går att göra med API-anrop, men också genom att själv implementera funktionaliteten för KeyPress (down/up).

Som svar på din tredje fråga, angående QUIT, så kontrollerar du enkelt den sista texten i ovanstående array.
Nåt i stil med:

Dim strInput as String
Dim strArray

strArray = Split(txtDOS.Text, vbCrLf)
strInput = strArray(Len(strArray))

If ToLower(strInput) = "quit" Then End


/ Peter


Svara

Sv:Textbox ej skrivbar??

Postades av 2006-06-14 16:05:40 - Tobias Lindberg

okej tack ska testa det ;)!!

Men asså för jag hadde tänkt så att jag inte behöver en if sats för varje "comando" för asså typ help, quit är bara en början hadde tänkt att fylla på med mer sen!
Så jag undrar finns det något efektivt sätt att göra så att man inte behöver ha 100- tals if satser!


Svara

Sv: Textbox ej skrivbar??

Postades av 2006-06-14 17:18:03 - Peter Larsson

Du kan lägga alla kommandon i en array och sedan iterera igenom den för att kolla om inmatningen är ett kommando.

Men du måste ändå veta VILKET kommando det är.
Det enklaste är ändå att du använder flera kontroll-satser.

Du kan göra det mer lättläst med en Select-sats:

Select Case strInput
 "help":
  ' Visa hjälptext.
 "quit":
  ' Avsluta program.
End Select


/ Peter


Svara

Sv:Textbox ej skrivbar??

Postades av 2006-06-14 17:20:16 - Tobias Lindberg

okej??
Asså den koden som du skrev fick jag inte det att funka med riktigt!!
Så jag anväder denna med 2 textboxar:
<code>
Private Sub txtcom2_KeyPress(KeyAscii As Integer)
If KeyAscii = 13 Then
strTextSkicka = txtCom2
txtCom1 = txtCom1 + vbCrLf + strTextSkicka
txtCom2 = ""
If strTextSkicka = "Help" Then
txtCom1 = txtCom1 + vbCrLf + "|->Här är alla comandon du kan använda än så länge!" + vbCrLf + "|->--------------------" + vbCrLf + "|->| Help |" + vbCrLf + "|->--------------------"
End If
If strTextSkicka = "quit" Then
Unload Me
ElseIf strTextSkicka = "Quit" Then
Unload Me
ElseIf strTextSkicka = "QUIT" Then
Unload Me
End If
End If
End Sub
</code>
Villket sätt skulle vara det enklaste här att använda så man inte behöver ha så många if satser??


Svara

Sv: Textbox ej skrivbar??

Postades av 2006-06-14 17:23:48 - Peter Larsson

Vad är det som krånglar med "Split()-koden" menar du?
Ev. skriver du:

strInput = strArray(Len(strArray)-1)


Ang. "if-satserna", kan kan du istället använda Select (vilket är mer lättläst än många if):
(och du bör använda & istället för +)

Select Case ToLower(strInput)
    "help":
        txtCom1 = txtCom1 & _
                        vbCrLf & "|->Här är alla comandon du kan använda än så länge!" & _
                        vbCrLf & "|->--------------------" & _
                        vbCrLf & "|->| Help               |" & _
                        vbCrLf & "|->--------------------"

    "quit":
        Unload Me
End Select


/ Peter


Svara

Sv:Textbox ej skrivbar??

Postades av 2006-06-14 17:42:25 - Tobias Lindberg

Tackar och bugar ska prova koden nu =D


Svara

Sv: Textbox ej skrivbar??

Postades av 2006-06-14 17:54:19 - Tobias Lindberg

Humm,, det fungerar inte riktigt som det ska värkar det som!
Fört så blir "help": oxh "quit": röda sen så när jag startar programet så säger vb att där det står:
ToLower det står fölande som felmedelande:
Compile error:
Sub or function not defined

Sen har jag en fråga till KayAscii = 13 är väl lika med enter eller?


Svara

Sv:Textbox ej skrivbar??

Postades av 2006-06-14 19:02:28 - Peter Larsson

Sorry, "LCase" skall det vara, inte "ToLower" :) Fel språk det ;)

Nej, "KayAscii = 13" är inte Enter, men däremot är "KeyAscii = 13" det ;);)
(Använd "vbKeyEnter/vbEnter/vbKeyReturn" (eller nåt liknande) istället för 13)

/ Peter


Svara

Sv: Textbox ej skrivbar??

Postades av 2006-06-14 19:44:10 - Tobias Lindberg

Tack tack,,
Man jag får fortfarande fel med
"help": och "quit":

Compile error:
Expected: line number or label or statement or end of statement


sen så har jag en fråga om jag skriver:
if KeyAscii = 13
Din kod händer är
endif
( jag har allt detta i Private Sub txtcom1_KeyPress(KeyAscii As Integer) )


Svara

Sv:Textbox ej skrivbar??

Postades av 2006-06-14 19:56:22 - Peter Larsson

Hej igen
Sorry igen, jag som skriver för hastigt.
Koden jag skriver testar jag inte innan, så det kan finnas små syntax-fel ibland kanske, som här.
Men du är väl familiär med all syntax i VB??

Det skall vara:

Select Case ToLower(strInput)
    case "help":
        txtCom1 = txtCom1 & _
                        vbCrLf & "|->Här är alla comandon du kan använda än så länge!" & _
                        vbCrLf & "|->--------------------" & _
                        vbCrLf & "|->| Help               |" & _
                        vbCrLf & "|->--------------------"

    case "quit":
        Unload Me
End Select


Och i din kod
if KeyAscii = 13
Din kod händer är
endif

så har du glömt "Then".

Det skall alltså vara:
if KeyAscii = 13 Then
Din kod händer är
endif


/ Peter


Svara

Sv: Textbox ej skrivbar??

Postades av 2006-06-14 20:23:17 - Tobias Lindberg

Tackar och bugar..
( det där med keyascii , jag hadde bara glömt att skriva then i slutet här på sidan :P )
Men med din kod får jag fortfarande fel på denna rad:
strInput = strArray(Len(strArray) - 1)
Såhär ser strArry ut:
strArray = Split(txtCom1.Text, vbCrLf)
Felmedelande:
Run-time error '13':
Type mismatch

Syntex?? ledsen men jag är rätt så ny innan detta ämne!


Svara

Sv:Textbox ej skrivbar??

Postades av 2006-06-14 20:40:29 - Peter Larsson

Sorry igen :)

UBound skall du använda dig av.

strInput = strArray(UBound(strArray) - 1)


/ Peter


Svara

Sv: Textbox ej skrivbar??

Postades av 2006-06-14 20:57:53 - Tobias Lindberg

Tack tack nu funkar allt utom en liten sak, det är att om jag tex skriver help så komer texten upp som den ska sen flyttas den där blinkande | längst upp och hamnar på en ny egen rad..

Sen var ju egentligen min "huvud" fråga hur man gör så man inte kan ändra något som redan är skrevigt, om jag text skriver:
Help
så kommer detta upp
|->Här är alla comandon du kan använda än så länge!
|-> --------------------
|->| Help |
|-> --------------------
och jag vill ha det så man inte kan ändra det går det??


Svara

Sv:Textbox ej skrivbar??

Postades av 2006-06-14 21:22:00 - Peter Larsson

God kväll

För att kontrollera var markören befinner sig, använder du dig av property'n "SelStart" för TextBoxen.
Sedan kontrollerar du att text endast får skrivas i OMM SelStart > Len(txtCom1.Text)-Len(strInput), dvs att positionen för den blinkande markören befinner sig på den "sista raden".

SelStart = 1 för tecken 1 i textboxen, =2 för tecken 2 osv... (eller om det börjar med =0)
Alltså måste SelStart vara större än längden för all text EXKLUSIVE längden för sista raden.

Denna kontroll bör du göra för de händelser som kan inträffa, vilka ändrar markörens position (key left/right/up/down, Click osv...)

För att inaktivera inmatning (då ovanstående kriterie ej uppfylls (SelStart > Len(txtDOS.Text)-Len(strInput)), så sätter du följande i KeyDown (eller om det är KeyPress):

KeyAscii = 0

Detta avbryter inmatningen.

För att flytta markören till slutet sätter du alltså:
txtCom1.SelStart = Len(txtCom1.SelStart)


/ Peter


Svara

Sv: Textbox ej skrivbar??

Postades av 2006-06-15 11:20:06 - Tobias Lindberg

Tack så mycket, jag har fått allt att funka nu,, fick ändra en del men nu funkar allt!
Då har jag bara en fråga till, om tex någon skriver in:
Open internet
så ska ett internet fönster öppnas, det är inget kostigt med det men jag undrar hur jag ska göra om dom ska få skriva in "egen" kod där alltså regestrera egna commando:
Regestry 'internet' 'C:\Program\Internet Explorer\IEXPLORE.EXE'
hur ska jag göra det?
först blir det väll: Case "Regestry":
men sen då?
Sen där ni ser att det står ' det menas med att det ska vara en avgränsare av ett slag så man vet var det börjar och slutar för dom kan ju lika gärna regestrera 'Internet Explorer' !


Svara

Sv:Textbox ej skrivbar??

Postades av 2006-06-15 17:54:20 - Peter Larsson

Nu får du tänka till lite.
Vad behöver du göra för att parsa nedanstående?
<code>
Register "<name link>" "<program address>"
</code>

Jo, du får dela upp strängen med avgränsare " för att sedan kunna identifiera "Register".
Du får då:

 pos 0 = "register "
 pos 1 = "<name link>"
 pos 2 = ""
 pos 3 = "<program address>"


Med andra ord följande:
1. Dela upp med Split
2. Kontrollera första cell
3. Spara till fil/registret


Tredje punkten bör du kontrollera att <name link> inte redan existerar.

Du måste alltså skriva FÖR-definierade kommandon som användarna kan använda sig av.
 Register
 Delete
 Edit
 ...


Istället för att dela upp efter ", kan du också använda dig av ett reguljärt uttryck för att plocka fram de olika delarna.
Typ:
 ^register \"(.+)\" \"(.+)\"$


Om det går hämta ut det som står inom parentes på ett smidigt sätt (typ genom \1 \2), vet jag inte riktigt.
Men det går säkert.

/ Peter


Svara

Nyligen

  • 21:21 1xBet Promo Code 2025
  • 18:37 Remove the bumper in AUDI
  • 15:35 Chicken road crash game
  • 21:41 Automotive Services UK
  • 20:44 Erfarenhet av CBD-olja mot sömnpro
  • 12:13 Sex Dolls for Sale
  • 19:42 Online Casinos for Haitian Players
  • 19:38 Rekommendera något intressant

Sidor

  • Hem
  • Bli bonusmedlem
  • Läs artiklar
  • Chatta med andra
  • Sök och erbjud jobb
  • Kontakta oss
  • Studentlicenser
  • Skriv en artikel

Statistik

Antal besökare:
Antal medlemmar:
Antal inlägg:
Online:
På chatten:
4 570 902
27 965
271 779
2 233
0

Kontakta oss

Frågor runt konsultation, rådgivning, uppdrag, rekrytering, annonsering och övriga ärenden. Ring: 0730-88 22 24 | pelle@pellesoft.se

© 1986-2013 PelleSoft AB. Last Build 4.1.7169.18070 (2019-08-18 10:02:21) 4.0.30319.42000
  • Om
  • Kontakta
  • Regler
  • Cookies