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


Hur får man en textbox markerad?

Postades av 2006-12-06 22:16:38 - Peter Andersson, i forum visual basic - allmänt, Tråden har 29 Kommentarer och lästs av 1090 personer

Ska mata in värden i 3 textboxar och flyttar mellan dem med "enter". Efter sista boxen går markören tillbaka till första, och då vill jag att det värdet som finns där blir helt markerat så man lätt kan skriva in nytt utan att deleta eller markera manuellt. Setfokus räcker ju inte. Sen vill jag att en viss beräkning mellam de 3 boxarna uppdateras varje gång någon av dem ändras (men bara om alla är ifyllda), och svaret kommer i textbox4.

Tack!


Svara

Sv: Hur får man en textbox markerad?

Postades av 2006-12-06 23:58:35 - Sven Åke Persson

Svar på första delen av din fråga löser du efter denna princip.

Se till att dina TextBoxar har TabIndex i löpande ordning efter varandra.

Är det som jag misstänker att du bara tillåter siffror i TextBoxarna ?
<code>
Option Explicit
Private Sub Text1_KeyPress(KeyAscii As Integer)
If KeyAscii = 13 Then SendKeys "{TAB}", True
End Sub

Private Sub Text2_KeyPress(KeyAscii As Integer)
If KeyAscii = 13 Then SendKeys "{TAB}", True
End Sub

Private Sub Text3_KeyPress(KeyAscii As Integer)
Dim sLen As Long
If KeyAscii = 13 Then
Text1.SetFocus
sLen = Len(Text1.Text)
Text1.SelStart = 0
Text1.SelLength = sLen
End If
End Sub
</code>


Svara

Sv:Hur får man en textbox markerad?

Postades av 2006-12-07 03:15:46 - Peter Andersson

Tack Sven!

Ja det är rätt att jag bara ska tillåta siffror. De 3 textboxarna som ska utföra beräkningar, med text4 som svar, ska styras av 4 optionbuttons om vilken beräkning som ska göras. Går kanske inte, så jag måste kanske göra 4 olika former.

/P


Svara

Sv: Hur får man en textbox markerad?

Postades av 2006-12-07 06:50:29 - Sven Åke Persson

<b>så jag måste kanske göra 4 olika former. </b>
Nej det behöver du inte. Då blir nästa steg så här
<code>
Private Sub Text1_KeyPress(KeyAscii As Integer)
Select Case KeyAscii
'Tillåt bara BackSpace,Enter,Komma,Minus,Punkt,siffror 0-9
Case 8, 13, 44, 45, 46, 48 To 57
If KeyAscii = 13 Then SendKeys "{TAB}", True
Case Else
KeyAscii = 0
End Select
End Sub

Private Sub Text2_KeyPress(KeyAscii As Integer)
Select Case KeyAscii
Case 8, 13, 44, 45, 46, 48 To 57
If KeyAscii = 13 Then SendKeys "{TAB}", True
Case Else
KeyAscii = 0
End Select
End Sub

Private Sub Text3_KeyPress(KeyAscii As Integer)
Select Case KeyAscii
Case 8, 13, 44, 45, 46, 48 To 57
If KeyAscii = 13 Then
Text1.SetFocus
Text1.SelStart = 0
Text1.SelLength = Len(Text1.Text)
End If
Case Else
KeyAscii = 0
End Select
End Sub
</code>


Svara

Sv:Hur får man en textbox markerad?

Postades av 2006-12-10 00:10:39 - Peter Andersson

Tack igen!

Måste ha den koden för alla textboxar. Funkar bra, men hur får jag bort ljudet vid varje enterslag?

Vill utföra en beräkning t.ex. så här:
om opt1.value=true, så ska txt4 = txt1*txt2*txt3
och om opt2.value=true, så ska txt4 = txt1/(txt2*txt3)
beräkningen vill jag utföra vid enter av alla dvs. txt1, txt2 o txt3, men bara om alla har ett värde.

Låter lite krångligt men du förstår säkert. Vet inte hur jag ska mickla ihop alla ifsatser, får bara error.

/P


Svara

Sv: Hur får man en textbox markerad?

Postades av 2006-12-11 14:50:20 - Daniel Melin

skapa dina textboxar som en array så slipper du ha samma kod på flera ställen


Svara

Sv:Hur får man en textbox markerad?

Postades av 2006-12-11 20:17:42 - Peter Andersson

