Visual Basic, .NET, ASP, VBScript
 

   
   
     

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

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

 

  Вопрос: Проверка заполнения всех полей формы. Добавлено: 01.05.07 14:37  

Автор вопроса:  fuzytsfcrew | Web-сайт: video-edit.com.ua | ICQ: 314339 

Ответить

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

Номер ответа: 31
Автор ответа:
 HACKER


 

Разработчик Offline Client

Вопросов: 236
Ответов: 8362
 Профиль | | #31 Добавлено: 03.05.07 20:13
2 Серёга
А зачем для этого хук? Помойму правильнее

Private Sub Form_Unload(Cancel As Integer)
    Dim TxtObj As Object
    For Each TxtObj In Controls
        If TypeOf TxtObj Is TextBox Then
            If Trim$(TxtObj.Text) = "" Then
                MsgBox "Не все поля заполнены!", vbExclamation, "Заполните поле!"
                TxtObj.SetFocus
                Cancel = 1
                Exit Sub
            End If
        End If
    Next
End Sub


Ответить

Номер ответа: 32
Автор ответа:
 Серёга



ICQ: 262809473 

Вопросов: 17
Ответов: 561
 Web-сайт: houselab.narod.ru
 Профиль | | #32
Добавлено: 03.05.07 20:46
Конечно согласен :)
...
If TypeOf TxtObj Is TextBox Then
...

Я даже не знал, что так можно :)))
Век живи - век учись!

Ответить

Номер ответа: 33
Автор ответа:
 D o c a l



ICQ: 408802757 

Вопросов: 76
Ответов: 985
 Web-сайт: www.doc-source.pp.net.ua/
 Профиль | | #33
Добавлено: 06.05.07 15:07
Ми себе мозги долбали пришел Hacker и все за минуту решил:) учитесь не зря он лидер

Ответить

Номер ответа: 34
Автор ответа:
 fuzytsfcrew



ICQ: 314339 

Вопросов: 30
Ответов: 102
 Web-сайт: video-edit.com.ua
 Профиль | | #34
Добавлено: 21.05.07 10:11
Что-то все вроде понятно и не понятно!
Если мне нужна эта проверка, для того, чтоб изменить у некой кнопки значение "Enabled"?
Я пишу код для каждого текстбокса:

cmd.enabled = text1.text <> "" And text2.text ... и т.д.

но мне он выдает ошибку: "Method or data member not found!"
при этом ссылается на то, что у cmd нету такого свойства и предлагает только 4 свойства для него(http://visual-basic.by.ru/pictures/cmd.jpg).
Помогите!!!

Ответить

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



ICQ: 422640045 

Вопросов: 12
Ответов: 144
 Профиль | | #35 Добавлено: 21.05.07 14:12
у тебя создан масив контролов кнопок с названием cmd ! проверь свойство Index, надо чтоб там ничего не было!

Ответить

Номер ответа: 36
Автор ответа:
 HACKER


 

Разработчик Offline Client

Вопросов: 236
Ответов: 8362
 Профиль | | #36 Добавлено: 21.05.07 20:24
cmd.enabled = text1.text <> "" And text2.text ... и т.д.
ты так и в проге пишешь или только на форуме? Если в проге, то я бы на месте компилятора скинул тебя вообще в BSOD, а то Method or data lala topola - это сильно любезно...

Ответить

Номер ответа: 37
Автор ответа:
 Серёга



ICQ: 262809473 

Вопросов: 17
Ответов: 561
 Web-сайт: houselab.narod.ru
 Профиль | | #37
Добавлено: 21.05.07 21:34
проверь свойство Index, надо чтоб там ничего не было!

Слушай, а может у него задумка такая, что надо юзать именно массив? Что скажешь? :)

Ответить

Номер ответа: 38
Автор ответа:
 HACKER


 

Разработчик Offline Client

Вопросов: 236
Ответов: 8362
 Профиль | | #38 Добавлено: 22.05.07 01:58
Да, обращение не комне, но я скажу...
Всё дело в том, что Silver Ferrum в глаза невидел VBA, или перепутал раздел форума... Ну максимум поверю что он нажимал когда-то Alt+F11, но потом сразу же нажал Alt+F4...

К чему это я?
проверь свойство Index, надо чтоб там ничего не было!

Спешу обрадовать, свойства Index в VBA нет совсем, в отличии от VB6 :)

Собственно поэтому ответ №31 и наваян через For Each :)

Ответить

Номер ответа: 39
Автор ответа:
 Серёга



ICQ: 262809473 

Вопросов: 17
Ответов: 561
 Web-сайт: houselab.narod.ru
 Профиль | | #39
Добавлено: 22.05.07 15:50
А при чём тут VBA?

Ответить

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



ICQ: 422640045 

Вопросов: 12
Ответов: 144
 Профиль | | #40 Добавлено: 22.05.07 16:27
Посмотри повнимательней, HACKER. Помойму нигде не написано, что этот раздел форума посвящен VBA.. Он просто назывется "Общий форум".. И в вопросе нигде не указано, что требуется пример на VBA.

Ответить

Номер ответа: 41
Автор ответа:
 HACKER


 

Разработчик Offline Client

Вопросов: 236
Ответов: 8362
 Профиль | | #41 Добавлено: 22.05.07 16:53
