0 / 0 / 0
Регистрация: 22.05.2009
Сообщений: 5
1

Замена символа десятичного разделителя в TextBox

10.11.2009, 18:36. Показов 1722. Ответов 1
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Помогите решить проблемку с преобразованием значений в тип который воспринимает запятую. Есть 9 - textBox(ов) в которые вводятся числовые значения и после их ввода происходит вычисление. Все сделано через функцию Val которая в качестве десятичного разделителя воспринимает только точку и числа после запятой не воспринимаются и если значение меньше 1 к примеру 0,2 то воспринимает как =0

Как можно сделать, что бы textBox воспринимал корректно значения с запятой и отдавал фокус другому textBox.
Установлена локализованная русская Win2000 у которой в настройках языков и стандартов в качестве разделителя установлен (,). В свой ствах textBox в данном случае txtPow0 до txtPow9 >> DataFomat установил Custom >>##,###
А вот и кусок исходника.
Visual Basic
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
If Val(txtPow0) <= 0 Then
   frmVvod.txtPow0.SetFocus
    Else
If Val(txtPow1) <= 0 Then
       frmVvod.txtPow1.SetFocus
    Else
If Val(CSng(txtPow2) <= 0 Then
       frmVvod.txtPow2.SetFocus
    Else
If Val(txtPow3) <= 0 Then
       frmVvod.txtPow3.SetFocus
    Else
If Val(txtPow4) <= 0 Then
       frmVvod.txtPow4.SetFocus
    Else
If Val(txtPow5) <= 0 Then
      frmVvod.txtPow5.SetFocus
    Else
If Val(txtPow6) <= 0 Then
      frmVvod.txtPow6.SetFocus
    Else
If Val(txtPow7) <= 0 Then
      frmVvod.txtPow7.SetFocus
    Else
If Val(txtPow8) <= 0 Then
       frmVvod.txtPow8.SetFocus
End If
       End If
             End If
                    End If
                End If
            End If
    End If
End If
End If
 
If txtPower.Text = '' Then
MsgBox 'sjkdklajdklsajdkl      & 'dfsfsdfsdfdsfsd' _
      , vbExclamation, 'Pizdec'
    Exit Sub
End If
RaiseEvent OkQuery
If Not blCancelClear Then Call ClearVvod Else blCancelClear = False
 
End Sub 
'---------------------------------------------  
Public Sub Calculate()
Dim DotPower0 As Single
Dim DotPower1 As Single
Dim DotPower2 As Single
Dim DotPower3 As Single
Dim DotPower4 As Single
Dim DotPower5 As Single
Dim DotPower6 As Single
Dim DotPower7 As Single
Dim DotPower8 As Single
If Val(txtPow0.Text) > 0 Then
    If Val(txtPow1.Text) > 0 Then
        If Val(txtPow2.Text) > 0 Then
            If Val(txtPow3.Text) > 0 Then
                If Val(txtPow4.Text) > 0 Then
            If Val(txtPow5.Text) > 0 Then
        If Val(txtPow6.Text) > 0 Then
    If Val(txtPow7.Text) > 0 Then
If Val(txtPow8.Text) > 0 Then
DotPower0 = Val(txtPow0.Text) * 1.1 / (2 * 3.24 * 3.141592) * (1 / 16)
DotPower1 = Val(txtPow1.Text) * 1.1 / (2 * 3.24 * 3.141592) * (1 / 8)
DotPower2 = Val(txtPow2.Text) * 1.1 / (2 * 3.24 * 3.141592) * (1 / 16)
DotPower3 = Val(txtPow3.Text) * 1.1 / (2 * 3.24 * 3.141592) * (1 / 8)
DotPower4 = Val(txtPow4.Text) * 1.1 / (2 * 3.24 * 3.141592) * (1 / 4)
DotPower5 = Val(txtPow5.Text) * 1.1 / (2 * 3.24 * 3.141592) * (1 / 8)
DotPower6 = Val(txtPow6.Text) * 1.1 / (2 * 3.24 * 3.141592) * (1 / 16)
DotPower7 = Val(txtPow7.Text) * 1.1 / (2 * 3.24 * 3.141592) * (1 / 8)
DotPower8 = Val(txtPow8.Text) * 1.1 / (2 * 3.24 * 3.141592) * (1 / 16)
txtPower.Text = Round(DotPower0 + DotPower1 + DotPower2 + DotPower3 + DotPower4 + DotPower5 + DotPower6 + DotPower7 + DotPower8, 2)
''''txtUdAkt.Text = Round(2.146 * 1.1 * (txtPower.Text / 1000) * 0.0287 / (2 * 3.24 * 3.141592), 7)
 
End If
      End If
               End If
                    End If
            End If
        End If
    End If
End If
End If
 
End Sub
Private Sub txtPow0_Change()
Call Calculate
End Sub
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
10.11.2009, 18:36
Ответы с готовыми решениями:

Как определить символ десятичного разделителя?
Подскажите, пожалуйста, как можно определить в программе какой символ является десятичным...

Замена десятичного разделителя
Здравствуйте! Возникла следующая проблема: Требуется, чтобы у дробных чисел десятичный...

Проблема с настройками десятичного разделителя
Возникла проблема программного конструирования SQL-строки: Десятичным разделителем на моем...

Замена символа в textbox
Идея такова в первый textbox вводится строка, по клику программа находит определенный символ в...

1
1 / 1 / 1
Регистрация: 02.04.2009
Сообщений: 135
10.11.2009, 18:47 2
Попробуйте вместо Val использовать функцию CDbl
0
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
10.11.2009, 18:47
Помогаю со студенческими работами здесь

Замена символа в TextBox
нашёл!

Как временно изменить значение десятичного разделителя в системе?
1. Сохранить текущий десятичный разделитель существующий в системе в настоящее время 2. Подменить...

Как получить знак десятичного разделителя для текущей культуры
Как получить знак десятичного разделителя для текущей культуры? Добавлено через 27 минут Ответ:...

Как преобразовать строку в число без учёта десятичного разделителя?
В системе установлен десятичный разделитель &lt;запятая&gt;. В строке сформировано число 2,5...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
2
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2023, CyberForum.ru