Ska titta på det men jag tror ändå jag får göra en form per beräkning. Tack ändå! /P


Svara

Sv: Hur får man en textbox markerad?

Postades av 2006-12-11 22:30:40 - Sven Åke Persson

Jag var också inne på att han skulle göra en TextBox Control array
men då det är olika kod i 1 2 och 3 så blir det ingen större vinst.

Sluta tjata om att du behöver en extra Form det blir bara strul.
Förmodar att du funderar på dina OptionBoxar.
Dom läger du lämpligast i en liten Frame som ligger på din grund Form.


Svara

Sv:Hur får man en textbox markerad?

Postades av 2006-12-11 23:51:34 - Sven Åke Persson

Här får du ett principexempel som fungerar som jag tror du vill ha det.

Det är onödigt att ha Text4, du skall aldrig skriva i den. Då blir Label bäst.

Du kan ta hem Programarkivet:Matte med TextBoxar och kolla mitt förslag
<code>
Option Explicit
Dim tal1 As Double, tal2 As Double, tal3 As Double
Private Sub Option1_Click()
Text1.SetFocus
End Sub
Private Sub Option2_Click()
Text1.SetFocus
End Sub
Private Sub Text1_KeyPress(KeyAscii As Integer)
Select Case KeyAscii
'Tillåt bara BackSpace,Enter,Komma,Minus,Punkt,siffror 0-9
Case 8, 13, 44, 45, 46, 48 To 57
'Alltid punkt som decimalavskiljare
If KeyAscii = 44 Then KeyAscii = 46
If KeyAscii = 13 Then
If Option1.Value And Len(Text2.Text) And Len(Text3.Text) Then Call Multiplikation
If Option2.Value And Len(Text2.Text) And Len(Text3.Text) Then Call Division
SendKeys "{TAB}"
End If
Case Else
KeyAscii = 0
End Select
End Sub
Private Sub Text2_KeyPress(KeyAscii As Integer)
Select Case KeyAscii
Case 8, 13, 44, 45, 46, 48 To 57
If KeyAscii = 44 Then KeyAscii = 46
If KeyAscii = 13 Then
If Option1.Value And Len(Text2.Text) And Len(Text3.Text) Then Call Multiplikation
If Option2.Value And Len(Text2.Text) And Len(Text3.Text) Then Call Division
SendKeys "{TAB}"
End If
Case Else
KeyAscii = 0
End Select
End Sub
Private Sub Text3_KeyPress(KeyAscii As Integer)
Select Case KeyAscii
Case 8, 13, 44, 45, 46, 48 To 57
If KeyAscii = 44 Then KeyAscii = 46
If KeyAscii = 13 Then
If Option1.Value And Len(Text2.Text) And Len(Text3.Text) Then Call Multiplikation
If Option2.Value And Len(Text2.Text) And Len(Text3.Text) Then Call Division
Text1.SetFocus
Text1.SelStart = 0
Text1.SelLength = Len(Text1.Text)
End If
Case Else
KeyAscii = 0
End Select
End Sub
'om opt1.value=true, så ska txt4 = txt1*txt2*txt3
'och om opt2.value=true, så ska txt4 = txt1/(txt2*txt3)
Private Sub Multiplikation()
tal1 = Val(Text1.Text)
tal2 = Val(Text2.Text)
tal3 = Val(Text3.Text)
Label1.Caption = Str$(tal1 * tal2 * tal3)
End Sub
Private Sub Division()
tal1 = Val(Text1.Text)
tal2 = Val(Text2.Text)
tal3 = Val(Text3.Text)
Label1.Caption = Str$(tal1 / (tal2 * tal3))
End Sub

</code>


Svara

Sv: Hur får man en textbox markerad?

Postades av 2006-12-12 01:36:57 - Sven Åke Persson

Nu orkar jag inte mer idag. Tror jag fick till det.

Kolla Programarkivet:Matte med TextBoxar


Svara

Sv:Hur får man en textbox markerad?

Postades av 2006-12-12 12:19:27 - Peter Andersson

Detta ser ju ruskigt bra ut. Jag lovar att inte gnälla mer om fler former. Här trillar ju mer än en 25-öring ner. Tack! Ska kolla på det ikväll om jag hinner, men inatt måste jag i varje fall sova.

Tack!
/P


Svara

Sv: Hur får man en textbox markerad?

Postades av 2006-12-13 02:28:20 - Sven Åke Persson

