Iosif Gartsman : другие произведения.

Визуал Бейсик изначальный

Самиздат: [Регистрация] [Найти] [Рейтинги] [Обсуждения] [Новинки] [Обзоры] [Помощь|Техвопросы]
Ссылки:


Оценка: 5.00*3  Ваша оценка:
  • Аннотация:
    Весело и легко учимся программировать на Бейсике. глава1 Можете заказать книгу(на бумаге, с иллюстрациями) у автора.

	Итак, Я щелкаю на иконке Visual Basic 5.0! Ой, вопросы,  не глядя, 
ни на что, на ‘Enter’. И как только, их приду-мывают, фокусы эти! 
Мы ж темные, универ-ситетов не кончали, проще надо, Гейтс, 
проще.... И, вижу, нако-нец, вот это! (рис.1) Это, Бейсик! Ура, сбы-
лась мечта идиота! Мечты у всех разные, моя была полной. Если, у 
вас чего-то не хвата-ет, требуйте вернуть краденое! Вплоть до 
суда.
 
У меня подразумевается, что вы имеете этот самый Бейсик...
VB 5.0 готов  любить, но первый поцелуй всегда труден.
Сижу, пялюсь, давление выше некуда. С меня спрос малень-
кий. Для храбрости, беру на грудь банку пива, теперь - море по 
колено. Щелкаю по меню, что на длинной панели, там наверху. 
“View” это явно, что поглядеть, телек с видаком всегда любил... 
Пощелкаем.. Эй-эй, куда и что появляется - пропадает? Плевать, 
вот я щелкнул на “Toolbox”, гляжу, сбоку панелька с кучей 
картинок. Навожу на них мышку, они реагируют! Щелкаю на 
них - ничего! У меня, кажется, программа со браком!
   Ладно, хоть вид изучу, в магазин потом сбегаю, обменяю 
программу..
У меня, в центре, нагло маячит какая-то серая масса, с 
заголовком ’Form1’, давай-ка щелкнем по ней, что будет? Навел 
мышь и нажав повел вбок, ой, я чуть не слинял из комнаты! Что-
то прыгнуло! Ба, похоже на кнопку! Похоже, так оно и есть, но 
откуда? Припоминаю, что я до этого, что-то баловался в панели  
“Toolbox”, гляжу - там есть крохотная картинка кнопки! 
Щелкаю на ней и опять тащу по серой массе, как отпустил, 
появляется новая кнопка! Ура, все ясно! Бейсик, это программа 
для картинок! Ну, так давай рисовать.
	Я, например, всегда хотел иметь часики. Собственноручно 
сработанные. Вот, пусть мне он и сделает, а то вот, дармоед 
этакий, час уже меня игнорирует!
“Toolbox” это панель инструментов. Там должно быть все, что 
надо! Шарю мышкой, всплывающая подсказка отрицает нали-
чие часов, но есть “Timer”, и картинка похожа.. Дважды щелкаю 
по ней и в  форме появляется значок! Получилось! Теперь, 
должен же я  записывать свои уникальные догадки! Щелкаю в 
инструментах картинку - иконку, с всплывающей подсказкой - 
“TextBox”, уже знакомым приемом рисую в форме.
 
	По чести, я уже знаю, что такое форма и панель инструмен-
тов, это все описано в справке помощи, советую отвлечься от 
об-думывания великих планов по завоеванию компьютер-ного 
мира и пару часов погонять Хелпы Бейсика.
В общем, получилось, что-то примерное: (см. рис 2)
Значит, это и есть  программа! Первая в жизни! Форма - это 
лицо программы, что видим при ее работе, на экране дисплея. 
Прекрасная картинка, шедевр, одно слово! Безупречно! Я прог-
раммист! Доказательство налицо! Желаю немедленно видеть 
время! Но, как запустить? Еще в мезозойской эпохе я знал 
DOS’кий “Run”, в меню панели Бейсика вижу то же! А там, 
внутри, есть “Stаrt”, перевода не требует. Жму! Ура, работает! И 
кто из умников мне лапшу на уши вешал?! Что програм-
мирование это оччень трудное дело? Ха, только не для меня, с 
моим-то АйКью! (одна из многих шкал измерения интеллекта 
(IQ))
	Однако...
