Visual Basic, .NET, ASP, VBScript
 

   
   
     

Форум - Общий форум

Страница: 1 | 2 |

 

  Вопрос: Вопрос по оптимизации кода Добавлено: 20.12.07 13:26  

Автор вопроса:  KreAtoR
У меня в программе есть много TextBox в которые можно вводить только числа.

В Сабе KeyPress стоит условие

If (KeyAscii < 48 Or KeyAscii > 57) And (KeyAscii <> 8) Then KeyAscii = 0

 оно в принципе во всех одинаковое.

Незнаю как лучше сделать.

Вынести это условие в функцию, то тогда какое значение должна передавать функция????
Вынести в саб, то тогда как будет передаваться 0???

Ответить

  Ответы Всего ответов: 21  

Номер ответа: 1
Автор ответа:
 Silver Ferrum



ICQ: 422640045 

Вопросов: 12
Ответов: 144
 Профиль | | #1 Добавлено: 20.12.07 13:30
а чем тебе так не нравится?.. Всего лишь одна строка

Ответить

Номер ответа: 2
Автор ответа:
 KreAtoR



Вопросов: 120
Ответов: 438
 Профиль | | #2 Добавлено: 20.12.07 13:49
строка то одна, но стоит она везде.
десять раз копируется.
Хотелось бы ее в процедуру запихать а если надо то эту процедуру вызывать. Вопрос только как значения передать обратно.


Или думаете смысла нету так извращаться

Ответить

Номер ответа: 3
Автор ответа:
 AL



Вопросов: 7
Ответов: 21
 Профиль | | #3 Добавлено: 20.12.07 14:36
Используй массив TextBox

Ответить

Номер ответа: 4
Автор ответа:
 el-paso



Вопросов: 3
Ответов: 164
 Профиль | | #4 Добавлено: 20.12.07 15:43
Да вы чаво? Тут делов то...


Private Sub Edit_KeyPress(KeyAscii As Integer)
   ValidateKey KeyAscii
End Sub

Sub ValidateKey(ByRef KeyAscii As Integer)
   If (KeyAscii < 48 Or KeyAscii > 57) And (KeyAscii <> 8) Then KeyAscii = 0
End Sub

Ответить

Номер ответа: 5
Автор ответа:
 KreAtoR



Вопросов: 120
Ответов: 438
 Профиль | | #5 Добавлено: 20.12.07 15:46
а значение 0 возвращается???

Ответить

Номер ответа: 6
Автор ответа:
 el-paso



Вопросов: 3
Ответов: 164
 Профиль | | #6 Добавлено: 20.12.07 15:54
Да.
Можешь проверить. :))

Ответить

Номер ответа: 7
Автор ответа:
 el-paso



Вопросов: 3
Ответов: 164
 Профиль | | #7 Добавлено: 20.12.07 15:58
На будущее: погугли и почитай темку "передача параметров по значению и по ссылке".

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

Ответить

Номер ответа: 8
Автор ответа:
 KreAtoR



Вопросов: 120
Ответов: 438
 Профиль | | #8 Добавлено: 20.12.07 16:03
ByRef просматрел теперь все понятно :) сенкс

Ответить

Номер ответа: 9
Автор ответа:
 Winand



Вопросов: 87
Ответов: 2795
 Web-сайт: winandfx.narod.ru
 Профиль | | #9
Добавлено: 20.12.07 21:44
Дааа, я когда-то не знал об этом
Просто шокирован был и не понимал, что творится с переменными))

Ответить

Номер ответа: 10
Автор ответа:
 Иван



Вопросов: 34
Ответов: 53
 Web-сайт: www.harami.ru
 Профиль | | #10
Добавлено: 22.12.07 17:19
А как Вы при этом защищаете текстбокс от вставки запрещенных символов через буфер обмена?

Ответить

Номер ответа: 11
Автор ответа:
 Winand



Вопросов: 87
Ответов: 2795
 Web-сайт: winandfx.narod.ru
 Профиль | | #11
Добавлено: 22.12.07 23:35
Иван, ну ты даешь!
Никак естественно. баги&апдейты хлеб программиста))

Ответить

Номер ответа: 12
Автор ответа:
 Winand



Вопросов: 87
Ответов: 2795
 Web-сайт: winandfx.narod.ru
 Профиль | | #12
Добавлено: 22.12.07 23:45
Вообще я думаю надо проверку сделать на Validate
Если фигня какая, то ставит 0 например. А как иначе с контролвэ справиться?

Ответить

Номер ответа: 13
Автор ответа:
 



Администратор

ICQ: 278109632 

Вопросов: 42
Ответов: 3949
 Web-сайт: domkratt.com
 Профиль | | #13
Добавлено: 23.12.07 11:08
Проверку надо сделать в событии Change =) и не париться =)

Ответить

Номер ответа: 14
Автор ответа:
 Иван



Вопросов: 34
Ответов: 53
 Web-сайт: www.harami.ru
 Профиль | | #14
Добавлено: 23.12.07 13:48
Я применяю следующий способ валидации содержимого буфера обмена.
1) Устанавливаю ключевые слова (точнее, буквосочетания): NUM (только числа), INT (целые числа), IN+ (целые положительные числа), MAX(999) (максимальное значение числа) и т.п.
2) В свойстве Tag текст-бокса в дизайн-моде ввожу, например: NUM-IN+MAX(20)
3) При команде Вставить вызывается функция-валидатор, которая ищет в таге ключевые слова (при помощи оператора Like). Найдя NUM, функция проверяет, является ли текст в Буфере числом; если нет - выдается сообщение, функция возвращает False, и вставка отменяется; если да, то функция ищет следующее ключевое слово, и, найдя, производит следующую проверку. Ну, и так далее. Если все проверки прошли успешно, функция возвращает True, и производится вставка.

Ответить

Номер ответа: 15
Автор ответа:
 Winand



Вопросов: 87
Ответов: 2795
 Web-сайт: winandfx.narod.ru
 Профиль | | #15
Добавлено: 23.12.07 16:56
о, может еще и сорсы этой системы дашь?

Ответить

Страница: 1 | 2 |

Поиск по форуму



© Copyright 2002-2011 VBNet.RU | Пишите нам