Kom på efter en god natt sömn att mitt kör med And operatorn är onödig.
Dessa rader skall ändras till
<code>
If Option1.Value Then Call Multiplikation
If Option2.Value Then Call Division
</code>
Sub Division skall ändras till
<code>
Private Sub Division()
On Error GoTo DivError
tal1 = Val(Text1.Text)
tal2 = Val(Text2.Text)
tal3 = Val(Text3.Text)
Label1.Caption = Str$(tal1 / (tal2 * tal3))
Exit Sub
DivError:
End Sub
</code>


Svara

Sv:Hur får man en textbox markerad?

Postades av 2006-12-13 12:15:36 - Peter Andersson

Aha, men är du säker på det? För något måste väl kolla så att txt2 & txt3 är redan ifyllda. Min tanke är ju att när man gjort en beräkning ska man kunna ändra värde i vilken ruta som helst och sen på enter få ett nytt svar. Jag vill och kan inte få ett svar om inte alla rutor har ett värde. Är du med mig?

Vad gör då "Len()"?

/P


Svara

Sv: Hur får man en textbox markerad?

Postades av 2006-12-13 16:30:29 - Sven Åke Persson

Så blir det
Vid multipikation blir svaret 0 intill alla textboxar är ifyllda.
Vid division händer ingenting förrän alla är ifyllda.

Kolla mitt uppskick Programarkivet:Matte med TextBoxar TextBoxar.exe
Jag har "moddat" den så det nya gäller.

Len(Text1.Text) lämnar svar på hur många tecken det finns i TextBoxen.
Lämnar 0 (Noll) om den är tom dvs. <b>False</b> i vårt exempel.


Svara

Sv:Hur får man en textbox markerad?

Postades av 2006-12-13 18:10:10 - Peter Andersson

Den är redan nerladdad. Tack för hjälpen! /P


Svara

Sv: Hur får man en textbox markerad?

Postades av 2006-12-14 01:03:07 - Sven Åke Persson

En sista modifiering.
Sub Multiplikation och Sub Division bör ändras till detta.
<code>
Private Sub Multiplikation()
tal1 = Val(Text1.Text)
tal2 = Val(Text2.Text)
tal3 = Val(Text3.Text)
If (tal1 * tal2 * tal3) <> 0 Then
Label1.Caption = Str$(tal1 * tal2 * tal3)
Else
Label1.Caption = ""
End If
End Sub
Private Sub Division()
On Error GoTo DivError
tal1 = Val(Text1.Text)
tal2 = Val(Text2.Text)
tal3 = Val(Text3.Text)
Label1.Caption = Str$(tal1 / (tal2 * tal3))
Exit Sub
DivError:
Label1.Caption = ""
End Sub
</code>


Svara

Sv:Hur får man en textbox markerad?

Postades av 2006-12-14 18:11:59 - Peter Andersson

Okej! Men mitt är lite krångligare än så. Har en del error, men vi börjar med ett:
Ska räkna fram ett varvtal från två värden i txt1 & txt2 & 2 fasta värden.


Private Sub Varvtal()
vSkarHast = Val(txt1.Text)
vFrasDia = Val(txt2.Text)
vVarvTal = Str$(vSkarHast * vTusen) / (vFrasDia * vPi)
lblSvar.Caption = FormatNumber(vVarvTal, 0)
End Sub

Den verkar hänga sig på formeln. Har gjort vTusen=100 & vPi=3.14 men det är ju egentligen två konstanter. Vet inte hur jag hanterar det. Ska kanske skriva talen direkt i formeln. Det är i varje fall inget som hjälper.

/P


Svara

Sv: Hur får man en textbox markerad?

Postades av 2006-12-15 01:24:47 - Sven Åke Persson

Då skulle det kunna bli så här.
Du har förmodligen gjort vTusen och vPi i en Lokal Sub
Ta bort dom och kör så här.
Konstanten vTusen är onödig, använd 0.0314195 som vPi enl.nedan
<code>
Option Explicit
'Om vSkarHast och vFrasDia innehåller decimaler .
'får du ändra dessa till As Single
Dim vSkarHast As Long, vFrasDia As Long, vVarvTal As Single
Const V_PI = 0.0314159
'Har gjort vTusen=100 & vPi=3.14 men det är ju egentligen två konstanter.
'Skall V_TUSEN inte vara Tusen ?
Private Sub Txt1_KeyPress(KeyAscii As Integer)
Select Case KeyAscii
'Tillåt bara BackSpace,Enter,Komma,Minus,Punkt,siffror 0-9
Case 8, 13, 44, 45, 46, 48 To 57
'Alltid punkt som decimal avskiljare
If KeyAscii = 44 Then KeyAscii = 46
If KeyAscii = 13 Then
Call Varvtal
SendKeys "{TAB}"
End If
Case Else
KeyAscii = 0
End Select
End Sub