Я щелкаю по кнопкам, но ничего не делается! Правда, текст 
замечательно печатается с клавиатуры! Но, все как-то не так! Я 
все так быстро и замечательно нарисовал! Что делать? Выклю-
чаю программу, или традиционно щелкнув на кнопочке - 
крестике, что в правом верхнем углу нашей программы или в 
панели Бейсика меню “End” или кнопку - квадратик, а с 
треугольником, аналогична F5 или в меню -”Start”. Сижу, стону. 
Тут, заглянувший мне в гости умник, буркнул: ”А программный 
код писал?” И позорно исчез. Ну, вот, как всегда.. Все самому 
копать.. Я, думаю, что, код - это человеческие мысли понятные 
машине и понуждающие ее действовать соответственно им. Кто 
не согласен, может не читать дальше! Все же знают, что машина 
не пишет по-русски, а по-двоичному? Например, вот 111001010, 
иди пойми. Пиши пропало.. Я никогда не был силен в переводе 
и в людских языках!
Но, как раз Vb5.0 помочь может, он же транслятор, то есть пос-
редник - переводчик. Ура! Но, вот мелкая неприятность.. Эгоизм 
американцев не имеет границ, переводчик-то, по английски 
ботает, а не на великом и могучем.. Жаль..
	Но, куда, этот код-то, писать? Оказывается, если по форме 
дважды щелкнуть, то появляется нечто.. Окно редактора кода. 
Там и пишем этот код! А, если, то же сделать на кнопках? То же 
самое! Однако, не зря конановского Холмса читал! Меня не 
проведешь, разницу замечаю..
 Чукча все знает, чукча в Москве тоже был.
В такси сел.
Приехал.
-Сколько с меня?
-По счетчику
-Так ну?
-Три двадцать пять
-На, раз 25
-два 25
-три 25
-Чукча умный! Все знает, не обманешь.
	Я все знаю, но что теперь?
Все, что вижу на форме и она сама, это объекты. Любой объект 
имеет свойства, яблоко - это объект, его свойства - цвет, вкус, 
размер и т.д. По английски это “Properties”. Ба, а что я вижу 
справа у себя? (рис.1) Да то самое! Пощелкав на объектах на 
форме, вижу, что та панель меняется, смотрю в заголовки, тоже 
меняются, каков объект - таков и заголовок, нда, свойства-то, не 
одинаковы. У таймера мало, а у текстового блока куча! Нет, я 
никогда не пойму ничего! Слишком все сложно. Утерши скупую 
мужскую слезу, я бросаюсь в смертный бой! С собой и 
инструкциями. Таймер имеет свойство ”Enabled“ и ”Interval”, то 
есть возможность действовать и его частота.  1-ое, имеет два 
положения, как и у будильника, нажал - звенит (то есть True, 
иначе молчок - False). 2-ое, это как звенит: ”Пи-пи-пи” или 
медленно ”Буух-буух”, зависит от установок. Если, хочу 
зазвенеть, щелкаю дважды в “Properties” на поле  ”Enabled “, 
выбираю - ”True”, то есть, таймер действует сразу, как 
программу запустим, Все, что в “Properties”, для программы 
является установками по умолчанию. В процессе работы эти 
свойства можно изменять, чтоб это было и надо код писать..
	Таймер считает время не как люди, естественно, иначе я бы 
потребовал сатисфакции от Микрософт! У него минимальная 
единица времени, миллисекунда. 1сек = 1000 миллисекунд, 
Стало быть ставим в поле ”Interval” цифру 1000, если хотим, 
чтоб он отстукивал каждую секунду и не врал, как мои “Сейко”.
	Полагаю, дело в шляпе! Пускаю программу, для этого можно 
