в проекте несколько форм

Программирование на Visual Basic, главный форум. Обсуждение тем программирования на VB 1—6.
Даже если вы плохо разбираетесь в VB и программировании вообще — тут вам помогут. В разумных пределах, конечно.
Правила форума
Темы, в которых будет сначала написано «что нужно сделать», а затем просьба «помогите», будут закрыты.
Читайте требования к создаваемым темам.
eHexe
Начинающий
Начинающий
Аватара пользователя
 
Сообщения: 17
Зарегистрирован: 17.02.2011 (Чт) 12:26
Откуда: замкадыш

в проекте несколько форм

Сообщение eHexe » 17.02.2011 (Чт) 12:48

добрый день!
помогите, пожалуйста!
в проекте есть несколько форм. из первой вызываю форму frmSecurity (проверка прав доступа), оттуда получаю глобальную переменную, от которой зависят дальнейшие действия.
Вопрос: что надо прописать в коде, чтобы после вызова frmSecurity.Show 0 прерывался код первой формы, выполнялся код формы frmSecurity и возвращался к коду первой формы?
на данный момент код выглядит так:

Код: Выделить всё
Private Sub EnterAndEdit_Click()
   With frmSecurity
      frmSecurity.Show 0
   End With
' какой код нужен здесь???
   If gPassOK = 1 Or gPassOK = 2 Then
      frmKatalogDok.Show
      Unload Me
   ElseIf gPassOK = 0 Then
      giReturn = MsgBox("Неверный логин\пароль.", vbOKOnly)
   Else
      giReturn = MsgBox("Недостаточно прав.", vbOKOnly)
   End If
End Sub
Последний раз редактировалось eHexe 17.02.2011 (Чт) 13:10, всего редактировалось 1 раз.

Хакер
Телепат
Телепат
Аватара пользователя
 
Сообщения: 16478
Зарегистрирован: 13.11.2005 (Вс) 2:43
Откуда: Казахстан, Петропавловск

Re: в проекте несколько форм

Сообщение Хакер » 17.02.2011 (Чт) 12:51

Какой кошмар.
Оформление поста — отвратительнае.
Непонимание сути — есть.
Архитектура приложения — ужасная.
Формулировка вопроса — невыносимая.

И даже сообщения об ошибках с маленькой буквы без точки в конце.
—We separate their smiling faces from the rest of their body, Captain.
—That's right! We decapitate them.

eHexe
Начинающий
Начинающий
Аватара пользователя
 
Сообщения: 17
Зарегистрирован: 17.02.2011 (Чт) 12:26
Откуда: замкадыш

Re: в проекте несколько форм

Сообщение eHexe » 17.02.2011 (Чт) 13:00

:) ну, во-первых, я не программист... поставили задачу - 2 недели на самообразование и пиши базу данных :shock:
сообщения пришлось править тут, из vb почему-то русские буквы превращаются в кракозябли.
а архитектура - тоже тут править? копи-пастом вставляется без абзацев

arthur2
Продвинутый гуру
Продвинутый гуру
Аватара пользователя
 
Сообщения: 1688
Зарегистрирован: 23.01.2008 (Ср) 14:35

Re: в проекте несколько форм

Сообщение arthur2 » 17.02.2011 (Чт) 13:45

eHexe писал(а):сообщения пришлось править тут, из vb почему-то русские буквы превращаются в кракозябли.
При копировании установи в источнике русскую раскладку.
eHexe писал(а):' какой код нужен здесь???
Видимо, вместо нуля нужно указать vbModal :lol:

А зачем With, если внутри него всё равно пишешь полностью?
Артур
 
   

eHexe
Начинающий
Начинающий
Аватара пользователя
 
Сообщения: 17
Зарегистрирован: 17.02.2011 (Чт) 12:26
Откуда: замкадыш

Re: в проекте несколько форм

Сообщение eHexe » 17.02.2011 (Чт) 14:17

с vbModal и 1 выдавалась ошибка, что не может сделать окно модальным, пришлось поставить 0 до выяснения :)
убрала в Private Sub Form_Load() принудиловку - Me.Show, заработала модальность

но помимо того, что не могу понять, как код If gPassOK = 1 Or gPassOK = 2 Then.......EndIf запустить после отработки кода frmSecurity, в глобальной переменной gPassOK оказывается абсолютно левое число....

arthur2
Продвинутый гуру
Продвинутый гуру
Аватара пользователя
 
Сообщения: 1688
Зарегистрирован: 23.01.2008 (Ср) 14:35

