Модераторы: Akina

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> от QB to VB, как я начинал с VB :)) 
V
    Опции темы
JusTalionis
Дата 11.3.2007, 22:31 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 576
Регистрация: 11.7.2006

Репутация: 6
Всего: 17



Эта моя статья доволно долго висела в Нете; потом как-то исчезла. Предлагаю ее в FAQ.



ОТ  QB  TO  VB .


Добрый день, дорогие друзья!


     Я пишу для тех, кто, как и я, довольно неплохо программировал на QB (TB, PowerBasic и им подобным,) но почему-либо пока не сталкивался с объектным программированием и впервые взялся за VB.

   Вот я поставил у себя VB (поскольку уж нельзя стало писать под одной только DOS), и, в простоте душевной, думал, что и в нем сразу: раз! - и напишу что нибудь, - не тут то было! Я долгое время даже не мог понять, с какого места начинается выполнение при запуске. 
   Начал шарить по всем сайтам о VB для начинающих, и не нашел почти ничего толкового - везде описания элементарных команд, типа "что такое процедура" и чем от нее отличается функция, как употреблять операторы IF и SELECT, и (даже!) что GO TO озачает по-русски "иди к ...".
   Здесь ниже я излагаю самые начальные сведения об отличиях стиля программирования в VB от QB. Я вылавливал эту (до смешного элементарную!) информацию по крупицам из книг времен Win 3.1, и желаю вам всем, чтобы вам не пришлось бы повторять подобное.
  Итак, приступим.

  Объектное программирование на VB сильно отличается от "классического" Бейсика. Я бы сказал, что VB - это совершенно другой язык, который можно назвать Бейсиком только за то, что используются те же самые команды, не более! Вся идеология совершенно другая.
   Структура программы на алгоритмическом языке типа QB, как Вы, (полагаю) хорошо знаете, проста: она представляет собой линейную последовательность команд, которые поочередно выполняются, начиная с первой. (Ну, в известных случаях, очередность изменяется, ветвится, и т. п., но, в целом это несущественно.)
    В объектном программировании все иначе. Тут все опирается на понятие объекта. "Объект " - это общее наименование кнопки, окна, формы и тому подобных. (Не останавливаюсь здесь на понятии "форма", так как ее несложно просто увидеть на экране.)
   А у каждого объекта есть "свойства" и "методы". 
   "Свойства" - это нечто вроде управляющих переменных, связанных с объектом. Какое значение Вы в них запишете, так и станет выглядеть объект.  И это можно производить прямо в программе.  Свойством является цвет объекта, также его высота, ширина, местоположение (координаты). Текст в текстовом поле - тоже одно из "свойств" этого поля (и задается, напр., простым присваиванием из строковой переменной). Свойства (т.е. их содержимое) можно оперативно изменять по ходу программы, и, таким образом, управлять объектами.
   "Методы" - это обыкновенные команды, в применении к данному объекту. Например, метод Line имеется у графического поля, но отсутствует у текстового.

   Тело программы в Visual Basic состоит целиком из процедур (подпрограмм) и функций, как в Си.  С каждым объектом сязано не менее одной процедуры.
  Когда по объекту происходит щелчок мыши, выполнение автоматически передается соответствующей связанной с объектом подпрограмме. (Это называется "событием". ) В теле подпрограммы могут содержаться команды изменения свойств не только этого, но и других объектов, и вызовы подпрограмм, относящихся к другим объектам. Таким образом объекты влияют друг на друга, а процесс работы в целом управляется воздействиями оператора через мышь или другие устройства.
  В этой системе общая структура программы приобретает вид сети взаимосвязанных процедур.

  Выполнение такой программы начинается с указанной формы. (Выбирается в меню: Проект/Свойства Проекта/Главное/Объект Запуска). В этом случае, при старте программы на экране появится выбранная форма и будет автоматически вызвана процедура Form_Load() ,  связанная с ней. Если эта процедура  пуста, т. е. состоит только из заголовка подпрограммы и конца, без команд между ними, то больше ничего происходить не будет, пока щелчком мыши или другим "событием" не будет активизирована какая-нибудь из остальных процедур, имеющихся в программе.


ПРАВИЛА ЗАПИСИ ИМЕН.


   В QB и ему подобных, не возникает никакого вопроса, поскольку имеется фиксированное (и небольшое) число устройств ввода-вывода и отображения: клавиатура, экран (в текстовом и графическом режимах). Адресат ввода-вывода задается самой командой: если это Circle , ясно, что имеем дело с экраном, если inkey$ - с клавиатурой.
Но в Windows, напр. окон для вывода, может быть одновременно несколько, и значит следует явно указать, к какому из них относится команда (называемая в этом случае "методом").
   Поэтому имена в VB являются составными, части разделяются точками в следующем порядке:

ИмяФормы.ИмяОбъекта.Свойство
- Так обращаются к свойству объекта. Подобная конструкция может входить в выражение справа или слева от знака равенства, подобно любой переменной.  

ИмяФормы.ИмяОбъекта.Метод
-  Вслед за этим обращением могут иметься параметры, если метод (т.е. команда) их требует.


ПОДПРОГРАММЫ И СОБЫТИЯ.


  Заготовки подпрограмм (процедур) выполняемых при щелчке мыши по объекту образуются автоматически, когда Вы создаете новые объекты на форме.
  Эту заготовку можно вызвать на редактирование, дважды щелкнув по объекту во время Вашей работы в среде VB (не во время выполнения создаваемой программы!). Первоначально она состоит только из заголовка и конца, и не содержит никаких команд.  Желаемые команды Вы должны вписать сами. Если не требуется реакций на щелчки, так и оставьте эту заготовку пустой, но совсем ее удалять не следует. Кроме события "щелчок" (Click) существует еще DblClick - двойной щелчок.
  Какие еще существуют события у объекта? Это можно посмотреть, открыв список справа вверху окна кода. (При этом имя объекта надо выбрать из левого списка.)
  Связь между событием и его процедурой очень простая: имя процедуры составляется из имени объекта и имени события за ним, разделенных символом подчерка _  .  В скобках могут находиться параметры, если событие способно их передавать в процедуру.
  Можно автоматически создать заготовку соответствующей процедуры, выбрав имя события из помянутого правого списка в окне кодов.


РАЗМЕЩЕНИЕ ФРАГМЕНТОВ ПРОГРАММЫ.


При описанной структуре программы, расклад получается следующим.
   Поскольку щелчки мышью на объектах являются, фактически, заданием исходных условий, то в их подпрограммах оказываются коды, связанные с обработкой исходных данных.
   Действия (инициализации), которые должны быть совершены предварительно и автоматически при запуске, следует помещать в процедуру Form_Load(), вызывающуюся при старте формы.
   Когда все исходные заданы, остается нажать кнопку "OK". Вот в ее-то процедуру и попадает основное тело всех вычислений, которые надо совершить, и команды вывода результатов.
   В модуле объявляются глобальные переменные или константы, если таковые должны быть в программе.


КАК ... ?

Как вызвать желаемую форму на экран?
- командой:

ИмяФормы.Show

Если добавить параметр vbModal то при таком вызове  формы, обращение к остальным в это время блокируется, а если  ,Me  -то она будет все время поверх других.


Как закрыть форму?

Unload ИмяФормы

Если закрываем текущую форму (напр. кнопкой "Close"), можно использовать:

Unload Me


Как изменять размеры объектов синхронно с изменением размеров формы, содержащей их?

Пишем процедуру:

Код

Private Sub Form_Resize()
'  определение новых размеров объекта, например:
H = Me.Height - ybrdr  :  W = Me.Width - xbrdr
'  изменение размера объекта:
If H > 0 Then ИмяОбъекта.Height = H
If W > 0 Then ИмяОбъекта.Width = W
End Sub

  Эта процедура станет вызываться при каждом изменении размеров формы. 
   Me.Heigh  и  Me.Width  - являются текущими высотой и шириной формы Form, содержащей процедуру. Из них вычисляем текущие высоту H и ширину W для объекта.   (ybrdr и xbrdr - это величины отступов края объекта от края формы. Вы можете написать свои собственные вычисления.)
  If защищают от ошибки. Если сужение формы не чрезмерно, 
то в них размерам объекта присваиваются новые вычисленные значения.


ТЕХНИЧЕСКИЕ ПОДРОБНОСТИ.


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

Получаемый .exe-файл является скомпилированным только частично: он не машинный код, и требует для своего выполнения присутствия на компьютере файла Msvbvm60.dll . Но начиная с Win98 этот файл входит в комплект Виндовс.

Через меню Проект/Компоненты открывается окно, в котором можно подключить для использования в программе разнообразные дополнительные виды объектов - "управления" или контролы (controls). Эти контролы содержатся и работают в отдельных файлах (имя индицируется под окном с галочками). Если Вы используете в проекте какие-нибудь из контролов, соответствующие файлы придется раздавать вместе с .exe-файлом программы, так как на других компьюторах их может не оказаться.


НЕКОТОРЫЕ "ОСОБЕННОСТИ" И ГЛЮКИ.


  Билл не был бы Гейтсом, если бы сделал все по-человечески.