на клавиатуре нажать F5. Результат = 0! Выключаем программу 
или традиционно щелкнув на кнопочке - крестике, что в правом 
верхнем углу нашей программы или в панели Бейсика,  меню 
“End” или кнопку - квадратик. Что такое, где время? А то, что 
таймер тикает в никуда. Дураку - компу не сообщили, куда сооб-
щать об этом событии. Ведь это событие, что что-то происходит 
со мной, я то краснею, то опадаю в бледнюю зелень... Ладно, 
время, это по ихнему, time, а объект Textbox, имеет свойство 
Техт, там уже есть Техт1, потому-то при запуске программы и 
вижу это слово, оно мне не нравится, попахивает 
сомнамбулизмом, решительно выделяю, в поле панели свойств, 
это глупое слово и пишу свое сокровенное, не подглядывать! Ну, 
вот, порядок.. У всех есть имя, у объектов тоже. У этого - в поле 
”Name” стоит Техт1. Опять мазохизм какой-то, разве я позволил 
бы себя звать, типа, Хомо СапиенсЉ104000000000000034690670 
?+ ? Вот и их пожалеем, меняю на “Displey”. Теперь кидаюсь на 
форму и барабаню мышкой по объекту Textbox. Открывается 
редактор кода, услужливо предлагая ввести код для события  
Private Sub Displey_Change(), он полагает, что это, то что нужно. 
Соглаша-юсь, временно. У объекта-то куча событий!  Щелчок 
мыши на нем это  событие, нажатие на любую клавишу 
клавиатуры, тоже. 
Все по отдельности кодируется.
 Список, доступных для объекта событий, можно увидеть, 
щелкнув вверху справа, у редактора, список. Левый, это список 
всех объектов на форме и она сама. Там, как объект. По рис.4 
видно, о чем говорю.
	Private Sub Displey _Change() 
		Displey.Text = Time 
	End Sub
Я через точку сообщил компу, что желаю работать со свойством 
Техт объекта Displey, а через  “=“, к чему его приравниваю 
(присваиваю значение), Тime это системное время компьютера. 
У VB 5.0 есть слова зарезервировнные под имена определенных 
действий, иначе, функций. Оно одно из них, как удобно, а? Не-
зачем писать код функции, возвращающий время, уже есть!
Вроде решили правильно? Жму F5, что же? Опять не то? Черт, 
событие не то! Раз у нас таймер тикает, стало быть это его забо-
та, сообщать об времени! Щелкаем на левом списке в редакторе 
кода, выбираем, объект, Timer1, появляется его событие, слава 
богу, у него их мало, не ошибемся в выборе. Как и в Word-е, 
выделяем неудачную строчку и удерживая кнопку мыши, 
перетаскиваем ее в новое место, в событие таймера. Теперь 
получили:
 
Private Sub Displey _Change() 
 		
End Sub
	Private Sub Timer1_Timer()
Text1.Text = Time
	End Sub

Опять, запускаем программу, клянусь, если не работает и 
сейчас, до конца жизни не подойду к компу! Ну, а говорили! Не 
боги горшки обжигают! Работает! Да, что-то не красиво.. Мел-
кие цифирьки, вот бы покрупнее.. Шрифт, тоже объект, в 
объекте TextBox, стало быть в “Properties” что-то должно быть.. 
Щелкаем там, вверху в списке, ловим наш Displey , щелкаем на 
нем и в куче полей находим “Font” это шрифт по нашему! Ура, 
от избытка чувств, дважды быстро колочу по бедному микки и 
вижу, открылось окно свойств фонта. Выбираю покрупнее 
размер и позатейливее. В результате, пустив программу, я вижу 
нечто более приятное моему похотливому взору, см. рис 3, вы-
ше. Еще по древнему PaintBrush помнил ящик со цветными 
квадратиками, я не задумываясь, щелкнул по желтенькому, по-
лучил желтый фон. Если, выделить другой объект, то щелкнув 
после, по ящику с краской, окрашу и его. Как это просто, ну 
кайф. Желтый цвет любят психи, мне и как раз..
Ой, вспомнил! Давеча не предохранился, получил на орехи, 
надо записать на хард, чтоб комп не стал отрицать нашу 
обоюдно - согласную связь. И, тут Бейсик предлагает, знакомый 
значок флоппика или ”Save”, там вверху. Но, он не оригинален, 
всегда предлагает форму сохранить как Form.frm , а после, 
проект как Project.vbp. Скучно братцы, но и Авророй 
увековечиваться не удобно, моя мания величия так далеко не 
простирается.. Что мудрю, хотел часики, пусть и имя проекту и 
форме будет “My_clock”, а чтоб соответствующие расширения 
файлам присвоить, уже не я думаю. Нехай, лошадь думает, у нее 
голова большая. Но, вообще-то, зачем мне 2 файла, когда надо 
1? А то, что проект содержит все, что может понадобиться, в 
нем может быть не одна, а куча форм и еще много чего, пока не 
понял.. Проект всегда один, а формы из него, могут быть и в 
других проектах, тут осторожно! Изменишь форму, тогда другие 
проекты, использующие ту же форму могут забарахлить. Так 
что, лучше сразу давать новой или добавленной в проект форме, 
новое имя. Плевое дело, это, добавка. Ищем кнопку ”Add 
Form..” или же в меню  “Project”. Знай наших!
В общем, проект это книга, а формы и другие объекты, что лис-
точки в ней. А, у писателей, плагиат, обычное дело, делаю выво-
ды, методом дедукции, рекомендую.
	На сегодня я кончу излияния. А то, к слову, почему это, кноп-