Re: в проекте несколько форм

Сообщение arthur2 » 17.02.2011 (Чт) 14:54

eHexe писал(а):убрала в Private Sub Form_Load() принудиловку - Me.Show, заработала модальность
Это потому что перовое .Show вызывало Form_Load. где снова было .Show, а значит ты пыталась показать форму, которая на тот момент была уже показана как модальная.

eHexe писал(а):в глобальной переменной gPassOK оказывается абсолютно левое число....
Бейсик - не Си, здесь непонятно откуда в переменную ничего попасть не может - ищи, где в коде это непонятно что записывается в переменную.
Артур
 
   

eHexe
Начинающий
Начинающий
Аватара пользователя
 
Сообщения: 17
Зарегистрирован: 17.02.2011 (Чт) 12:26
Откуда: замкадыш

Re: в проекте несколько форм

Сообщение eHexe » 17.02.2011 (Чт) 15:13

опуская вход в базу: в базе на аксесс забита таблица логин-пароль-доступ. по введенным данным логин - пароль, ищу есть ли такая запись в базе. при этом свойство RecordCount ведет себя просто по хамски - то выдает -1 (нашла на каком-то форуме, что надо прописать adoRecordset.CursorLocation = adUseClient ) стало выдавать то 1 (правильно), то 0 при введении одних и тех же данных. Глобальная переменная gPassOK только тут получает значение, в форме1 она используется только в условии оператора If. Сделала листбокс на форме 1 до оператора If и получила gPassOK=3
А из формы2 оно может быть в данном случае только 0,1 или 2
Код: Выделить всё
adoRecordset.CursorType = adOpenDynamic
adoRecordset.LockType = adLockBatchOptimistic
adoRecordset.CursorLocation = adUseClient
        sPassword = "'" & sPass & "'"
        sLogin = TxtLog.Text
        sLogin = "'" & sLogin & "'"
        sSql = "SELECT [Dostup]" & _
        "FROM [Connection]" & _
        "WHERE [Login] =" & sLogin & _
               " AND [Password] = " & sPassword
  adoRecordset.Open sSql, adoConnection

  lTotalRecords = adoRecordset.RecordCount
 
  If adoRecordset.RecordCount > 0 Then
     sDostup = adoRecordset!Dostup
     gPassOK = sDostup
     adoRecordset.Close
     adoConnection.Close
     
     Set adoRecordset = Nothing
     Set adoConnection = Nothing
     Set frmSecurity = Nothing
     
     Unload Me
  Else
     giReturn = MsgBox("Нет доступа в базу.", vbOKOnly, "Проверка прав доступа")
     gPassOK = 0
     adoRecordset.Close
     adoConnection.Close
     Set adoRecordset = Nothing
     Set adoConnection = Nothing
     
  End If

eHexe
Начинающий
Начинающий
Аватара пользователя
 
Сообщения: 17
Зарегистрирован: 17.02.2011 (Чт) 12:26
Откуда: замкадыш

Re: в проекте несколько форм

Сообщение eHexe » 17.02.2011 (Чт) 15:30

:shock: это не программирование, а шаманство какое-то... закрыла файл аксесс с базой и пока заработало...

arthur2
Продвинутый гуру
Продвинутый гуру
Аватара пользователя
 
Сообщения: 1688
Зарегистрирован: 23.01.2008 (Ср) 14:35

Re: в проекте несколько форм

Сообщение arthur2 » 17.02.2011 (Чт) 15:36

eHexe писал(а):Глобальная переменная gPassOK только тут получает значени
В среде выдели gPassOK, затем меню Debug>Add Watch... , в обоих листбоксах выбери All, а в типе просмотра выбери останов, когда переменная изменяется. И поймаешь момент, когда в gPassOK окажется не то значение.
Артур
 
   

eHexe
Начинающий
Начинающий
Аватара пользователя
 
Сообщения: 17
Зарегистрирован: 17.02.2011 (Чт) 12:26
Откуда: замкадыш

Re: в проекте несколько форм

Сообщение eHexe » 17.02.2011 (Чт) 15:52

с gPassOK оказалось просто - когда смотрели можно ли открыть базу одновременно на нескольких компах, мне внесли изменения :) а вот когда RecordCount глючит, когда нет - пока неясно...

И подскажите, пожалуйста: написала процедуру, которая пароль отображает звездочками:
Код: Выделить всё
Private Sub TxtPass_KeyPress(KeyAscii As Integer)
   sPass = sPass + Chr(KeyAscii)
   KeyAscii = Asc("*")  'заменяем каждый символ на *