Private Sub Txt2_KeyPress(KeyAscii As Integer)
Select Case KeyAscii
'Tillåt bara BackSpace,Enter,Komma,Minus,Punkt,siffror 0-9
Case 8, 13, 44, 45, 46, 48 To 57
'Alltid punkt som decimal avskiljare
If KeyAscii = 44 Then KeyAscii = 46
If KeyAscii = 13 Then
Call Varvtal
txt1.SetFocus
txt1.SelStart = 0
txt1.SelLength = Len(txt1.Text)
End If
Case Else
KeyAscii = 0
End Select

End Sub
Private Sub Varvtal()
On Error GoTo VarvTalError
vSkarHast = Val(txt1.Text)
vFrasDia = Val(txt2.Text)
vVarvTal = vSkarHast / (vFrasDia * V_PI)
lblSvar.Caption = Int(vVarvTal)
VarvtalOk:
Exit Sub
VarvTalError:
' Division med 0 (noll)
lblSvar.Caption = ""
Resume VarvtalOk
End Sub
</code>


Svara

Sv:Hur får man en textbox markerad?

Postades av 2006-12-15 12:35:34 - Peter Andersson

Tack! Ska testa detta hemma ikväll. vTusen är naturligtvis 1000. Men varför ska jag har Pi till 0.0314... då måste jag ju multiplicera med 100 också annars blir det fel.

Detta var altså EN beräkning. Nu ska det vara 4 beräkningar som ska samsas om 3 txtboxar. Där koden i varje "Sub txt_KeyPress" är annorlunda beroende på vilken av de 4 optButton som är True.

T.ex. så ska txt3 bara användas i 2 av beräkningarna, så i txt2 ska ibland vid enter gå till txt3 och ibland till txt1.

Det har jag försökt lösa med många If-satser, men då har jag plötsligt fått ett fel att "Case Else ligger utaför Select Case-satsen". Kan det va så att man inte kan ha hur många If-satser som helst?

Förstår du nu varför jag "gnällde" om att ha en Form för varje beräkning? Då kan man bygga varje "Sub txt_KeyPress" efter hur just den beräkningen ska gå till.

Behöver det va någon nackdel att göra så? Man kan ju göra ett MDI-fönster med 4 "barn". Det syns ju aldrig när man kör programmet. Och det är väl ingen större risk att det blir för "tungt"?

En sak är säker: Jag har jäkligt bra nytta av din kod även med flera Former.

Tack!

Hålligång!!!
/P


Svara

Sv: Hur får man en textbox markerad?

Postades av 2006-12-15 17:34:24 - Sven Åke Persson

Nu börjar jag bli trött på dig.Om det är tusen vilket jag misstänkte så blir det klart 0.00314159.
Du har nu grundkod för alla alternativ, läs och använd efter behov.
<code>
'Om vSkarHast och vFrasDia innehåller decimaler .
'får du ändra dessa till As Single
Dim vSkarHast As Long, vFrasDia As Long, vVarvTal As Single
Const V_PI = 0.00314159
</code>
Du skall inte ha fler Formar.Lägg hellre 2 3 Frame:s på En Form.
I dessa Frames lägger du det antal TextBoxar och OptionBoxar som du behöver.

Du lägger Frames: rätt över varandra Visual=False resp Visual = True Dvs ex 2 är False och en True.
Lägg Label.s till vänster som på denna Pelles sida.
När du klickar på någon av dom så släcker du 2-3 av Frames och har bara en, den aktuella tänd.


Svara

Sv:Hur får man en textbox markerad?

Postades av 2006-12-15 18:50:14 - Peter Andersson

Ja jag började bli rädd för det. Hehe... Men jag tror att du alltid kommer att ställa upp, schysst och nyfiken som du är.

Men en sak har du missuppfattat. Pi (3,14) har man när man ska räkna ut omkretsen med diametern som given. Tusen (1000) har man för att omvandla mm till m. Så de hör inte ihop även om man har de i samma formel.

