Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > VB6 > Перевод . в ,


Автор: Viton 1.12.2004, 00:41
Поблема такова
Мне надо сделать так чтобы при написанеи в TextBox числа например:
96.12 оно перевелось в 96,12 smile
Можно при вводе в TextBox или при нажатие на кнопку.

Автор: cardinal 1.12.2004, 00:54
Цитата(Viton @ 30.11.2004, 23:41)
при вводе в TextBox

Код

Private Sub Text1_KeyPress(KeyAscii As Integer)
   If KeyAscii = 44 Then KeyAscii = 46
End Sub


Автор: Viton 1.12.2004, 01:13
Это работает спасибо. smile
Точнее только для ввода цифр о ввода одной ,
типа Double

Автор: cardinal 1.12.2004, 02:30
То есть не больше одной запятой чтоли?

Автор: Гость_Старуха 1.12.2004, 10:19
Похоже у него та же проблема , что у меня была в теме Переключние регистра

Автор: ~FoX~ 1.12.2004, 10:52
Цитата(cardinal @ 1.12.2004, 02:30)
То есть не больше одной запятой чтоли?

Если да, то:

Код

Dim Flag As Boolean

Private Sub Form_Load()
 Flag = False
End Sub

Private Sub Text1_KeyPress(KeyAscii As Integer)
   If KeyAscii = 44 And Flag = False Then
       KeyAscii = 46
       Flag = True
   ElseIf KeyAscii = 44 And Flag <> False Then
       KeyAscii = 0
   End If
End Sub


Примерно так.

Автор: cardinal 1.12.2004, 18:20
Или так
Код

Dim Flag As Boolean

Private Sub Form_Load()
Flag = False
End Sub

Private Sub Text1_KeyPress(KeyAscii As Integer)
  If KeyAscii = 44 And Flag = False Then
      KeyAscii = 46
      Flag = True
  ElseIf KeyAscii = 44 Then
      KeyAscii = 0
  End If
End Sub

smile

Автор: Staruha 1.12.2004, 21:24
А может все гораздо проще

Код

  Dim c  As Double
 c = TextBox1.Text

Автор: cardinal 1.12.2004, 21:27
Старуха, а если запятых много понаставлено?

Автор: Staruha 1.12.2004, 21:40
Почитай в самом начале о чем он пишет и TextBox как то на VBA больше встречается.И у меня была такая проблема с формой. и еще добавить надо
c = CDbl(Replace(TextBox1.Text, ".", ",")) ' что б ошибок не было ,как учил bankuss

Автор: cardinal 1.12.2004, 21:48
А что будет если в TextBox1.Text написано 96,56,6?

Автор: Staruha 1.12.2004, 23:09
Если много запятых -это текст,там и так проблем не будет.

Автор: Viton 1.12.2004, 23:39
Цитата(cardinal @ 1.12.2004, 02:30)
То есть не больше одной запятой чтоли?

Да мне нужно чтобы было не больше одной запятой

Автор: Viton 2.12.2004, 00:12
как проверить наличие введённых заятых?

Автор: ~FoX~ 2.12.2004, 10:54
Viton
Читай поста кардинала и мои

Автор: Гость_Старуха 2.12.2004, 13:04
Private Sub CommandButton1_Click()
Dim str As String, str1 As String, i As Integer, k As Integer
str = TextBox1.Text
strLen = Len(str)

For i = 1 To strLen
str1 = Mid(str, i, 1)
If Asc(str1) = 44 Then
k = k + 1

MsgBox "Ура!Запятая" & k

End If
Next i

End Sub


Автор: ~FoX~ 2.12.2004, 15:30
2Старуха
Изврат.

Автор: Staruha 2.12.2004, 17:52
Почему?

Автор: cardinal 3.12.2004, 02:14
Старуха, потому, что когда ввели уже поздно проверять, где и сколько запятых...

Автор: Viton 4.12.2004, 14:37
Спасибо.
Вот код котор я усовершенствовал и что мне нужно было если будут другие варианты то пишите.
Код

Public Function KeyFilter(i As Integer, s As String) As Integer
Select Case i
Case 48 To 57 '' Числа от 0 до 9
KeyFilter = i
Case 8 '' Клавиша Backspace
KeyFilter = i
Case 44 '' Клавиша запятой с проверкой ее предыдущего ввода
If InStr(1, s, ",") = 0 Then
KeyFilter = i
Else
Beep
KeyFilter = 0
End If
Case 9
KeyFilter = i
Case Else
Beep
KeyFilter = 0
End Select
End Function



Private Sub Text1_KeyPress(KeyAscii As Integer)
If KeyAscii = 46 Then KeyAscii = 44
KeyAscii = KeyFilter(KeyAscii, Text1.Text)

End Sub


Автор: cardinal 4.12.2004, 15:31
А помоему если убрать все строки
Код

KeyFilter = 0

то ничего не изменится? smile

А вообще если речь идет о "фильтре", то загляни сюда:
http://forum.vingrad.ru/index.php?showtopic=27659
Получится гораздо изящней. smile

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)