Kirjautuminen

Haku

Tehtävät

Keskustelu: Ohjelmointikysymykset: VB6: VB TextBox

Sivun loppuun

Milu [29.02.2004 03:49:09]

#

Mikä asetus on pielessä, kun TextBoxsiin kirjoittaa ja sen jälkeen nuolinäppäimellä poistaa merkkejä oikealta alkaen, sitten kun viimeinenkin merkki on poistettu tulee ilmoitus

Runtime error"13"
Type mismatch

remontti-reiska [29.02.2004 09:38:59]

#

No onko sinulla minkälaista koodia ohjelmassa jo valmiina? Laitappa joku osa tähän, jos on.

setä [29.02.2004 09:39:13]

#

Mikähän VB-versio sinulla on ja millainen koodi tuossa nuolinäppäimessä. Normaalistihan nuolinäppäin siirtää vain kursoria eikä poista merkkiä vai tarkoititko BackSpace-näppäintä. Sillä ei pitäisi mitään virheilmoitusta tulla vaikka TextBox on tyhjä. (taas meni vastaukset päällekkäin!)

Milu [29.02.2004 10:45:47]

#

Juu se on toi BackSpace eikä nuolinäppäin.

Private Sub Text10_Change()
xakseli = Text10.Text
piirra3d
End Sub


Tuo xakseli kohta maalautuu keltaiseks ja sit tulee toi virheilmoitus.

koodin alussa on

Private xakseli As Integer


Ja versio on VB 6.0

Milu [29.02.2004 10:49:03]

#

Tohon texboxsiin olis tarkotus syöttää vaan numeroita onko tuo integer silti väärä

Aku2 [29.02.2004 10:51:19]

#

lainaus:

Tohon texboxsiin olis tarkotus syöttää vaan numeroita onko tuo integer silti väärä

Kokeileppa laittaa integerin tilalle long

Milu [29.02.2004 10:58:13]

#

Sama homma

pitäiskö se sitten laittaa string ja muuttaa se sen jälkeen numeraaliseks muuttujaks ettei herjaa muualla koodissa.

setä [29.02.2004 11:10:04]

#

Tyhjää merkkiä ei voi muuttaa numeroksi. Siitä se ilmeisesti herjaa. Lisää if-lause, jolla muutat tyhjän nollaksi. Tai no oikeastaan Val-funktiolla voi tyhjän muuttaa nollaksi.

Milu [29.02.2004 11:16:48]

#

Miten tarkoitit toi ei ainakaan toiminut?

Private Sub Text10_Change()
If Text10.Text = "" Then xakseli = 0
xakseli = Text10.Text
piirra3d
End Sub

ja onhan siinä näköjään vielä tuo jos laittaa vahingossa kirjaimia herjaa täytyy varmaankin tehdä se ton stringin kautta, vai mikä on käytäntö jos haluaa, että vain pelkkiä numeroita saisi syöttää kenttään?

petrinm [29.02.2004 11:25:11]

#

Tolla tavalla toimii parennmin.

Private Sub Text10_Change()
If Text10.Text = "" Then Text10.Text = 0
xakseli = Text10.Text
piirra3d
End Sub

Milu [29.02.2004 11:44:21]

#

Juu noi toimii, heh.. paitsi kun se on tyhjä ja alkaa laitaa numeroita niin se nolla jää "pyörii" sinne perään.

Miten toi on jos haluan ettei siihen pystyisi kirjoittaa muutakun numeroita pitäiskö ne kaikki numerot käydä läpi

if Text10.Text = 0 OR Text10.Text = 1 OR Text10.Text = 2 jne...

setä [29.02.2004 11:54:13]

#

Lisää KeyPress-tapatumaan suodin:

Dim X As String
X = Chr(KeyAscii)
If Text10 = "0" Then Text10 = "" '0 ei jää pyörimään
If InStr("0123456789." + Chr(9), X) = 0 Then KeyAscii = 0
'Chr(9) = BacSpace

Antti [29.02.2004 20:27:38]

#

Eikö kukaan tunne IsNumeric()-funtiota?

xakseli = IIf(IsNumeric(Text10.Text),CInt(Text10.Text), 0
piirra3d

Ja jos haluat enemmän suoritusta ehdon sisälle niin

If IsNumeric(Text10.Text) then
  xakseli = CInt(Text10.Text)
Else
  Text10.Text=0
  xakseli = 0
End if
piirra3d

setä [29.02.2004 21:15:23]

#

Varmaan moni tuntee. Tuo suodin estää väärät merkit tykkänään, joten niitä ei tarvitse korjailla. Toisaalta tuo IsNumeric on vain VB6:ssa. Tässähän se kyllä käy kun kyse on juuri siitä versiosta.

Milu [29.02.2004 21:17:49]

#

kiitos, tuosta soveltamalla pääsen haluamaani lopputulokseen.


Sivun alkuun

Vastaus

Aihe on jo aika vanha, joten et voi enää vastata siihen.

Tietoa sivustosta