ки есть, а не нужны? Надо придумать, зря что-ли рисовал? 
Хорошо думается во сне, завтра продолжу со свежими идеями.
      Кнопки будут делать запись, на хард, время окончания работы 
или показывать прошлую запись, в зависимости от выбора, какую 
нажал. Ну, раз уж работаю с ними пусть не будут безымянными. 
Первую назову cmdSave и вторую cmdOpen, первые три буквы 
это не ругань, а аббревиатура, что это объект - кнопка, потом 
легче искать в коде. Но, надпись-то, на кнопке осталась прежней! 
Стало быть, это отдельное свойство от имени. У текст—блока, 
это Техт, а в “Properties” кнопки, этого поля вовсе нету! Глазам не 
верю, как так? Гм-гм, а  в “Properties”, случаем, нет ли поля с  сло-
вами этими Command1 или Command2 ? Ура, есть. В поле 
Caption. Я гордо ввожу там “Save” и  “Open”, уже при вводе, на 
кнопках синхронно меняется текст, красиво! Осененный 
догадкой, проверяю наличие этого поля и у формы. Точно, есть. С 
удоволь-ствием меняю заголовок на ”Сlock”. Это что надо! 
Немного уто-мившись от великих мыслей и трудов, лениво 
щелкаю по кноп-кам, открывая окно редактора кодов, он иногда и 
сам норовит, появиться без спросу, по мелочи. Там, я вижу 
предлагаемые по умолчанию главные события кнопок, а именно - 
их нажатия. Подвоха вроде нет, Взаправду нужные события. Но, 
какой код вводить? Записываю информацию из текстового блока? 
Стало быть, указываю его имя и используемое свойство, чтоб 
программа знала, с чем ей работать и укажу ей вид работы.

Private Sub CmdSave_Click()
     Open “clock.txt” For Output As #1
Print#1, Displey.Text
	Close#1
End Sub
Private Sub CmdOpen_Click()
    Open “clock.txt” For Input As #1
Line Input#1,vremja
Displey.Text = vremja
	Close#1
End Sub
	Библию читали? “Что тебе в имени моем?”.
Ну вот. Я что сделал?
Еще не существующему файлу дал имя и дал этим, ему жизнь, 
чем не Б-г? Мелочь, а приятно. Файл имеет имя и номер (1), 
первое для меня, второе для программы. Open - "открыть" это 
начало работы с файлом. Print# - это печать, интересный опе-
ратор Бейсика, универсальный. Ему пофигу, что печатать и 
куда. Он, собственно, переносит данные, какие скажешь и куда 
укажешь. Зависит от кода вокруг него и мелких фокусов с син-
таксисом. Подробности в справке. Открою секрет, моей ”гени-
альности”, если видите непонятное или новое слово, то выделив 
его или текстовый курсор в него поставьте и жмите F1, и если 
оно не плод вашего воспаленного воображения, то увидите 
подробную справку по нему и иногда, даже с примерами его 
использования.
Output - это универсальная директива, годится как для записи, 
так и открытия файла. Input - только открывает. а Close - 
закрывает файл, будучи открыт для любой работы. Обязателен. 
Иначе, от “мусора” брошенных и забытых файлов, у Windows 
такой понос начнется, что хоть святых выноси, а комп начисто 
зависнет от тотального склероза памяти. Нет спасения, кроме 
смерти и новой инкарнации (перезапуск системы обеспечен). А 
номер #1, чтоб путаницы не было, программы могут 
одновременно с сотнями файлов работать, не дай Б-г, кучу - 
малу устроить! Представьте только себе младенцев, кто полу-
рыба, полу-лошадь? Наверное, на заре мира, и Б-г был 
новичком, на своем вселенском компьютере частенько забывал 
вовремя открывать -закрывать свои проекты, еще и аврал за 7 
дней, можно понять и простить..
	Что-то не удобно, не успеваю увидеть, как таймер стирает, 