Att använda Frames på det sättet har jag aldrig tänkt på men jag tackar för tipset. Det ska jag säkert fixa mer eller mindre.

Ha en trevlig kväll!

/P


Svara

Sv: Hur får man en textbox markerad?

Postades av 2006-12-15 19:34:51 - Sven Åke Persson

Men snälla.
<b>vVarvTal = vSkarHast / (vFrasDia * 0.00314159)
Ger samma svar som
vVarvTal = (vSkarHast * 1000) / (vFrasDia * 3.14159) .</b>

Jag tycker ditt projekt är småtrevlig terapi.
Sitter just och skruvar på en principlösning till dig med Frame:s

Jag kommer att uppdater Programarkivet:Matte med TextBoxar strax återkommer på denna kanal.

Ha det
SvenPon


Svara

Sv:Hur får man en textbox markerad?

Postades av 2006-12-15 20:27:41 - Sven Åke Persson

Oki igen

Nu har jag lagt upp en uppdaterad version med Frame:s på
Frame 3 o 4 får du själv bygga vidare på

Programarkivet:Matte med TextBoxar


Svara

Sv: Hur får man en textbox markerad?

Postades av 2006-12-15 21:06:41 - Peter Andersson

Tackar och bugar. /P


Svara

Sv:Hur får man en textbox markerad?

Postades av 2006-12-15 21:12:54 - Sven Åke Persson

När man skriver prog så här "flying" så blir det "buggar"

Kul att höra vilka "buggar" Ni hittar.

Nyfiken Sven

Jobba vidare Peter du lär dig en massa.

Snälla Sven ;-) IKVÄLL !!!!!

I morgon är det som vanligt !


Svara

Sv: Hur får man en textbox markerad?

Postades av 2006-12-15 21:26:43 - Sven Åke Persson

<b>Pi (3,14) har man när man ska räkna ut omkretsen med diametern som given. </b>

Garvar läppen av mig. *LOL*

Jahaaaaaaaaaaaaa....... är det så det är *LOL*


Svara

Sv:Hur får man en textbox markerad?

Postades av 2006-12-15 22:37:48 - Peter Andersson

Ironiskt...

...fattar väl att du fattar, men när du ville ta 1000 * entusendelsPi för att få Pi var jag ju tvungen att förklara.

Lite petitesser:
Ljudet vid tryck på enter, hörs som om datorn inte tar kommandot. Kan man koda bort det.
Txt1.SelStart = 0 ? Vad händer här?
Resume VarvtalOk? Fattar inte detta heller.

/P


Svara

Sv: Hur får man en textbox markerad?

Postades av 2006-12-16 01:39:46 - Sven Åke Persson

Phuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuu............................
Ljudet skiter jag i. Sök i Kontrollpanelen !
Snygg programmering:
<b>Txt1.SelStart = 0 ? Vad händer här?
Resume VarvtalOk? Fattar inte detta heller.</b>

SelStart = 0 (börja just före första tecken)

Resume VarvtalOk. Samma här, snygg programmering.
Om det inträffat ett fel så gå tillbaka till Exit Sub

Ex. här om man försöker dividera med 0 (noll) Dvs. tom TextBox

<b>Ett gott råd ! Krångla inte nu.</b> Kör min kod och lär dig och kom med konstruktiv kritik. ;-) :-)

Du är ju som en av dom första oskulder jag förförde. ;-)


Svara

Sv: Hur får man en textbox markerad?

Postades av 2006-12-16 15:10:48 - Thomas Roman

<b>Ljudet vid tryck på enter, hörs som om datorn inte tar kommandot. Kan man koda bort det.</b>

Lägg till KeyAscii = 0 så får du bort ljudet.

<code>
If KeyAscii = 13 Then
KeyAscii = 0
'resten av din kod
End If
</code>


Thomas


Svara

Sv:Hur får man en textbox markerad?

Postades av 2006-12-16 18:22:07 - Peter Andersson

Tack

/P


Svara

Nyligen

  • 19:55 kick-off med fokus på hälsa?
  • 19:53 kick-off med fokus på hälsa?
  • 16:24 Föreslå en skönhetsklinik online
  • 16:23 Föreslå en skönhetsklinik online
  • 18:42 Hvor finder man håndlavede lamper
  • 18:41 Hvor finder man håndlavede lamper
  • 16:36 Allt du behöver veta om keramiskt
  • 16:14 Vem anlitar man egentligen när tak

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 725
27 958
271 751
469
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