1.  При работе с объектом "Календарь" замечено следующее: свойство Day и другие, дают правильный результат при смене выбранной даты только если их значения считываются в пределах процедуры, вызываемой кликом по календарю. Если обратиться к объекту "Календарь" из какого-либо другого места и проверить его свойства, значения получались неправильные. Пришлось вводить нужное количество глобальных переменных и присваивать им значение внутри процедуры обработки события, чтобы затем считывать в других местах. Не исключено, что и другие объекты могут вести себя подобным образом.

2. Если Вы объявляете несколько переменных одинакового типа, перечисляя их через запятую, то название типа Вы должны подписать к каждой из переменных персонально:
Dim A As Integer, B As Integer, C As Integer, ...

3. Глобальные (по всей программе) переменные и константы можно объявить только в объекте типа "модуль". Отчего такое ограничение - непонятно.

4. DATA - RESTORE в Визуал не поддерживаются.

5. Print допускается, но как-то так криво, для форм, что почти никогда не действует. Если не вдаваться в дебри отладчика, для контроля вместо Print [переменная] , пользуйтесь  MsgBox [переменная].

6. VB позволяет в именах функций опускать строковый значок $, например Left$ и Left имеют все равно один и тот же (строковый) тип.


Ну, остальные подробности - дело житейское, можно выяснить по ходу экспериментирования и литературе.
Всем привет и пожелания успехов! smile

 

Это сообщение отредактировал(а) JusTalionis - 11.3.2007, 22:41
PM MAIL   Вверх
bom
Дата 12.3.2007, 00:25 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 329
Регистрация: 22.2.2004
Где: Казахстан, Алматы

Репутация: 4
Всего: 6



Цитата(JusTalionis @  12.3.2007,  01:31 Найти цитируемый пост)
для тех, кто...программировал на QB... и впервые взялся за VB

ИМХО, не актуально уже. На VB .Net переходить пора... 
PM MAIL   Вверх
cardinal
Дата 12.3.2007, 03:15 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Инженер
****


Профиль
Группа: Экс. модератор
Сообщений: 6003
Регистрация: 26.3.2002
Где: Германия

Репутация: 19
Всего: 99





--------------------
Немецкая оппозиция потребовала упростить натурализацию иммигрантов
В моем блоге: Разные истории из жизни в Германии

"Познание бесконечности требует бесконечного времени, а потому работай не работай - все едино".  А. и Б. Стругацкие
PM   Вверх
JusTalionis
Дата 12.3.2007, 10:23 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 576
Регистрация: 11.7.2006

Репутация: 6
Всего: 17



bom
Если Вы напишете хороший FAQ по VB.NET, я поблагодарю Вас, вместе со многими другими smile


cardinal
Спасибо! smile

PM MAIL   Вверх
~FoX~
Дата 12.3.2007, 12:31 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


НЕ рыжий!!!
****


Профиль
Группа: Участник Клуба
Сообщений: 2819
Регистрация: 8.10.2003
Где: Зеленоград

Репутация: 10
Всего: 68



bom, Актуально, ВБ, а особенно ВБА еще долго не помрет...

JusTalionis, Любопытная статья....но немножко не хватает собственно самой идеалгоии ООП - наследование, базовые классы и т.д.


--------------------
user posted image
…множественность никогда не следует полагать без необходимости…
PM MAIL WWW ICQ Jabber   Вверх
bom
Дата 12.3.2007, 13:43 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 329
Регистрация: 22.2.2004
Где: Казахстан, Алматы

Репутация: 4
Всего: 6



JusTalionis, На VB Net еще не перешел, тем более, не изучил его в совершенстве. Тем не менее, в Инете довольно много материалов по этому вопросу (людей, достойных благодарности).

Цитата(~FoX~ @  12.3.2007,  15:31 Найти цитируемый пост)
 ВБ, а особенно ВБА еще долго не помрет

Я этого и не утверждал.
Сомневаюсь, что сегодня найдется сколько ни будь много людей, достаточно долго программировавших на QB и решивших перейти на VB.


PM MAIL   Вверх
Naghual
Дата 12.3.2007, 14:47 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Завсегдатай
Сообщений: 1893
Регистрация: 15.5.2004
Где: Украина, Днепр

Репутация: 26
Всего: 49



bom, я один из них!  smile


--------------------
Я желаю всем Счастья!
PM ICQ Skype   Вверх
bom
Дата 12.3.2007, 16:14 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 329
Регистрация: 22.2.2004
Где: Казахстан, Алматы

Репутация: 4
Всего: 6



Автор статей по тематике VB .Net и его отличий от VB?
PM MAIL   Вверх
Naghual
Дата 12.3.2007, 16:23 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Завсегдатай
Сообщений: 1893
Регистрация: 15.5.2004
Где: Украина, Днепр

Репутация: 26
Всего: 49



не...    перешедших с QB на VB 


