Главная Гостевая Форум INFA

Программируем на Visual Basic'e:

Часть 1/Часть 2/Часть 3/Часть 4/Часть 5/Часть 6/Часть 7/Часть 8/Часть 9/ Часть 10 /Часть 11/Часть 12/Часть 13 /Часть 14/Часть 15

ШАГ 61:

Формы

Не помню, говорил я тебе как можно использовать не одну, а несколько форм. Ну в любом случае скажу. Как всегда сделаем новый проект(Standart EXE), добавим еще одну форму(Form2), для этого нажми Project/Add Form и в открывшимся окне кликни по Form. У тебя появится еще одна форма. Но при включении проекта ее у тебя видно не будет, а это потому что она скрыта, а чтоб ее показать воспользуемся свойством Show. Вот код:
Private Sub Form_Load() 'При загрузке формы:
Form2.Show 'Показываем форму2
End Sub
Вот и все! А чтоб можно было из одной формы менять свойство другой - тебе надо прочитать следующий шаг.

ШАГ 62:

Связь между формами

Ну что - то мне это в бошку слишком поздно пришло, это надо было писать в 4 части, а я в 6. Очень часто надо из 1 формы поменять какое - нибудь свойство у второй. И как это сделать читай в этом шаге. Сейчас мы сделаем прогу, у которой из первой формы, мы будем менять свойство второй. Как всегда сделаем новый проект(Standart EXE), создай новую форму(Form2), на нее кинь кнопку, и на первую форму(Form1), тоже кинь кнопку. Код:
Private Sub Form_Load() 'При загрузке формы:
Form2.Show 'Показываем Форму 2(Form2)
End Sub

Private Sub Command1_Click() 'При нажатии на кнопку:
Form2.Command1.Caption = "" 'Меняем свойство Caption у кнопки второй формы
End Sub

И все!

ШАГ 63:

Делаем тень для Label`a

Хей чуваки - кто хочет стать Хакером? Я уверен на 100% что все - и я уже начал готовить (пока только думать) темы, но вскоре появится и учебник. Его ты сможешь скачать с моего сайта(vbstreets.narod.ru), и скорее всего в следующих обновления моего учебника (по VB).Ну что - то я заболтался - ПЕРЕЙДЕМ К ДЕЛУ. Войди в VB(Standart EXE) - на форму кинь 2 метки, и 1 текстовое поле. Выдели 2 метки и поставь у них свойство BackStyle = 0 - Transparent, и свойство AutoSize = True. Первую метку сделай серой(ForeColor), но так чтоб она не сливалась с формой. Код:

Private Sub Form_Load() 'При загрузке формы:
Label1.Left = Label2.Left + 70 'Метка 1(тень) была немного правее метки 2
Label1.Top = Label2.Top 'Делаем их на одной высоте
Label1.ZOrder (1) 'Делаем метку 1(тень) под меткой 2
End Sub

Private Sub Text1_Change() 'При изменении текста:
'Текст у всех меток тоже меняется
Label2.Caption = Text1.Text
Label1.Caption = Text1.Text
End Sub

ШАГ 64:

Правильно работаем с Текстовым Полем

Не зная о чем написать, решил я в начале сделать какую - нибудь прогу, но потом передумал. И вот сижу я за компом, играю в GTA в Твери, и вдруг меня осенило, я даже чуть с кресла не упал, что ведь про ListBox, СкрулБар... были темы, а про текстовое поле еще нет. И в этом шаге я тебе о них и расскажу. В начале о свойствах: Здесь я не буду перечислять все свойства, т.к. половину ты точно знаешь, а скажу только самые не известные (хотя о них почти в каждой части по децелу написано):
1. Multuline - Это самое известное свойство, оно нужно для переключения в однострочный и многострочный режим (мож это как - нибудь по другому называется, но т.к. я где - то услышал умное слово, то и решил им воспользоваться). Если стоит False - то однострочный режим, True - многострочный.
2. MaxLenght - это ограничитель вводимых символов. Например, если ты там напишешь 2 - то сможешь ввести только 2 символа. Вот так.
3. ScrollBars - это свойство нужно для установки скруллбаров (полос прокрутки).

А теперь события. При двойном клике по текстовому полю, создается процедура Text1_Change(). В какой - то части я говорил что это переводится как изменение. Так вот, при каждом изменении содержимого текстового поля, будет выполняться какое - то действия. И чтоб ты убедился что я не вру, сделаем прогу. На форму кинь текстовое поле и метку. При вводе текста в текстовое поле, надпись метки будет меняться. Код:
Private Sub Text1_Change()
Label1.Caption = Text1.Text
End Sub
Все!

ШАГ 65:

Свойства

И снова свойства скажешь ты, и будешь прав. Но на этот раз будут еще и методы (это тоже самое что и свойства, только свойства описывают объект (цвет, размер, фон…), а методы выполняют какое - то действие над объектом (и в списке напротив них зеленый значок, а у свойств - серый)). Начнем. Первое свойство будет SetFocus, оно нужно для установки курсора в заданное текстовое поле. Сделаем прогу! На форму кинь 2 текстовых поля, и кнопку. Код:
Private Sub Command1_Click() 'При нажатии на кнопку:
Text1.SetFocus 'На текстовое поле 1 устанавливаем курсор
End Sub
Включай и смотри, при нажатии на кнопку курсор установится в текстовое поле 1.
Теперь сделаем прогу, у которой текст будет выделяться. Ты не думай, что я тебе какую - то фигню в париваю - НЕТ! НЕТ! и еще раз НЕТ!. Я тебя готовлю к созданию проги, которая будет искать текст вписанный в текстовое поле 1, из текстового поля 2. Ну как я и говорил будем делать прогу (выделение текста). На форму кинь 1 кнопку, и 1 текстовое поле. Теперь код:
Private Sub Command1_Click() 'При нажатии на кнопку:
Text1.Text = "Visual Basic" 'Текст в текстовом поле будет равен "Visual Basic"
Text1.SetFocus 'Курсор ставим в Text1
Text1.SelStart = 7 'Эта функция задает позицию курсора в тексте (у нас в словах Visual Basic, позиция будет равна 7, т.е. курсор будет перед B)
Text1.SelLength = 5 'Теперь выделяем 5 символов, т.е. Basic, т.к. начинаем выделять с того места, где стоит курсор, а курсор стоит перед B
End Sub
На свойствах мы закончем, и перейдем к функциям.

ШАГ 66:

Функция InStr

Ну здесь я дам тебе функции, верней функцию, тоже для работы с текстом, и тоже она нам пригодится для создания "Поиска". Эта функция нужна для сравнивания 2-х слов.
Как всегда, сделаем прогу. Она будет сверять 2 текстовых поля, и в случае совпадения, выдавать соответствующее сообщение. Код:
Private Sub Command2_Click() 'При нажатии на кнопку:
If InStr(1, Text1.Text, Text2.Text) <> 0 Then 'Сверяется 2 текстовых поля
MsgBox "Совпадение" 'При совпадении юзер узнает об этом
Else
MsgBox "Не Совпадение" 'При не совпадении юзер все равно узнает об этом
End If
End Sub
Хей чел, испугался этого кода? Не бойся! Теперь я тебе объясню по лучше. Как ты наверное догадался (или нет?), что функция InStr сверяет 2 слова (в нашем случае 2 текстовых поля), и в случае положительного результата (Совпадения), она будет равна 1, а в случае отрицательного 0. И вот мы здесь поставили условие, что если 2 текстовых поля совпадают (если они не равны 0(<>0)), то происходит одно действие, а если не совпадают то происходит другое (это делается с помощью Else(я тебе говорил о нем в первой части, но если ты не понял, то вместо него можешь написать if InStr(1, Text1.Text, Text2.Text) = 0)).Все! Делаем прогу!

ШАГ 67:

Делаем ПОИСК

Щас мы сделаем прогу, которая будет искать текст. На форму кинь 2 текстовых поля и кнопку. Вот код:
Dim qw As Long 'Объявляем переменную qw для работы с числами
Private Sub Command1_Click() 'При нажатии на кнопку:
If InStr(qw, Text2.Text, Text1.Text) <> 0 Then 'Сверяется 2 текстовых поля
Text2.SetFocus 'На Text2 ставим курсор
Text2.SelStart = InStr(qw, Text2.Text, Text1.Text) - 1 'Устанавливаем курсор перед совпавшимся словом
Text2.SelLength = Len(Text1.Text) 'С помощью функции Len считаем сколько символов в Текстовом поле 1,и столько же выделяем
qw = InStr(qw, Text2.Text, Text1.Text) + Len(Text1.Text) ' Изменяем переменную на позицию курсора
Else ' Если в тексте больше нет искомого слова, то выводим об этом сообщение.
MsgBox "Здесь таких нет!!!"
End If
End Sub
Private Sub Form_Load()
qw = 1
End Sub

Исходник проги качай отсюда

ШАГ 68:

Отладка

Скорее всего каждая твоя прога содержит кучу ошибок, чаще всего это неправильные действия юзера. Для того чтоб этого избежать в VB, и в других языках есть отладка. Здесь я не буду говорить тебе о всех способах нахождения и устранения ошибок, т.к. сам в этом не силен, но расскажу о самом главном.
1. Игнорирование ошибок.Для игнорирования ошибок служит оператор On Error Resume Next.
Вот маленький пример из моей проги "Кодировщик". Подключите библиотеку Microsoft Common Dialog 6.0, назовите ее CD1 Private Sub Command1_Click() 'При нажатии на кнопку:
CD1.ShowOpen 'Открывается окно открытия файлов
d = FreeFile
Open CD1.filename For Output As d 'Открывается выбранный юзером файл (если юзер не выбрал файл (нажал отмена), то произойдет ошибка)
Close d 'Закрываем файл
End Sub
Не поленись скопируй этот текст в VB, и не забудь подключить библиотеку. А вот пример этой же проги, только уже отлаженной:
Private Sub Command1_Click()
CD1.ShowOpen
d = FreeFile
On Error Resume Next ' Если юзер не выбрал файл, то ошибка игнорируется
Open CD1.filename For Output As d
Close d
End Sub
2. Способ перескока.В этом способе при возникновении ошибки будет перескакивать на заданную позицию. Пример отлаженной проги:
Private Sub Command1_Click()
CD1.ShowOpen
d = FreeFile
On Error GoTo Ошибка 'Если происходит ошибка то происходит перескакивание до Ошибке:
Open CD1.filename For Output As d
Close d
MsgBox "" 'Здесь я специально поставил MsgBox, чтобы ты почувствовал разницу
Ошибка: 'Досюда происходит перескок
End Sub
Напоминаю, что чтобы произошла ошибка, нажми на кнопку, и в окне открытия файлов, нажми на Отмена.
3. Перехват Ошибок. Описание этого способа ты не где ни найдешь кроме моего учебника (т.к. его я сам придумал), но мож найдешь похожее. Если тебя закалибала какая - то ошибка, то ты можешь ее игнорировать, или заменить. Чтобы узнать номер ошибки, и то что в ней написано, есть объект Err. Для начала нам надо узнать номер ошибки. Для этого создай новый проект(Standart EXE), на форму кинь Текстовое поле, и кнопку.
CD1.ShowOpen
d = FreeFile
On Error GoTo Ошибка 'Если происходит ошибка то происходит перескакивание до Ошибке:
Open CD1.filename For Output As d
Close d
MsgBox "" 'Здесь я специально поставил MsgBox, чтобы ты почувствовал разницу
Ошибка: 'Досюда происходит перескок
Text1.Text = Err.Number 'Если в Окне открытия файлов, юзер нажмет на Отмена, то произойдет Ошибка, и ее номер куда - то запишется, и мы с помощью объекта Err узнаем ее номер (в текстовом поле)
End Sub
Зная номер ошибки (а мы уже знаем!), можно ее заменить.
Private Sub Command1_Click()
CD1.ShowOpen
d = FreeFile

On Error GoTo g 'Если происходит ошибка, то мы игнорируем ее
Open CD1.filename For Output As d
Close d
g:
If Err.Number = 75 Then 'Зная номер ошибки мы можем что - нибудь сделать (например обосрать юзера...)
MsgBox "Не нажимай на ОТМЕНУ - ЛАМЕР ПОГАНЫЙ!!!", 16
End If
End Sub

На этом все, если в тебе кипит кровь, и ты хочешь узнать об отладке больше, то в поищи в Яндексе, там статей на эту тему до сраки.

ШАГ 69:

Процедуры и функции

Процедуры и функции - нужны для того, чтобы один и тот же код не писать несколько раз. Например, записав в функции код, его можно вызывать несколько раз. Ну ты скажешь: "Я не лентяй, напишу 2 раза - не здохну" - нет ты не прав, я раньше также думал, до тех пор пока не стал делать большие проги, в них очень часто приходится повторять код (и не 2 раза), и без функций не обойтись. Начнем с функций, т.к. по процедурам я не спец (и это сильно сказано):
Для объявления функций тебе надо записать:

Function Имя функции()
Код
End Function

Ну думаю здесь все понятно, хотя влятри, в любом случае сделаем прогу. На форму кинь 2 кнопки.

Function Bla() 'Объявляем функцию Bla
MsgBox "Фу бля, это моя первая функция" 'Код
End Function 'Завершаем функцию, это можно не писать, т.к. после написания первой строчки, это фенька создается автоматом

Private Sub Command1_Click() 'При нажатии на кнопку:
Bla 'Запускается функция Bla
End Sub

Private Sub Command2_Click() 'При нажатии на кнопку:
Bla 'Запускается функция Bla
End Sub

Ну с процедурами такая же петрушка, т.к. в них я не спец, то, что я сейчас придумаю (на ходу), может быть не точно (скорее всего), и если вы найдете ошибку (или вранье), то мыльте, padre03@mail.ru и я исправлю. При двойном клике по кнопке создается процедура Click, ну вообще я подумал, и решил, что не буду тебе гнать о них, лучше сам о них почитаю.

ШАГ 70:

Модули - с чем их едят?

Модули нужны для объявления глобальных переменных, т.е. переменных которые могут использоваться во всем проекте (во всех формах...), и для объявления API функций. Чтобы создать модуль тебе надо войти в Project/Add Module и нажать Module. Все модуль создан! Отлично чел, ты создал свой первый модуль! Так держать! Но у тебя возникает вопрос: "Что я буду с ним делать?" - а что захочешь, но в начале тебе надо узнать о Public`e & Private`e.
Ну короче префикс Private нужен для объявления переменных и им подомных внутри модуля.
А Public нужен для объявления переменных во всем проекте, т.е. глобальных. Ну как ты наверное понял - все это подготовка к API

Фу блин, наконец дописал. Все! Теперь лофа кончилась! В следующей части тебе придется попотеть, т.к. будут API функции. Это уже не детские игры. Если у тебя есть вопросы по этой части, то оставляй их на форуме, гостевой книге, или пиши в наглую на мыло: padre03@mail.ru
И если ты зайдешь на мой сайт, кликни плиз по банеру Porta(сиреневый), мне за это немного бабла отвалется(2 цента). И если ты захочешь поддержать Отечественного производителя(т.е. Меня), то кликай по банеру раз в месяц. А если ты очень богатый, то не просто кликни, а еще что - нибудь купи.

автор учебника: Падре
Дата создания: 17 Марта 2003 года

Место под Банеры

Официальный сайт учебника - 'Программируем на Visual Basic'