Конспекты школьника
Вид материала | Конспект |
- Конспекты уроков, 617.19kb.
- Конспекты по философии, 410.53kb.
- Конспекты лекций осеннего семестра 2007/08 учебного года Конспекты практических занятий, 22.06kb.
- Лекции для родителей первоклассников. Тема: «Позиция школьника и ее влияние на учебную, 191.43kb.
- Цифровые информационные ресурсы по географии мультимедийные диски, 16.67kb.
- Родительское собрание в 1 классе. Режим дня в жизни школьника, 78.66kb.
- Режим дня младшего школьника, 96.3kb.
- Моу сош №18 Использование литературных произведений на уроках биологии, 120.94kb.
- Критерии воспитанности личности школьника, 29.72kb.
- Режим дня младшего школьника, 79.47kb.
^ Private Sub cmd1_Click()
If Len(txtFileName.Text) Then
End If
End Sub
Дальше в зависимости от того какой переключатель выбран откроем файл в соответствующем режиме.
Private Sub cmd1_Click()
If Len(txtFileName.Text) Then
^ If Option1.Value = True Then Open txtFileName.Text For Append As #1
If Option2.Value = True Then Open txtFileName.Text For Output As #1
Close #1
End If
End Sub
Следующий шаг - запись в файл содержимого текстового поля.
Private Sub cmd1_Click()
If Len(txtFileName.Text) Then
If Option1.Value = True Then Open txtFileName.Text For Append As #1
If Option2.Value = True Then Open txtFileName.Text For Output As #1
Print #1, txtInput.Text
Close #1
End If
End Sub
Очистим поле ввода, если установлен соответствующий флаг. Свойство Value объекта Флажок(Check) может принимать одно из трех значений:
- 0 - не отмечен;
- 1 - отмечен;
- 2 - отмеченный, но не доступный (устанавливается программно).
Private Sub cmd1_Click()
If Len(txtFileName.Text) Then
If Option1.Value = True Then Open txtFileName.Text For Append As #1
If Option2.Value = True Then Open txtFileName.Text For Output As #1
Print #1, txtInput.Text
Close #1
If Check1.Value = 1 Then txtInput.Text = ""
End If
End Sub
Приложение почти готово. Но имеется один недостаток: если поле "Имя файла" пусто, запись в файл не производится. А пользователь об этом не знает! Необходимо ему это сообщить.
Для вывода различных сообщений имеется окно MessageBox. Почти все приложения Windows используют MessageBox, так как этот компонент входит в состав Windows, a Visual Basic только предоставляет возможность его вызова.
Вид окна MessageBox может быть различным, но в его состав всегда входят:
- текст сообщения;
- заголовок;
- пиктограмма;
- набор кнопок.
Для вывода этого окна используется функция MsgBox, которая возвращает информацию о том какую кнопку нажал пользователь (полезно при анализе ответа пользователя).
Вызывается функция так:
Возвращаемое_значение = MsgBox (Сообщение [, Кнопки и значки] [, Заголовок] [, Файла помощи, Context])
Private Sub cmd1_Click()
If Len(txtFileName.Text) Then
If Option1.Value = True Then Open txtFileName.Text For Append As #1
If Option2.Value = True Then Open txtFileName.Text For Output As #1
Print #1, txtInput.Text
Close #1
If Check1.Value = 1 Then txtInput.Text = ""
Else
MsgBox "Необходимо ввести имя файла", vbExclamation, "Внимание!"
End If
End Sub
Теперь, если пользователь забыл указать имя файла он получит сообщение об этом.
Готово. Запустите проект и "проиграйтесь" с ним. Затем откройте файл, в который сохранялась информация (если вы не указали полный путь в имени, то файл будет находится в папке с проектом) и убедитесь в правильности работы программы.
Получим:
!!! Не забудьте сохранить проект. Он нам потребуется на следующем занятии. !!!
Учимся программировать!
Конспекты школьника.
^ Использование списков
Давайте продолжим работу с проектом, который мы создали на предыдущем занятии.
Вспомним: имя файла, в который записывается информация вводилось в текстовом поле txtFileName. Для того чтобы облегчить жизнь пользователю, по-умолчанию, свойство text имело какое-то значение (например, "Мой файл.txt").
На этом занятии модернизируем проект таким образом, чтобы "ленивому" пользователю предоставить больший выбор. Для этого заменим текстовое поле - полем со списком.
Поле со списком (ComboBox) — это по сути комбинированный список, который представляет собой комбинацию двух элементов управления — самого списка со значениями и поля ввода текста (текстового поля).
Список (ListBox) — позволяет пользователю выбирать из списка один или несколько элементов. В любое время в список можно добавлять новые элементы или удалять существующие. Если не все элементы могут одновременно отобразиться в поле списка, то в нем автоматически отображаются полосы прокрутки.
Поля со списком используются в том случае, если нельзя заранее определить значения, которые
следует включить в список, или список содержит слишком много элементов. В таком списке нужное значение можно не только выбирать, но и вводить непосредственно в поле ввода. Новое значение после ввода автоматически помещается в список.
Для поля со списком важную роль играют события как поля ввода, так и списка. Основные из них - Click, используемое для выбора элемента списка, и - Change — для изменения записи в поле ввода текста.
Поле со списком имеет почти все свойства текстового поля (TextBox) и списка (ListBox) (исключением является свойство MultiLine). Однако особо следует выделить свойство Style, определяющее внешний вид и функционирование поля со списком.
Откройте проект. Замените текстовое поле на поле со списком.
Задайте имя объекту - cboFileName, и задайте элементы списка (свойство List).
Свойство списка Text — самая простая возможность получить текст выбранного элемента списка. В любой момент времени значение этого свойства содержит текст выбранного элемента списка или пустую строку, если ни один элемент не выбран. Для определения текста выбранного элемента существуют и другие возможности. Однако следует помнить, что и в памяти все элементы списка сохраняются в виде списка. При этом первый элемент списка имеет индекс 0.
Присвоим этому свойству значение "Мой файл.txt" - это будет значение по-умочанию.
Запустим проект на выполнение. Теперь пользователь может выбрать имя для файла из списка или ввести самостоятельно. Но если щелкнуть кнопку СОХРАНИТЬ, то появится сообщение об ошибке. А все оттого, что мы не исправили код записи в файл. Имя файла берется из текстового поля, но ведь мы его заменили на список.
Private Sub cmd1_Click()
If Len(txtFileName.Text) Then
If Option1.Value = True Then Open txtFileName.Text For Append As #1
If Option2.Value = True Then Open txtFileName.Text For Output As #1
Print #1, txtInput.Text
Close #1
If Check1.Value = 1 Then txtInput.Text = ""
Else
MsgBox "Необходимо ввести имя файла", vbExclamation, "Внимание!"
End If
End Sub
Исправим этот код.
Private Sub cmd1_Click()
If Len(cboFileName.Text) Then
If Option1.Value = True Then Open cboFileName.Text For Append As #1
If Option2.Value = True Then Open cboFileName.Text For Output As #1
Print #1, txtInput.Text
Close #1
If Check1.Value = 1 Then txtInput.Text = ""
Else
MsgBox "Необходимо ввести имя файла", vbExclamation, "Внимание!"
End If
End Sub
Теперь программа работает, но продолжим улучшение. Сделаем так, чтобы после добавление в файл, имя которого пользователь ввел сам, имя этого файла добавлялось в список. Для добавления в список служит метод AddItem.
Private Sub cmd1_Click()
If Len(cboFileName.Text) Then
cboFileName.AddItem (cboFileName.Text)
If Option1.Value = True Then Open cboFileName.Text For Append As #1
If Option2.Value = True Then Open cboFileName.Text For Output As #1
Print #1, txtInput.Text
Close #1
If Check1.Value = 1 Then txtInput.Text = ""
Else
MsgBox "Необходимо ввести имя файла", vbExclamation, "Внимание!"
End If
End Sub
Теперь при щелчке по кнопке ЗАПИСЬ в список добавляется новое значение. Но теперь появилась одна неприятная особенность - при записи в один и тот же файл, его имя несколько раз добавляется в список. Исправим это. Прежде чем добавить значение в список, переберем его и проверим нет ли уже такого значения. Переменную already будем использовать как флаг, который будет указывать нашли (1) или не нашли (0) такое значение в списке.
Private Sub cmd1_Click()
If Len(cboFileName.Text) Then
For i = 0 To cboFileName.ListCount
If cboFileName.List(i) = cboFileName.Text Then already = 1
Next i
If already = 0 Then cboFileName.AddItem (cboFileName.Text)
If Option1.Value = True Then Open cboFileName.Text For Append As #1
If Option2.Value = True Then Open cboFileName.Text For Output As #1
Print #1, txtInput.Text
Close #1
If Check1.Value = 1 Then txtInput.Text = ""
Else
MsgBox "Необходимо ввести имя файла", vbExclamation, "Внимание!"
End If
End Sub
Готово! Запустите проект и проверьте его работу.
Учимся программировать!
Конспекты школьника.
^ Простой текстовый редактор
На этом занятии мы создадим простой текстовый редактор (почти такой как стандартный Блокнот).
Создадим новый (стандартный) проект. Ввод и редактирование текста будет производится в текстовом поле (TextBox), поэтому поместим этот компонент на форму и установим его свойства.
Объект | Свойство | Значение |
Форма | имя | frmNotepad |
Caption | Блокнот | |
Текстовое поле - TextBox | имя | txtNotepad |
text | "" (пустая строка) | |
MiltiLine | True |
Если сейчас запустить проект, то мы будем иметь возможность вводить текст, перемещаться по тексту, удалять текст. Добавим возможность сохранять и открывать текстовые файлы, копировать, вырезать, вставлять часть текста. Эти действия должны выполнятся по щелчку соответствующего пункта меню. Следовательно, добавим в наше приложение меню.
Создание меню в Visual Basic осуществляется с помощью специального инструмента создания меню — редактора меню. Окно редактора меню открывается одним из трех способов: путем нажатия комбинации клавиш [Ctrl+E], нажатием соответствующей кнопки на панели инструментов или после выбора команды меню Инстументы→Редактор меню... (Tools→Menu Editor...).
Проще всего создавать меню при помощи встроенного редактора меню Visual Basic. Для этого сначала в поле Название (Caption) окна редактора вводится текст, который будет виден в строке меню. Для быстрого открытия меню или вызова команды используются горячие клавиши. Для определения горячих клавиш достаточно в поле Название (Caption) перед соответствующей буквой поставить амперсанд
(&). Например, для быстрого открытия меню File в поле Caption диалогового окна редактора меню необходимо ввести "&File".
Второй шаг — назначение имени элементу меню (так же, как любому элементу управления). Учтите, что Visual Basic не задает имя по умолчанию, как для других элементов управления. При назначении имен элементам меню также нужно соблюдать правила. Имя должно состоять из следующих частей: прежде всего, префикса, указывающего, что это меню, т.е. mnu; затем следует: для пунктов главного
меню — имя пункта, для подменю — сокращенные имена родительских пунктов, а затем собственное имя меню.
Последняя задача при создании меню — определение уровней. Для этого воспользуйтесь кнопками со стрелками. Кнопка со стрелкой вправо смещает элемент меню на уровень ниже, а со стрелкой влево — на уровень выше. Кнопки с вертикальными стрелками изменяют позицию отдельных элементов меню, т.е. перемещают их в списке вверх или вниз.
Поле Быстрая клавиша (Shortcut) позволяет определить комбинации клавиш для быстрого доступа к отдельным элементам меню. Среди наиболее часто используемых приложениями Windows комбинаций клавиш можно отметить следующие: [Ctrl+X] (Вырезать - Cut), [Ctrl+C] (Копировать - Copy), [Ctrl+V] (Вставить - Paste).
В последней строке верхней половины окна редактора меню есть еще три свойства элементов меню. Свойство Видимо (visible) позволяет отображать или скрывать отдельные элементы меню. Свойство Включено (Enabled) функционирует так же, как в других элементах управления: если его значение False, то текст надписи подсвечивается серым цветом и пользователь не может выполнить эту команду меню. Свойство Отмечено (Checked) встречается в данной книге впервые. Оно позволяет пометить выбранный элемент меню галочкой.
Свойства элементов меню можно изменять и во время выполнения. При этом синтаксис такой же, как и для других элементов управления.
Для создания процедуры выполнения команды меню следует во время проектирования выбрать соответствующий пункт в форме. При этом создастся процедура обработки события щелчок (click). Другие элементы меню можно найти и в списке объектов окна кода.
Итак создадим меню.
Структура меню представлена на рисунке:
Имя | Название (Caption) | Быстрая клавиша |
mnuFile | &Файл | |
mnuFNew | Созд&ать | Ctrl+N |
mnuFOpen | &Открыть... | Ctrl+O |
mnuFSave | &Сохранить | Ctrl+S |
mnuFSaveAs | Сохранить &как... | |
mnuEdit | &Правка | |
mnuECut | &Вырезать | Ctrl+X |
mnuECopy | &Копировать | Ctrl+C |
mnuEPaste | Вст&авить | Ctrl+V |
mnuEDel | &Удалить | |
Нажимаем [Ok] и получаем готовое меню (осталось, только, добавить обработку кликов по его пунктам).
Напишем обработчики событий щелчка по пунктам меню.
Для создания процедуры выполнения команды меню следует во время проектирования выбрать соответствующий пункт в форме. При этом создастся процедура обработки события click. Другие элементы меню можно найти и в списке объектов окна кода.
Одно из основных достоинств Windows — средства поддержки работы в многозадачном режиме, позволяющие одновременно выполнять несколько приложений и других процессов. Для организации передачи данных и связи между программами в Windows созданы инструменты и структуры, обеспечивающие простое решение указанных задач.
Одна из таких возможностей — обмен данными через буфер обмена (Clipboard). Команды Cut (Вырезать), Copy (Копировать) и Insert (Вставить), которые имеются в меню Edit (Правка) всех программ, работающих в среде Windows, используют буфер обмена для временного хранения данных.
Буфер обмена является общим хранилищем данных для всех приложений Windows. Поэтому данными, помещенными в буфер обмена, можно воспользоваться в любом приложении Windows. Однако при этом следует учитывать формат данных. Содержимое буфера обмена можно просмотреть с помощью программы CLIPBRD.EXE, входящей в состав Windows.
Доступ к буферу обмена Windows из приложения VisualBasic обеспечивает объект Clipboard.
Чтобы каждый элемент управления получал данные в понятном для него формате, например, объект TextBox — символьные строки, a PictureBox — графические изображения, следует использовать соответствующие методы объекта Clipboard. Методы SetText и GetText соответствующих объектов предназначены для работы с текстом, а методы GetData и SetData — для работы с графикой. Используя различные методы, разработчик при передаче информации может обеспечить совместимость форматов данных для выбранного элемента управления.
Для записи и считывания текстовых данных в объект clipboard и из него предназначены методы SetText и GetText.
Метод SetText записывает текстовую строку в буфер обмена и заменяет текущее содержимое буфера.
Скопировать содержимое выделенного текстового поля txtNotepad в буфер обмена можно следующим оператором:
Clipboard.SetText txtNotepad.Text
Метод GetText возвращает содержимое буфера обмена в виде текстовой строки.
Чтобы заменить выделенный текст в текстовом поле содержимым буфера обмена, следует воспользоваться методом GetText:
txtNotepad.SelText = Clipboard.GetText()
Если буфер обмена содержит данные, то после вызова метода SetData или SetText данные указанного формата переписываются в объект, но в буфере сохраняются данные в других форматах. Чтобы в буфере не находились одновременно данные из нескольких приложений, перед экспортом данных в Clipboard следует удалить все его содержимое. Для этого применяется метод Clear:
Clipboard.Clear
Private Sub mnuECopy_Click()
Clipboard.Clear
Clipboard.SetText txtNotepad.SelText
End Sub
Private Sub mnuECut_Click()
Clipboard.Clear
Clipboard.SetText txtNotepad.SelText
txtNotepad.SelText = ""
End Sub
Private Sub mnuEDel_Click()
txtNotepad.SelText = ""
End Sub
Private Sub mnuEPaste_Click()
txtNotepad.SelText = Clipboard.GetText()
End Sub
Для реализации операций с файлами потребуется дополнительный элемент управления - диалоговое окно (CommonDialоg). Это дополнительный элемент управления. Для того чтобы он появился на панели компонентов необходимо выполнить следующие действия:
Выбрать в VisualBasic Проект → Компоненты (или [Cntr+T] )и установить флажок у компонента Microsoft Common Dialog Control 6.0.
Панель компонентов дополнится новым компонентом. Переместите его на форму в любое место (этот компонент не визуальный и виден не будет). Присвойте новому объекту имя (name): dlgFile. Затем вызовете страницы свойств (щелчок правой кнопкой → Propirties) и установите нужные свойства на соответствующей закладке (в зависимости от того какой диалог вы вызываете).
Теперь напишем код обработки щелчков по пунктам меню "Файл".
Private Sub mnuFNew_Click()
txtNotepad.Text = ""
dIgFile.FileName = ""
End Sub
Private Sub mnuFOpen_Click()
dIgFile.ShowOpen
If dIgFile.FileName <> "" Then
Open dIgFile.FileName For Input As #1
Do While Not EOF(1)
Input #1, s$
txtNotepad.Text = txtNotepad.Text + s$ + vbCrLf 'vbCrLf - символ перевода строки (chr (13) & Chr (10))
Loop
Close #1
End If
End Sub
Private Sub mnuFSave_Click()
If dIgFile.FileName <> "" Then
Open dIgFile.FileName For Output As #1
Print #1, txtNotepad.Text
Close #1
Else
mnuFSaveAs_Click
End If
End Sub
Private Sub mnuFSaveAs_Click()
dIgFile.ShowSave
If dIgFile.FileName <> "" Then
Open dIgFile.FileName For Output As #1
Print #1, txtNotepad.Text
Close #1
End If
End Sub
Приложение работает. Теперь мы имеем возможность производить простые операции редактирования текста (копировать, вырезать, вставлять) и операции открытия и сохранения файлов.
Продолжим.
Для удобства работы дополним текстовое поле полосой прокрутки. Добавим вертикальную прокрутку, для этого свойству ScrollBars установим соответствующее значение. Теперь, если весь текст не вмещается в текстовое поле, появится полоса прокрутки.
Обратимся к меню. В меню должны быть доступны только те действия, которые имеют смысл в данный момент. Другими словами, если нет выделенного текста или изображения, команды копирования и вырезания должны быть недоступны.
Обычно если какой-либо элемент управления не может в данный момент выполнить требуемых от него действий, этот элемент управления должен быть недоступен. Поэтому нужно проверять, какая команда меню может быть выполнена в данный момент: вырезания и копирования или вставки. В зависимости от этого соответствующие команды в меню должны быть доступны или недоступны.
Лучше всего такую проверку выполнять путем обработки события Click команды меню Edit. Это событие наступает, как только пользователь откроет соответствующее меню. В процедуре обработки события можно поместить подпрограмму, определяющую состояние команды меню. Например, можно проверить, позволяет ли текущее состояние программы выполнить требуемое действие.
Пункт "Вставка" должен быть активен только в том случае, если в буфере обмена есть текст.