--------------------
Я желаю всем Счастья!
PM ICQ Skype   Вверх
bom
Дата 12.3.2007, 18:16 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 329
Регистрация: 22.2.2004
Где: Казахстан, Алматы

Репутация: 4
Всего: 6



Naghual, Речь о сегодняшнем дне, а не о конце 9-х, поэтому ты не один из них и статья - не актуальна.
 
PM MAIL   Вверх
cardinal
Дата 12.3.2007, 18:36 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Инженер
****


Профиль
Группа: Экс. модератор
Сообщений: 6003
Регистрация: 26.3.2002
Где: Германия

Репутация: 19
Всего: 99



Какая разница актуальна или нет? Статья есть, место в FAQ'e есть, почему бы не выложить - тот кому интересно - прочитает. Кстати все кто здесь пишет ее прочитали (и наверно глупее не стали)... smile 


--------------------
Немецкая оппозиция потребовала упростить натурализацию иммигрантов
В моем блоге: Разные истории из жизни в Германии

"Познание бесконечности требует бесконечного времени, а потому работай не работай - все едино".  А. и Б. Стругацкие
PM   Вверх
~FoX~
Дата 12.3.2007, 21:09 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


НЕ рыжий!!!
****


Профиль
Группа: Участник Клуба
Сообщений: 2819
Регистрация: 8.10.2003
Где: Зеленоград

Репутация: 10
Всего: 68



bom, Спроси Akina-у....он тебе популярно объяснит, что к чему!



--------------------
user posted image
…множественность никогда не следует полагать без необходимости…
PM MAIL WWW ICQ Jabber   Вверх
JusTalionis
Дата 12.3.2007, 22:06 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 576
Регистрация: 11.7.2006

Репутация: 6
Всего: 17



~FoX~, какие классы! smile я писал это, когда первый раз в жизни VB увидел! Не мог понять ВАЩЕ ничего! Потому что вот этих самых азов нигде совершенно в сети не нашел: везде - "классы", "контролы" разные обсуждают... ну я понимаю, вы спецы, но кто начинающему скажет, как именно надо точками разделять части имен? А без знания вот этих самых простых основ - даже начать осваивать невозможно.
Этот пробел я и попытался восполнить.
Между прочим, против дополнений и уточнений не протестую, а очень даже приветствую!

bom
"Сомневаюсь, что сегодня найдется сколько ни будь много людей, достаточно долго программировавших на QB и решивших перейти на VB."

А куда им деваться-то, этим людям? Продолжать на QB писать? smile

PM MAIL   Вверх
bom
Дата 12.3.2007, 22:14 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 329
Регистрация: 22.2.2004
Где: Казахстан, Алматы

Репутация: 4
Всего: 6



Прошу заметить, я не выступал не против VB (VBA), не против статьи, не против выкладывания ее в FAQ (модератору лучше знать чего выкладывать), а всего лишь высказал свое мнение.
 smile 
~FoX~О чем? Пока вопросов нет. 
Есть встречное предложение: спроси December-а не желает ли он выложить в FAQ хорошие, грамотные статьи о преимуществах перехода с ОS DOS на Windows95, а так же их основные отличия и первые впечаления от этого перехода? Если что, у меня такого добра хватает,  да и Инет под боком, можно поискать... да и место в FAQ'e есть  smile 

Цитата(JusTalionis @  13.3.2007,  01:06 Найти цитируемый пост)
А куда им деваться-то, этим людям? Продолжать на QB писать?

Ну, если бы они спрсили моего совета, посоветовал бы сразу VB.Net осваивать.

PM MAIL   Вверх
Naghual
Дата 12.3.2007, 22:42 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Завсегдатай
Сообщений: 1893
Регистрация: 15.5.2004
Где: Украина, Днепр

Репутация: 26
Всего: 49



VB.Net - Монстр!
Лично с моими задачами и VB6 справляется


--------------------
Я желаю всем Счастья!
PM ICQ Skype   Вверх
Ответ в темуСоздание новой темы Создание опроса
Правила форума "VB6"
Akina

Запрещается!

1. Публиковать ссылки на вскрытые компоненты

2. Обсуждать взлом компонентов и делиться вскрытыми компонентами

  • Литературу по VB обсуждаем здесь
  • Действия модераторов можно обсудить здесь
  • С просьбами о написании курсовой, реферата и т.п. обращаться сюда
  • Вопросы по реализации алгоритмов рассматриваются здесь
  • Используйте теги [code=vb][/code] для подсветки кода. Используйтe чекбокс "транслит" (возле кнопок кодов) если у Вас нет русских шрифтов.


Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, Akina.

 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | VB6 | Следующая тема »


 




[ Время генерации скрипта: 0.0587 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.