обновляет информацию. Досадно, придется нарисовать еще 2 
кнопки, останов и запуск таймера. Но, за такое простое дело, как 
часы, заваливать кнопками, программу, стыдно. Не по чину 
берем..  Сэкономлю на очередной чашке кофе и нарисую 1-у 
кнопку. Дарую ей имя - cmdAnker, храповик, то есть, а надпись 
на ней, с “Com-mand3”, сменю на “Stop”. Теперь в окне 
редактора кода в левом списке ищу и ловлю объект cmdAnker, в 
коде появляется приглашение ввести код в ее событие - Click. А 
теперь, что? Один объект должен действовать как 2 объекта! 
Выдавать 2-а противоречивых действия! Горячечный бред и 
только! Однако, если поставить сторожа, чтоб следил за нажа-
тием кнопки, раз нажал - стоп таймер, опять нажал - беги, тай-
мер, будь ласков..
   В автогонках, флагами отмахиваются от гонщиков, и мы 
будем! Не бойтесь, иска в суд не получим. Не плагиат. Итак, 
создаю некий массив данных об состоянии кнопки. Нарекаю его 
“Flag”.
Dim, это кратко - массив, по-заокеански. Если, его значение не 
указать, то по умолчанию, он равен 0. Уговоримся, что если (IF) 
он равен 1, то (Then) таймеру - стоп иашина, если иначе (ElseIf) 
пусть трясет погремушками, дитя. Вот и пишем это:
 
Dim Flag As Byte

Private Sub cmdAnker_Click()
    If Flag = 1 Then
cmdAnker.Caption = "Stop"
Timer1.Enabled =- False
Flag = 0
    ElseIf Flag = 0 Then
cmdAnker.Caption = "Start"
Timer1.Enabled =- True
     Flag = 1
End If
  	  End Sub
Вот и все! As Byte, это пояснение какой тип данных в массиве, 
ну, что массив, это громко сказано. Хранит-то, единственное 
число. Зачтем просто переменной. Переменная Flag может 
хранить числа от  0 до 256. И то много, нам-то от 0 до 1 надо, 
что делать, нет кошелька меньше. Мое чудо готово, теперь 
можно и на покой... Еще раз полюбовавшись на работающую 
программу, я хотел ее закрыть, но промахнувшись мышкой, 
распахнул окно програм-мы. Черт, как не эстетично стало и не 
удобно.. Надо бы заморозить контуры формы, чтоб не шалили с 
размерами и кнопочку максимизации отключить, а то лезут тут 
некоторые.. Руки, что крюки, мажут мышкой, нет, в Моссаде 
мне не служить.. Очевидно, края формы это Border, в панели 
свойств у формы должно быть что-то эдакое.. Точно, есть поле 
Border Style. Там в выпадающем списке выбрал 1. Прекрасно! 
Мышкой и не зацепишься, однако, по прежнему, чертова 
кнопочка максимизации мешает! Сунулся обратно в “Properties” 
формы и стал методично просматривать все поля подряд, авось 
озарит догадка. Что же, шестое чувство меня не подвело и на 
сей раз. Есть поле, MaxButton, оно в True, перещелкнул в False. 
MiniButton, аналогично, в True. Вот и порядок! Теперь-то 
программа имеет законченный вид... Ой, похоже нет.. Ну, что же 
это! Вечность отлаживать программу, да за вредность, моло-ко 
давать должны! Вот программа работает и без ошибок, да? Но, 
куда годится, что при работающем таймере, можно жать на 
кнопку Open? Что увижу потом? А, если еще не записал время 
на диск? Вовсе рухнет программа! Делать нечего, придется 
добавить еще код в события кнопок... Но, перво - наперво, в 
панели свойств для кнопки Open, свойство Enabled установить в 
False, чтоб при запуске, не была доступна. От греха подальше! 
Теперь, приварив таким образом, чеку гранаты к ее корпусу, не 
оторвать. Начнем играть в теннис, гранату - команду туда, ко-
манду сюда.. Для кнопки Open добавим в код строчку On Error 
Resume Next, пусть будет первой строчкой в коде ее события. 
Эта строка понуждает игнорировать ошибку, просто событие 
кнопки не будет выполняться и программа не рухнет. А вот, в 
событие кнопки Save, добавим  строчку: cmdOpen.Enabled  = 
True. Наша “cmdOpen” станет доступной. А? в событие кнопки 
по управлению таймером, вставим 2 строчки, по одной, в 
каждое условие состояния флага.
cmdOpen.Enabled=True и cmdOpen.Enabled= False.
Наша программа закончена, хоть на продажу. 
	Вот весь ее код, окончательный и обжалованию не 