End Sub

а как теперь сделать, чтобы Backspace - не отображался тоже "*", а стирал неверные символы, а Enter - срабатывал, как нажатие на ОК?

arthur2
Продвинутый гуру
Продвинутый гуру
Аватара пользователя
 
Сообщения: 1688
Зарегистрирован: 23.01.2008 (Ср) 14:35

Re: в проекте несколько форм

Сообщение arthur2 » 17.02.2011 (Чт) 15:57

Видимо, if keyascii=vbKeyBack :lol:
Кстати, у текстбокса есть свойство passwordchar
Последний раз редактировалось arthur2 17.02.2011 (Чт) 16:00, всего редактировалось 1 раз.
Артур
 
   

Денис
Доктор VB наук
Доктор VB наук
Аватара пользователя
 
Сообщения: 2734
Зарегистрирован: 07.11.2006 (Вт) 13:55
Откуда: Ейск, Краснодарский край

Re: в проекте несколько форм

Сообщение Денис » 17.02.2011 (Чт) 16:00

eHexe писал(а):это не программирование, а шаманство какое-то

Ага. У нас тут даже шаман был. Потом его прогнали тролли.

И еще.
Если используешь базу Access, архивируй три раза в день. При работе в многопользовательском режиме они могут необратимо разрушаться.
А лучше всего, пока не поздно, выбери другую СУБД для программы.
Программирование — богоизбранная дисциплина! Если бог и есть, то вселенную он скомпилировал, не иначе.

eHexe
Начинающий
Начинающий
Аватара пользователя
 
Сообщения: 17
Зарегистрирован: 17.02.2011 (Чт) 12:26
Откуда: замкадыш

Re: в проекте несколько форм

Сообщение eHexe » 17.02.2011 (Чт) 16:14

:) если бы мне платили, как программисту, и давали время на изучение программ, я бы что-то выбирала... задача была вообще сделать бд на аксесс, но зная наших спецов, которые могут сломать, что угодно, решила хотя бы обезопаситься vb, чтобы народ мог только смотреть :)
arthur2 писал(а):Видимо, if keyascii=vbKeyBack :lol:
условие понятно ))) а как написать код чтобы стирал последний символ? :) с Enter и Ecs разобралась

arthur2
Продвинутый гуру
Продвинутый гуру
Аватара пользователя
 
Сообщения: 1688
Зарегистрирован: 23.01.2008 (Ср) 14:35

Re: в проекте несколько форм

Сообщение arthur2 » 17.02.2011 (Чт) 16:28

If Len(sPass) Then sPass = Left$(Len(sPass) - 1)
упс... нет, это не годится - нужно ещё учитывать положение курсора, как, впрочем, и при добавлении символа к sPass

А чем не подошло passwordchar?
Артур
 
   

eHexe
Начинающий
Начинающий
Аватара пользователя
 
Сообщения: 17
Зарегистрирован: 17.02.2011 (Чт) 12:26
Откуда: замкадыш

Re: в проекте несколько форм

Сообщение eHexe » 17.02.2011 (Чт) 16:38

так всё одно придется прописывать поведение Enter и Esc так почему бы не в этой процедуре? )))

Денис
Доктор VB наук
Доктор VB наук
Аватара пользователя
 
Сообщения: 2734
Зарегистрирован: 07.11.2006 (Вт) 13:55
Откуда: Ейск, Краснодарский край

Re: в проекте несколько форм

Сообщение Денис » 17.02.2011 (Чт) 16:53

eHexe писал(а):так всё одно придется прописывать поведение Enter и Esc так почему бы не в этой процедуре? )))

Это поведение прописывается в классе формы.
Программирование — богоизбранная дисциплина! Если бог и есть, то вселенную он скомпилировал, не иначе.

arthur2
Продвинутый гуру
Продвинутый гуру
Аватара пользователя
 
Сообщения: 1688
Зарегистрирован: 23.01.2008 (Ср) 14:35

Re: в проекте несколько форм

Сообщение arthur2 » 17.02.2011 (Чт) 16:53

При чем здесь процедура? Она вообще будет не нужна - символы в текстовом поле останутся оригинальными, просто будут скрыты символом, который ты выберешь в качестве passwordchar
Артур
 
   

Денис
Доктор VB наук
Доктор VB наук
Аватара пользователя
 