Тогда наверно я перепутал раздел форума, а может эту тему когда то из ВБА сюда перенесли? Ок... извиняюсь

Ответить

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



ICQ: 422640045 

Вопросов: 12
Ответов: 144
 Профиль | | #42 Добавлено: 22.05.07 16:55
..ничего страшного :)

Ответить

Номер ответа: 43
Автор ответа:
 Mihalыch



ICQ: 373-509-101 

Вопросов: 56
Ответов: 330
 Профиль | | #43 Добавлено: 23.05.07 05:21
Можно так:


'Form
Private Sub Text1_Change()
    Call InputControl(Text1, 0, 500, 0, icRus, icYes)
End Sub

'Module
Option Explicit
    Public Enum MarkView
        icRus = 44
        icUs = 46
    End Enum
    Public Enum ShowErrMsg
        icNo = 0
        icYes = 1
    End Enum
    Dim CurPos As Long
    Dim AfterCheck As String
Public Sub InputControl(ByVal CheckObj As Object, ByVal MinValue As Double, ByVal MaxValue As Double, Optional ByVal NumDigitsAfterDecimal As Byte = 0, Optional ByVal MarkView As MarkView = 44, Optional ByVal ShowErrMsg As ShowErrMsg = icNo)
    Dim i As Integer
    Dim IsErr As Boolean
    Dim CheckedSymbol As String
    If AfterCheck = CheckObj.Text Or CheckObj.Text = "" Then
        If CurPos >= 0 Then CheckObj.SelStart = CurPos
        Exit Sub
    Else
        AfterCheck = ""
        CurPos = CheckObj.SelStart
        For i = 1 To Len(CheckObj.Text)
            CheckedSymbol = Mid(CheckObj.Text, i, 1)
            If (Asc(CheckedSymbol) >= 48 And Asc(CheckedSymbol) <= 57) Or _
            ;(Len(AfterCheck) = 0 And Asc(CheckedSymbol) = 45) Or _
            ;((Asc(CheckedSymbol) = 44 Or Asc(CheckedSymbol) = 46) And InStr(AfterCheck, ",";) = 0) Then
                If Asc(CheckedSymbol) = 44 Or Asc(CheckedSymbol) = 46 Then
                    If NumDigitsAfterDecimal > 0 Then
                        CheckedSymbol = Chr(44)
                    Else
                        CurPos = CurPos - 1
                        Exit For
                    End If
                End If
                If AfterCheck = "" And (CheckedSymbol = ",";) Then
                    AfterCheck = "0,"
                ElseIf AfterCheck = "0" And CheckedSymbol <> "," Then
                    AfterCheck = CheckedSymbol
                ElseIf AfterCheck = "-" And CheckedSymbol = "," Then
                    AfterCheck = "-0" & CheckedSymbol
                ElseIf AfterCheck = "-0" And CheckedSymbol <> "," Then
                    AfterCheck = "-" & CheckedSymbol
                Else
                    AfterCheck = AfterCheck & CheckedSymbol
                End If
            Else
                If CurPos > 0 Then
                    CurPos = CurPos - 1
                    IsErr = True
                End If
            End If
        Next i
        If Len(AfterCheck) > InStr(AfterCheck, ",";) + NumDigitsAfterDecimal And InStr(AfterCheck, ",";) <> 0 Then
            AfterCheck = FormatNumber(AfterCheck, NumDigitsAfterDecimal)
        End If
        If AfterCheck = "" Then
            IsErr = True
            AfterCheck = MinValue
        ElseIf AfterCheck < MinValue Then
            AfterCheck = MinValue
            IsErr = True
        ElseIf AfterCheck > MaxValue Then
            AfterCheck = MaxValue
            IsErr = True
        End If
        If InStr(AfterCheck, ",";) <> 0 Then Mid(AfterCheck, InStr(AfterCheck, ",";), 1) = Chr(MarkView)
        If AfterCheck = "-0" Then AfterCheck = "0"
        CheckObj.Text = AfterCheck
        If ShowErrMsg = icYes And IsErr = True Then
            MsgBox "Разрешен ввод только числовых значений больших либо равных " & MinValue & " и меньших либо равных " & MaxValue & "!", vbCritical, "Внимание!"
        End If
    End If
End Sub

Ответить

Номер ответа: 44
Автор ответа:
 Champion



ICQ: 461506481 

Вопросов: 38
Ответов: 88
 Web-сайт: afhelp.in.ua
 Профиль | | #44
Добавлено: 23.05.07 07:59
использую немного другое для ввода
Select Case KeyAscii

потом, к примеру
Case 32 To 57, 61 To 122
Case 179, 184, 185, 186, 191 To 255

или чтоб нагляднее было
Case vbKeyReturn, vbKeyEscape, vbKeyBack, Asc(vbLf), Asc(vbCr)

и так
Case vbKeyTab
      что-то для табуляции

всё остальное в 0

    Case Else
      KeyAscii = 0
  End Select

Ответить

Номер ответа: 45
Автор ответа:
 Champion



ICQ: 461506481 

Вопросов: 38
Ответов: 88
 Web-сайт: afhelp.in.ua
 Профиль | | #45
Добавлено: 23.05.07 08:02
забыл, что это не спасает от Ctrl+V, вставляется всё что угодно

Ответить

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

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



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