подлежит!:
Dim Flag As Byte
	Private Sub cmdAnker_Click()
    If Flag = 1 Then
	cmdAnker.Caption = "Stop"
Timer1.Enabled =- False
cmdOpen.Enabled=True 
     Flag = 0
    ElseIf  Flag = 0 Then
	cmdAnker.Caption = "Start"
Timer1.Enabled =- True
cmdOpen.Enabled= False
     Flag = 1
End IF
  	  End Sub

Private Sub CmdSave_Click()
	Open “clock.txt” For Output As #1
Print#1, Displey.Text
	Close#1
End Sub

Private Sub CmdOpen_Click()
 On Error Resume Next
	Open “clock.txt” For Input As #1
Line Input#1,vremja
Displey.Text = vremja
	Close#1
End Sub

Раз планирую, предложить миру новый и неповторимый товар, 
его надо скомпилировать и послать, дело за малым - заказами... 
Кроме шуток, в меню Бейсика, в File, есть Make tо... Храбро 
жмите ее и получайте новорожденную. Можете создать, в 
обычном порядке, ярлык к программе и поместив ее  на рабочий 
стол, всегда иметь часы под рукой.
Но, она мне уже надоела, глаза бы не глядели. Поищу, что ни-
будь поновее из идей, но это уже песня из другой оперы.
На заслуженном отдыхе, побалуйтесь игрой ”найди отличие”. 
Взгляните на рис.2 и рис.3. Найдите различия. Откуда, они 
взялись? Не из моего извращенного ума. Нет, просто рис.2 снят 
при проектировании программы, а рис.3 при ее запуске. Таймер 
не имеет ”лица”, невидим при работе, виден только при раз-
работке, чтоб мы знали, что компонент, позволяющий работать 
со временем, присутствует в проекте. То же, касается и точек, 
это для удобного, автоматического выравнивания объектов на 
форме. В творческом порыве, можно это отключить, тогда все 
будет выстраиваться, как попало, пардон, согласно возвы-
шенному полету мысли, недоступной такому простому парню, 
как V.Basic! Успокить его можно через его меню. ”Tools”? 
”Options”? ”General”, а там, снять флажок: ”? Show Grid”. 
Спи спокойно, боевой товарищ....
		P.S 		Я, кстати, в магазин бежать передумал...
 
4
Часть1, знакомство с Бейсиком
13

4

Гарцман Иосиф.                Визуал Бейсик изначальный
Часть1,знакомство с Бейсиком и со мной

 

Оценка: 5.00*3  Ваша оценка:

Связаться с программистом сайта.

Новые книги авторов СИ, вышедшие из печати:
О.Болдырева "Крадуш. Чужие души" М.Николаев "Вторжение на Землю"

Как попасть в этoт список
Сайт - "Художники" .. || .. Доска об'явлений "Книги"