Сообщения: 2734
Зарегистрирован: 07.11.2006 (Вт) 13:55
Откуда: Ейск, Краснодарский край

Re: в проекте несколько форм

Сообщение Денис » 17.02.2011 (Чт) 16:59

И тотчас же я рекомендую для пассвордчара использовать символ с кодом 149 (вот он "•"). Будет красиво, стильно, как в венде.
Программирование — богоизбранная дисциплина! Если бог и есть, то вселенную он скомпилировал, не иначе.

eHexe
Начинающий
Начинающий
Аватара пользователя
 
Сообщения: 17
Зарегистрирован: 17.02.2011 (Чт) 12:26
Откуда: замкадыш

Re: в проекте несколько форм

Сообщение eHexe » 17.02.2011 (Чт) 21:29

Спасибо за советы! Блин, а классы и модули для меня - высшая магия :cyclops: пока это крайне непонятно... особенно, что делают с чужими готовыми модулями, после того, как добавляют в свой проект? у них же нет визуальной части :roll:

Денис
Доктор VB наук
Доктор VB наук
Аватара пользователя
 
Сообщения: 2734
Зарегистрирован: 07.11.2006 (Вт) 13:55
Откуда: Ейск, Краснодарский край

Re: в проекте несколько форм

Сообщение Денис » 18.02.2011 (Пт) 9:38

eHexe писал(а):классы и модули для меня - высшая магия

Если ты, как пишешь, не программист, то понять классы и модули для тебя будет проще.

Ну и опять же, раз у тебя нет времени на чтение книг, то вот небольшой пример:
Предположим есть объект "собака Барбос".
Этот объект является экземпляром класса "собаки". Который в свою очередь наследуется от класса "млекопитающие" и так далее.
Важно здесь вот что: у Барбоса есть множество методов деятельности, например, лаять, кусать, писать на деревья или столбы, да?
Эти методы он берет из интерфейса класса "собаки".
А вот то, что его подружка, скажем Жулька, кормит щенят молоком, это поведение унаследовано от класса "млекопитающие" и реализуется через этот интерфейс.
Вот, вкратце некоторая суть ООП.
Теперь о модулях. Модули в бейсике это не то же самое, что и мудули, например в си или паскале. В бейсике модули, это наборы функций-процедур. А вот модули класса это уже нечто совсем иное и более похожее на модули в других языках, поддерживающих ООП.
В общем, главная задача модуля класса это разделить на две части интерфейс класса и реализацию его же. Нужно это для того, чтобы как в старом анекдоте, объект ёжик не получил бы доступа к реализации метода "дыхание" не нарушил бы его и не "забыл как дышать и умер".
Поэтому реализация модуля всегда скрыта, так же скрыты приватные методы класса. Это называется инкапсуляция. Реализуется это по разному. В бейсике просто не виден весь код и private, в самом общем случае, а видны только методы public с их аргументами.
Программирование — богоизбранная дисциплина! Если бог и есть, то вселенную он скомпилировал, не иначе.

eHexe
Начинающий
Начинающий
Аватара пользователя
 
Сообщения: 17
Зарегистрирован: 17.02.2011 (Чт) 12:26
Откуда: замкадыш

Re: в проекте несколько форм

Сообщение eHexe » 18.02.2011 (Пт) 11:12

общий смысл я из букваря "VB6.Введение в программирование баз данных" поняла, но книжка кошмарно распознана, да и помимо этого опечаток в коде полно... замучилась править... а с классами вообще фигня была - создали класс, потом добавили два объекта этого класса, если объект 1, то код работает нормально, а со вторым просто никак... обиделась и плюнула на эти классы... модуль класса был немного понятнее, пока по книжке и код делался и к нему форма рисовалась, а скачала из нета модуль для поиска файлов, и понять не могу, что надо делать, чтобы он работал :lol: кинула в папку модулей, подгрузила в проект, а к чему код цеплять?

eHexe
Начинающий
Начинающий
Аватара пользователя
 
Сообщения: 17
Зарегистрирован: 17.02.2011 (Чт) 12:26
Откуда: замкадыш

Re: в проекте несколько форм

Сообщение eHexe » 18.02.2011 (Пт) 11:16

и можно объяснять не на бобиках)))) я не программист, но радиоинженер, основы программирования были, правда, давно и на Фортране, Паскале и немного Ассемблере :mrgreen: С визуалкой всё сложнее... столько, вроде, необязательных параметров, но если в какой-то ситуации не укажешь точно этот параметр, фиг работать будет... а полного описания пока нигде не могу найти

