Полезное для программистов:

Фриланс
Новости
Статьи
   
Рубрики:


ОТ QB TO VB.

Поиск:
ОТ  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






Просмотров: 4044

 

 

Новые статьи:


Популярные:
  1. Как сделать цикличным проигрывание MIDI-файла?
  2. Создание AVI файла из рисунков
  3. Как устройство "отключить в данной конфигурации"?
  4. Kто в данный момент присоединен через Сеть?
  5. Как узнать количество доступной памяти?
  6. Как реализовать в RichEdit разноцветный текст?
  7. Как скрыть свое приложение от ProcessViewer
  8. Как программно нажать/скрыть/показ кнопку "Start"?
  9. Модуль работы с ресурсами в PE файлах
10. Функции вызова диалоговых окон выбора
11. Проверка граматики средствами Word'а из Delphi.
12. Модуль для упрощенного вызова сообщений
13. Функции для записи и чтение своих данных в, ЕХЕ- файле
14. Рекурсивный просмотр директорий
15. Network Traffic Monitor
16. Разные модули
17. Универсальная функция для обращения к любым экспортируем функциям DLL
18. Библиотека от VladS
19. Протектор для UPX'а
20. Еще об ICQ, сообщения по контакт листу?
21. Использование открытых интерфейсов
22. Теория и практика использования RTTI
23. Работа с TApplication
24. Примеры использования Drag and Drop для различных визуальных компонентов
25. Что такое порт? Правила для работы с портами
26. Симфония на клавиатуре
27. Загрузка DLL
28. Исправление автоинкремента
29. Взаимодействие с чужими окнами
30. Проверить дубляжи в столбце


 

 

 
 
На главную