Хакер
Телепат
Телепат
Аватара пользователя
 
Сообщения: 16478
Зарегистрирован: 13.11.2005 (Вс) 2:43
Откуда: Казахстан, Петропавловск

Re: в проекте несколько форм

Сообщение Хакер » 18.02.2011 (Пт) 11:19

В общем, eHexe, либо ты прекращаешь писать как-попало, и вообще начинаешь думать, либо тебе будет вынесено предупреждение, а тема будет закрыта.
—We separate their smiling faces from the rest of their body, Captain.
—That's right! We decapitate them.

Денис
Доктор VB наук
Доктор VB наук
Аватара пользователя
 
Сообщения: 2734
Зарегистрирован: 07.11.2006 (Вт) 13:55
Откуда: Ейск, Краснодарский край

Re: в проекте несколько форм

Сообщение Денис » 18.02.2011 (Пт) 11:53

eHexe писал(а):и можно объяснять не на бобиках

Нет. Тебе уже объясняли в книге на конкретных классах.
eHexe писал(а):а с классами вообще фигня была - создали класс, потом добавили два объекта этого класса, если объект 1, то код работает нормально, а со вторым просто никак... обиделась и плюнула на эти классы... модуль класса был немного понятнее, пока по книжке и код делался и к нему форма рисовалась

И что ты поняла? Ничего. Так что рекомендую все же на бобиках. Тем более, система разделений на классы и виды начинается аж в докомпьютерную эру. Начиная с Ламарка(?).
eHexe писал(а):я не программист, но радиоинженер

Это ничего не значит. Ровным счетом. Хоть президент.
eHexe писал(а):на Фортране, Паскале и немного Ассемблере

А вот это плохо. Как я писал выше, если тебе преподали основы программирования функционального (upd: и/или процедурного), то объектное дастся с большими усилиями.
Последний раз редактировалось Денис 18.02.2011 (Пт) 13:51, всего редактировалось 1 раз.
Программирование — богоизбранная дисциплина! Если бог и есть, то вселенную он скомпилировал, не иначе.

Хакер
Телепат
Телепат
Аватара пользователя
 
Сообщения: 16478
Зарегистрирован: 13.11.2005 (Вс) 2:43
Откуда: Казахстан, Петропавловск

Re: в проекте несколько форм

Сообщение Хакер » 18.02.2011 (Пт) 12:01

Денис писал(а):программирования функционального

А ты сам-то, Денис, не путаешь функциональное с процедурным?
—We separate their smiling faces from the rest of their body, Captain.
—That's right! We decapitate them.

Денис
Доктор VB наук
Доктор VB наук
Аватара пользователя
 
Сообщения: 2734
Зарегистрирован: 07.11.2006 (Вт) 13:55
Откуда: Ейск, Краснодарский край

Re: в проекте несколько форм

Сообщение Денис » 18.02.2011 (Пт) 13:40

Хакер писал(а):не путаешь функциональное с процедурным

Правильнее было бы сказать "функциональное и процедурное", по крайней мере так я понял, читая Бадда.
Последний раз редактировалось Денис 18.02.2011 (Пт) 13:49, всего редактировалось 1 раз.
Программирование — богоизбранная дисциплина! Если бог и есть, то вселенную он скомпилировал, не иначе.

Хакер
Телепат
Телепат
Аватара пользователя
 
Сообщения: 16478
Зарегистрирован: 13.11.2005 (Вс) 2:43
Откуда: Казахстан, Петропавловск

Re: в проекте несколько форм

Сообщение Хакер » 18.02.2011 (Пт) 13:46

Денис писал(а):Правильнее было бы сказать "функционольное и процедурное", по крайней мере так я понял, читая Бадда.

Это разноуровневые вещи.
—We separate their smiling faces from the rest of their body, Captain.
—That's right! We decapitate them.

Денис
Доктор VB наук
Доктор VB наук
Аватара пользователя
 
Сообщения: 2734
Зарегистрирован: 07.11.2006 (Вт) 13:55
Откуда: Ейск, Краснодарский край

Re: в проекте несколько форм

Сообщение Денис » 18.02.2011 (Пт) 13:50

Хакер писал(а):Это разноуровневые вещи.

Окей.
Программирование — богоизбранная дисциплина! Если бог и есть, то вселенную он скомпилировал, не иначе.


Вернуться в Visual Basic 1–6

Кто сейчас на конференции

Сейчас этот форум просматривают: Yandex-бот и гости: 69

    TopList